WordPress:检查插件是否安装
问题描述:
我想检查一下Yoast SEO是否安装在WordPress中。我在我的测试环境中启动了Yoast SEO,但没有解决问题。WordPress:检查插件是否安装
在WP-SEO-main.php Yoast的,还有该行第16行:
define('WPSEO_VERSION', '3.4');
所以我想,这是一个好线,检查是否安装Yoast和运行,因此我做了:
if (defined('WPSEO_VERSION')) {
echo '<script>alert("Yes, defined");</script>';
} else {
echo '<script>alert("No, undefined");</script>';
}
但它给了我“不,未定义”。多么奇怪,因为它应该被定义。
有人有想法吗?我完全没有想法。
答
检查插件是否被激活。
注意:在wp-admin/includes/plugin.php中定义,因此只能在管理页面中使用,并且对此函数的任何引用都必须挂钩到admin_init或更高版本的操作。如果要使用此功能从模板中,您将需要手动要求plugin.php,一个例子是下面 使用
Admin area
<?php
/**
* Detect plugin. For use in Admin area only.
*/
if (is_plugin_active('plugin-directory/plugin-file.php')) {
//plugin is activated
}
Front end
<?php
/**
* Detect plugin. For use on Front End only.
*/
include_once(ABSPATH . 'wp-admin/includes/plugin.php');
// check for plugin using plugin name
if (is_plugin_active('plugin-directory/plugin-file.php')) {
//plugin is activated
}
答
或者无需额外包裹,前端或后端:
if(in_array('wordpress-seo/wp-seo.php', apply_filters('active_plugins', get_option('active_plugins')))){
// do stuff only if Yoast is installed and active
}
适用于任何插件,只是看着你plugins文件夹为你的目标:plugin-folder/plugin-index-name.php
其中后者shuld居民插件细节在文件的顶部。
答
受Jonas Lundman的回答的启发,我写了这个来处理Yoast溢价活跃时的情况。
private function isYoastActive(){
$active_plugins = apply_filters('active_plugins', get_option('active_plugins'));
foreach($active_plugins as $plugin){
if(strpos($plugin, 'wp-seo')){
return true;
}
}
return false;
}
尝试看看插件是否处于活动状态。这里有一篇很好的文章,它以多种方式检查:http://queryloop.com/detect-wordpress-plugin-is-active/ –
请牢记wordpress.stackexchange.com以及您的问题可能更适合 – YakovL
@YakovL是的,但我认为这是更多的PHP相关的事情,但事实证明,它有它的WordPress功能。 –