Intereting Posts
Отправить форму в другой файл php добавляет постоянную ссылку в URL-адрес Изменен URL-адрес в https и теперь недоступен для администратора сайта Как работает Cross Site Scripting (XSS)? Настроить текст рамки мультимедиа Фильтровать медиа-библиотеку по автору или post_parent Цикл через мета значение и порядок Производительность Loop> Файлы JSON по сравнению с WP_Query и REST API Добавление состояния навигационной страницы в отдельные страницы блога и портфолио Добавьте сеанс или файл cookie, чтобы запомнить последнее местоположение меню Простой Facebook Connect: токены доступа не найдены Схватил идентификатор сообщения под контуром WP, но все еще не мог напечатать заголовок сообщения Как работают почтовые идентификаторы в WordPress? Как я могу отображать элементы show / hide при регистрации пользователя? Как добавить второе меню «Сообщений» в свою панель? Неустранимая ошибка: вызов неопределенной функции register_new_user ()

Активная тема отвечает на запрос изменения темы, чтобы предупредить пользователя

Я пытаюсь перехватить процедуру установки тем, чтобы предупредить пользователя об активной теме. Я собираю грубое предупреждение javascript ниже. Какие еще варианты?

if ( is_admin() && $pagenow == 'theme-install.php' && $_GET['tab']=="upload"){ ?> <script type="text/javascript"> alert('Message here'); </script> <?php } 

Причина этого заключается в том, чтобы убедиться, что пользователь не пытается установить файл обновления upgraderaz.zip моей темы в качестве темы (что приводит к сломанной теме).

Я, как правило, поклонник такого рода работы на стороне сервера, поскольку слишком легко обойти JavaScript на стороне клиента с помощью современных средств отладки, но это уникальная проблема, и это может соответствовать вашему варианту использования (в зависимости от о том, кто ваша аудитория).

Используя чистый JavaScript, вы можете сделать это:

  • Создайте файл JavaScript в корневом каталоге вашей темы и назовите его «upload.js»
  • Добавьте к нему следующий код (и обязательно прочитайте комментарии):

     (function($) { $(function() { // Check to verify that we're on the "Install Themes" page var $upload = $('#install-theme-submit'); if($upload.length > 0) { // Watch for the user to click on the upload button $upload.click(function(evt) { // When they do, get the name of the file they've uploaded var sFilePath = $('input[type=file]').val(); var aFilePath = sFilePath.split('\\'); sFilePath = aFilePath[aFilePath.length - 1]; // If it's equal to updated, let them know: if(sFilePath.toLowerCase() === 'upgrader.zip') { // Create a WordPress-style notification and add it to the screen $('h4').before( $('<div />') .append( $('<p />') .text("Do not upload this file.") ).attr('class', 'updated') ); // Stop the upload evt.preventDefault(); } // end if }); } // end if }); })(jQuery); 
  • Добавьте следующие функции функции functions.php. Это загрузит сценарий в вашу тему:

     function custom_upload_script() { wp_register_script('admin-upload-script', get_template_directory_uri() . '/upload.js'); wp_enqueue_script('admin-upload-script'); } // end custom_upload_script add_action('admin_enqueue_scripts', 'custom_upload_script'); 

Если вы хотите перейти на чистую серверную сторону, нет никакого крючка для управления действием активации темы; однако вы можете воспользоваться действием switch_theme . Это чисто спекуляция, но как только действие срабатывает, вы можете прочитать некоторую информацию из файла, а затем вернуться к ранее используемой теме.

Поздний ответ

Для этого есть два (почти неизвестных) крючка:

  • 'after_switch_theme' активации темы: 'after_switch_theme'

  • 'switch_theme' : 'switch_theme'