我正在为我的一些教员设置一个儿童主题,作为主题的一部分,我希望在主题激活时激活一些插件。因此,很自然地,我使用了after\\u setup\\u主题操作并调用了我的setup函数。它工作得很好,除了在每个请求上运行(管理和其他)。我通过在设置函数的末尾添加以下内容来证明这一点:
echo \'<script type="text/javascript">alert("This action was run")</script>\';
因此,在每个管理请求和每个前端请求上都会收到一个javascript警报(我有一个网络设置,所以很明显,在这个主题不活动的站点上,它没有运行该功能)
所以问题是,这是一个bug吗?我是不是做错了什么?以下是我使用的完整代码:
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>\';
}
如有任何见解,将不胜感激!
SO网友:Stephen Harris
不幸的是,没有主题激活挂钩。但是this question 确实为此提供了一种变通方法。
只需使用“主题激活挂钩”即可激活插件。
一个更好的解决方案is this one. 两者基本上都使用switch_theme
钩
根据OP意见和
linked trac ticket -
after_switch_theme
是否需要挂钩。
这将旧主题的名称作为参数传递。然而,如果这是在您的functions.php
(应该是…)只有当主题被激活时,回调才会触发。
add_action( \'after_switch_theme\', \'wpse50298_setup\' );
function wpse50298_setup($theme_switching_from){
// Your theme is being activated
}
类似地,将回调添加到
switch_theme
将仅在主题停用时调用。
add_action( \'switch_theme\', \'wpse50298_deactivate\' );
function wpse50298_deactivate($theme_switching_to){
// Your theme is being deactivated
}