I created the Plugin of my own. Everything seems OK but one thing I want to do in that plugin is redirect to the corresponding plugin settings page when the plugin is activate.

For example:

Is there a way to redirect to the corresponding page on activation, for example with register_activation_hook?

3 Answers 3


Maybe using the wp_redirect() function in the activation hook. In the following example myplugin_settings is a placeholder. Normally this simply is the $hook_suffix you get back from $hook_suffix = add_menu_page( /* etc. */ ); and similar functions.


register_activation_hook(__FILE__, 'cyb_activation');
function cyb_activation()
    // Don't forget to exit() because wp_redirect doesn't exit automatically
    exit( wp_redirect( admin_url( 'options-general.php?page=myplugin_settings' ) ) );


  1. Register activation hook
  2. admin_url()


The redirect inside the activation hook seems to be performed before the plugin is effectively activated, maybe because of the call of exit() before the activation is executed. This code seems to work well using activated_plugin action hook:

function cyb_activation_redirect( $plugin ) {
    if( $plugin == plugin_basename( __FILE__ ) ) {
        exit( wp_redirect( admin_url( 'options-general.php?page=myplugin_settings' ) ) );
add_action( 'activated_plugin', 'cyb_activation_redirect' );

If you use this code outside the main plugin file you will need to replace __FILE__ with path of the main plugin file.


Redirecting the user after your plugin has been activated is not a very good approach. In Wordpress you can activate plugins in bulk. What happen then if you perform a redirect in this situation? You will break the activation of some plugins, maybe not if your plugin is the last being activated, but definitely you are breaking the user experience.

  • 1
    Much saner approach. +1
    – kaiser
    Commented Sep 17, 2013 at 16:00
  • Anyone else getting an issue using this where the plugin fails to activate and you get a "You don't have permission to view this page" error instead? Am I hooking my menu page wrong? It seems like the exit; call is cutting the activation short.
    – Andy Adams
    Commented Jul 23, 2014 at 23:26
  • The permission error is because you have not changed the redirection URL from 'options-general.php?page=myplugin_settings' to something different and valid. Anyway, the exit in the activation hook is executed before the plugin is effectively activated, so it doesn't work. I've edited the answer with a new working code.
    – cybmeta
    Commented Jul 24, 2014 at 9:58
  • the code is resulting in header already sent..any way to fix it?
    – user145078
    Commented Nov 18, 2018 at 10:36
  • Thank you for this but I would use wp_safe_redirect() function. Commented May 12, 2021 at 11:16

You should be able to do it like this:

register_activation_hook(__FILE__, 'my_plugin_activate');
add_action('admin_init', 'my_plugin_redirect');

function my_plugin_activate() {
    add_option('my_plugin_do_activation_redirect', true);
// Solution 1
function my_plugin_redirect() {
    if (get_option('my_plugin_do_activation_redirect', false)) {
         //wp_redirect() does not exit automatically and should almost always be followed by exit.

// OR

//Solution 2 (@kaiser suggestion)
function my_plugin_redirect() {
    if (get_option('my_plugin_do_activation_redirect', false)) {
         exit( wp_redirect("options-general.php?page=rotator") );


Even if it's a inline comment, remember:

wp_redirect() does not exit automatically and should almost always be followed by exit.

Specific example

    wp_redirect( $location, $status );

UPDATE 10/29/2013

It was not mentioned, but please note that my solution offers the ability to check if is the case or not to do a redirect to plugin settings page. Check my_plugin_activate and the if condition in my_plugin_redirect.

Hope it helps!

  • Shouldn't there be an exit() around the wp_redirect()?
    – kaiser
    Commented Sep 17, 2013 at 16:00
  • 2
    @kaiser, answer updated.
    – iEmanuele
    Commented Sep 17, 2013 at 16:18

I have used the below code redirect after plugin activation. You can use this code. It's working nicely.

register_activation_hook(__FILE__, 'nht_plugin_activate');
add_action('admin_init', 'nht_plugin_redirect');

function nht_plugin_activate() {
add_option('nht_plugin_do_activation_redirect', true);

function nht_plugin_redirect() {
if (get_option('nht_plugin_do_activation_redirect', false)) {
  • nht_ is my plugin prefix & "edit.php?post_type=headline&page=news-headline" is redirect page. please replace these. You can see more tutorials on e2softsolution.com
    – csehasib
    Commented Apr 23 at 4:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.