Intereting Posts
Добавить кнопки tinymce в текстовое поле caption в медиа-загрузчике Пользовательский мета-заголовок для персонализированного архива типа сообщения со страницы Импорт старого блога с регулярными сообщениями в новые настраиваемые типы сообщений Получить все продукты с настраиваемым атрибутом Отображать чек, обозначенный таксономиями, как выпадающее меню Перенаправление не вошедших в систему пользователей, если они находятся на определенной странице WP_Cron не выполняет работу: Multisite stats mu-plugins фильтр body_class не работает Языковой файл не работает Вывести только те теги, у которых есть записи в данной категории сообщений блога Можно ли использовать знак% в постоянных ссылках? Объединение двух таблиц wp_posts, избегая дублирования Глобальная переменная, заданная в header.php шаблона, не может быть эхом в footer.php Динамически добавлять CSS в визуальный редактор как обрабатывать цикл, используя заполняющую структуру сетки бутстрапа?

Есть ли крючок, когда вы переключаете темы?

Я создал плагин, но я просто наткнулся на ошибку, которую я действительно не знаю, как ее решить.

Когда вы активируете мой плагин, он создает файл в каталоге активных тем, и когда вы его деактивируете, он удаляет этот файл.

Проблема в том, что если вы активируете плагин, а затем переключите тему, файлы не будут существовать в каталоге новой темы. Есть ли строка кода, которую я могу добавить в мой файл функций плагинов, чтобы отключить плагин до того, как тема будет переключена, а затем активировать его после активации новой темы?

Спасибо, это отличное сообщество, поэтому я знаю, что получу отличный ответ. 🙂

Solutions Collecting From Web of "Есть ли крючок, когда вы переключаете темы?"

Существует действие «switch_theme», которое запускается сразу после переключения темы.

function my_on_switch_theme($new_theme) { $current_themes = wp_get_themes(); /* Fixed deprecated function */ $new_theme_info = $current_themes[$new_theme]; /* $new_theme_info should now be an associative array with the following: $new_them_info['Title']; $new_them_info['Version']; $new_them_info['Parent Theme']; $new_them_info['Template Dir']; $new_them_info['Stylesheet Dir']; $new_them_info['Template']; $new_them_info['Stylesheet']; $new_them_info['Screenshot']; $new_them_info['Description']; $new_them_info['Author']; $new_them_info['Tags']; $new_them_info['Theme Root']; $new_them_info['Theme Root URI']; ...so do what you need from this. */ } add_action('switch_theme', 'my_on_switch_theme'); 

В WordPress 1.5 и выше действие, которое вы ищете, называется темой переключения .

Вы можете увидеть его в источнике в theme.php .

Я столкнулся с той же проблемой и get_option('theme_switched') на старую тему, которую мы используем get_option('theme_switched') . Этот параметр содержит значение последней активной темы.

Почти полный пример (только отсутствует крючок деактивации):

 register_activation_hook( __FILE__, 'make_copy_wpse_7518' ); add_action( 'switch_theme', 'switching_theme_wpse_7518', 10, 2 ); /** * Theme switch */ function switching_theme_wpse_7518( $new_name, $new_theme ) { # Remove template from old theme $old_theme = get_option( 'theme_switched' ); // I thought that get_theme_root would return the path to the old theme, but apparently not, hence the second $old_theme $template_path = get_theme_root( $old_theme ) . "/$old_theme/plugin-template-file.php"; if( file_exists( $template_path ) ) unlink( $template_path ); # Copy template to newly activated theme make_copy_wpse_7518(); } /** * Copy function, called on plugin activation and theme swap */ function make_copy_wpse_7518() { $source = dirname( __FILE__ ) . "/includes/plugin-template-file.php"; $destination = get_stylesheet_directory() . "/plugin-template-file.php"; copy_page_template_wpse_7518( $source, $destination ); } /** * Does the actual copy from plugin to template directory * From https://github.com/tommcfarlin/page-template-example/ */ function copy_page_template_wpse_7518( $source, $destination ) { // Check if template already exists. If so don't copy it; otherwise, copy if if( ! file_exists( $destination ) ) { // Create an empty version of the file touch( $destination ); // Read the source file starting from the beginning of the file if( null != ( $handle = @fopen( $source, 'r' ) ) ) { // Read the contents of the file into a string. // Read up to the length of the source file if( null != ( $content = fread( $handle, filesize( $source ) ) ) ) { // Relinquish the resource fclose( $handle ); } } // Now open the file for reading and writing if( null != ( $handle = @fopen( $destination, 'r+' ) ) ) { // Attempt to write the contents of the string if( null != fwrite( $handle, $content, strlen( $content ) ) ) { // Relinquish the resource fclose( $handle ); } } } }