插件激活后重定向

Pra*_*eka 8 wordpress wordpress-plugin

我试过,如何在激活我的插件后将用户重定向到我的插件设置页面

register_activation_hook(__FILE__,'activate_myplugin');
function activate_myplugin()
{
//create and populate DB tables
wp_redirect(plugin_setting_url);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Ric*_*d M 13

你应该可以做这样的事情:

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);
}

function my_plugin_redirect() {
    if (get_option('my_plugin_do_activation_redirect', false)) {
        delete_option('my_plugin_do_activation_redirect');
        wp_redirect(MY_PLUGIN_SETTINGS_URL);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Richard thanx ......正是我想要的.....我喜欢这个社区...... (2认同)

Chi*_*rag 9

仅当仅在不使用批量激活模式的情况下激活该插件时,这将重定向到选项页面.

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);
}

function my_plugin_redirect() {
    if (get_option('my_plugin_do_activation_redirect', false)) {
        delete_option('my_plugin_do_activation_redirect');
        if(!isset($_GET['activate-multi']))
        {
            wp_redirect("options-general.php?page=your-plugin-option-page");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

感谢您的代码 - 它很棒,但只有一个缺点:在批量激活插件时,您还会被重定向到您定义的重定向页面 - 在出于测试/调试原因而立即停用/激活所有插件时,这可能会使用户感到困惑。因此,我会提出解决方案,添加一个选项,仅在首次激活插件时重定向到您的页面:

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

function my_plugin_activate() {
add_option('myplugin_redirect_on_first_activation', 'true');
}

function my_plugin_redirect() {
    if (get_option(MYPLUGIN_REDIRECT_ON_FIRST_ACTIVATION_KEY) == 'true') {
        update_option(MYPLUGIN_REDIRECT_ON_FIRST_ACTIVATION_KEY, 'false');
        wp_redirect(MY_PLUGIN_SETTINGS_URL);
    }
}
Run Code Online (Sandbox Code Playgroud)