Я настраиваю дочернюю тему для некоторых из моих преподавателей, и как часть этой темы я хотел бы, чтобы несколько плагинов были активированы во время активации темы. Поэтому, естественно, я использовал действие after_setup_theme и вызвал мою функцию установки. Он отлично работает, за исключением того, что работает по КАЖДОМУ запросу (администратору и т. Д.). Я доказал это, добавив это в конец функции настройки:
echo '<script type="text/javascript">alert("This action was run")</script>';
И в результате получите предупреждение javascript на каждый запрос администратора и каждый внешний запрос (у меня есть настройка сети, поэтому, очевидно, на сайтах, где эта тема не активна, она не выполняет функцию)
Итак, вопрос в том, является ли это ошибкой? Я что-то делаю не так? Вот полный код, который я использую:
add_action( 'after_setup_theme', 'fwp_setup' );
function fwp_setup(){
// -- Unrelated code remove for the sake of brevity
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php');
activate_plugin('enable-media-replace/enable-media-replace.php');
activate_plugin('seo-image/seo-friendly-images.php');
activate_plugin('w3-total-cache/w3-total-cache.php');
echo '<script type="text/javascript">alert("This action was run")</script>';
}
Любое понимание будет высоко ценится!
источник
after_switch_theme
делает именно то, что я намеревался здесь. Он срабатывает после переключения темы на вашу тему. Одно из упомянутых ниже решений используетswitch_theme
. Это не дает желаемых результатов, поскольку это происходит только при переключении с вашей темы. Ссылка на комментарий TracОтветы:
РЕШЕНИЕ:
after_switch_theme
делает именно то, что я намеревался здесь. Он срабатывает после переключения темы на вашу тему. Одно из упомянутых ниже решений используетswitch_theme
. Это не дает желаемых результатов, поскольку это происходит только при переключении с вашей темы.Вот статья, которую я нашел в качестве ссылки: http://core.trac.wordpress.org/ticket/7795#comment:29
Вот мой модифицированный код
источник
after_setup_theme
Действие предназначено для огня на каждом WordPress нагрузки. Это просто часть процесса, во время которого WordPress вызывает систему шаблонов, определяет различные параметры настройки для темы, а затем переходит к последующей обработке, такой как определение правильного шаблона для отображения и т. Д.Другими словами,
after_setup_theme
представляет собой точку, в которой WordPress устанавливает текущую тему, а не точку, в которой администратор активирует и / или настраивает текущую тему.То, что вы ищете, это хук активации темы , который в настоящее время недоступен, но находится на стадии рассмотрения / разработки .
источник
init !== activation
, Обычно вы называете__construct()
функцию в php такжеinit
функцией. Это значит: инициализировать экземпляр.К сожалению, нет темы активации крюка. Тем не менее, этот вопрос обеспечивает обходной путь для этого.
Просто используйте «крюк активации темы» для активации плагинов.
Лучшее решение в том же духе это . Оба по существу используют
switch_theme
крюк.В соответствии с комментариями OP и связанным билетом trac -
after_switch_theme
требуется крюк.Это передает имя старой темы в качестве аргумента. Однако, если это находится в вашем
functions.php
(что должно быть ...), обратный вызов будет срабатывать только при активации вашей темы .Аналогично добавление обратного вызова
switch_theme
будет вызываться только тогда, когда ваша тема деактивирована.источник
switch_theme
работал только после деактивации темы. Тем не менее,after_switch_theme
работал отлично.Лучшим решением может быть использование сценария активации плагина Томаса Гриффина . Это предложит пользователям установить плагины по вашему выбору, когда тема используется. Я думаю, что это отличный способ отделить плагин от темы и по-прежнему использовать его.
В вашей теме проверьте, активен ли плагин, прежде чем использовать его функции. Это позволит пользователям больше выбора и контроля.
Вы можете легко настроить скрипт активации с помощью рюкзака .
источник
Лучше всего было бы теперь использовать
switch_theme
ловушку и отфильтровать переданный аргумент '$ theme', чтобы увидеть, является ли он текущим, а затем, если не возвращен;источник