scottb
  • 0
Гуру

Как запустить код в functions.Php при вызове switch_theme()?

  • 0

У меня есть код внутри functions.php, который предназначен для выполнения только при первой активации темы:

if ( is_admin() && isset($_GET['activated'] ) && $pagenow == 'themes.php' ) {
//this code only runs when the theme is first activated
}

Однако я почти уверен, что этот код не работает, если тема активирована вне обычного процесса активации. Например, если оператор switch_theme() вызывается из плагина.

В таком случае, как я могу изменить свой код выше, чтобы он выполнялся на switch_theme()?

if ( is_admin() && isset($_GET['activated'] ) && $pagenow == 'themes.php') OR (switch_theme_called() ) ) {
//this code only runs when the theme is first activated
}
Share
  1. Что ж, вместо использования параметра $_GET вы можете сохранить состояние инициализации в своей таблице параметров.

    Например

    $initialized = get_option('mytheme_initialized');
    if ( (false === $initialized) && is_admin() && ($pagenow == 'themes.php') ) {
    //this code only runs when the theme is first activated
    update_option('mytheme_initialized', true);
    }
    

    К сожалению, хук «register_activation» доступен только для плагинов -> http://core.trac.wordpress.org/ticket/13602.

    • 0

Оставить ответ

You must login to add an answer.