我正在创建一个WP插件,它需要两个主题中的任何一个,以便它可以工作,因为它使用从任一插件继承的主题函数。我写了这个条件检查。
register_activation_hook(__FILE__, 'plugin_activation_check');
add_action ('admin_init', 'plugin_activation_check');
function plugin_activation_check()
{
if (get_template() != 'Theme-One' || get_template() !='Theme-Two'){
deactivate_plugins('theme-folder/my-plugin.php');
/* message to user when they try to activate the plugin */
wp_die('This plugin needs either Theme-One or Theme-two themes to be active.');
}
}
我希望只有在两个推荐主题中的任何一个处于活动状态时才能激活该插件。否则,停用该插件并返回错误消息。
我可以通过编写 if condition 这样的
轻松实现一个主题if (get_template() != 'Theme-One'){
但不确定如何通过两个主题实现这一目标。
由于
答案 0 :(得分:0)
您遇到的问题是您的条件总是会评估为真。
'主题一体'和''主题 - 二'不能同时处于活动状态,因此逻辑上存在缺陷。如果我有'主题 - 一个'例如,有效,get_template() !='Theme-Two'
为真,满足您的第二个条件并触发deactivate_plugins('theme-folder/my-plugin.php');
。
改变这个:
if (get_template() != 'Theme-One' || get_template() !='Theme-Two'){
对此:
if ( get_template() != 'Theme-One' && get_template() !='Theme-Two' ) {
在更新版本中,我们确保这两个主题都不活跃。
如果主题的数量可能会增加,那么我建议使用数组。
示例:
$themes = array(
'Theme-One',
'Theme-Two',
'Theme-Three',
);
if ( ! in_array( get_template(), $themes ) ) {