我正在创建一个插件(我在这方面非常新手),以加载自定义分类法、自定义帖子类型和自动激活主题,因此我有以下代码:
// Custom Post Types and Taxonomies
require_once(\'inc/cpt-taxonomies.php\');
// Switch Theme
function updateTheme($theme){
update_option(\'template\', $theme);
update_option(\'stylesheet\', $theme);
update_option(\'current_theme\', $theme);
}
updateTheme(\'Creative_Grid\');
require_once(\'inc/initial-setup-theme.php\');
问题是,当被激活时,我无法切换到Appreance页面中的其他主题,就像插件在尝试切换到其他主题时重新激活它一样。我可以确认,当我切换到另一个主题时,插件的所有代码都会再次运行,我不希望这样,我希望在激活时执行数据。
有什么想法吗?还有一个问题,如果主题不可用,我应该使用什么样的php条件来防止失败?
谢谢,罗伊
最合适的回答,由SO网友:cybmeta 整理而成
看来你正在执行updateTheme()
在每个页面加载中。要仅在激活时执行任务,您应该挂接updateTheme()
功能到register_activation_hook
行动挂钩:
register_activation_hook( __FILE__, \'activation_callback\' );
function activation_callback() {
//The code inside this function is executed only on plugin activation
$theme = \'twentyeleven\'; //SET the value of $theme to whatever you want (not provided in the question)
updateTheme($theme);
}
// Switch Theme
function updateTheme($theme){
update_option(\'template\', $theme);
update_option(\'stylesheet\', $theme);
update_option(\'current_theme\', $theme);
}