Перенаправление после активации плагина - PullRequest
8 голосов
/ 16 марта 2010

Как перенаправить пользователей на страницу настроек моего плагина после того, как они активируют мой плагин, я попробовал

register_activation_hook(__FILE__,'activate_myplugin');
function activate_myplugin()
{
//create and populate DB tables
wp_redirect(plugin_setting_url);
}

но это не работает.

Ответы [ 4 ]

13 голосов
/ 17 марта 2010

Вы должны быть в состоянии сделать что-то вроде этого:

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);
    }
}
9 голосов
/ 09 августа 2012

Это перенаправит на страницу параметров, только если этот плагин активирован только без использования режима массовой активации.

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");
        }
    }
}
4 голосов
/ 01 декабря 2011

спасибо за ваш код - это здорово, но есть только один недостаток: при массовой активации плагинов вы также перенаправляетесь на определенную страницу перенаправления - что может сбить пользователя с толку при деактивации / активации всех плагинов одновременно для тестирования / причина отладки. Поэтому я бы предложил решение, чтобы добавить опцию перенаправления только на вашу страницу при ПЕРВОЙ активации плагина:

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);
    }
}
0 голосов
/ 18 февраля 2015

Здравствуйте, я использовал сильфонное перенаправление кода после активации плагина. Вы можете использовать этот код. Это работает хорошо.

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)) {
    delete_option('nht_plugin_do_activation_redirect');
    if(!isset($_GET['activate-multi']))
    {
        wp_redirect("edit.php?post_type=headline&page=news-headline");
    }
 }
}

nht_ - мой префикс плагина, а "edit.php? Post_type = headline & page = news-headline" - страница перенаправления. пожалуйста замените это те.

...