WordPress 检测某个插件是否已经启用

假期很短暂,快乐却无边,工作很苦闷,赚钱最重要,陶醉在假期的快乐中,奋斗在工作的战线中,苦中寻乐一点甜,快乐与你长相伴。

在 如何自动提醒WordPress主题使用者安装必要插件 一文中,倡萌已经提到了通过 is_plugin_active() 函数来检测插件是否已安装并启用。下面再添加几种检测方法,并简单总结下。

使用 is_plugin_active() 进行检测

is_plugin_active() 函数是专门用来检测插件是否已经安装并启用的,使用的方法很简单,只需要添加对应的插件的主文件路径即可:

1
2
3
4
if(!is_plugin_active( 'wordpress-popular-posts/wordpress-popular-posts.php' ))
	{
	echo '需要显示的内容';
	}

if(!is_plugin_active( 'wordpress-popular-posts/wordpress-popular-posts.php' )) { echo '需要显示的内容'; }

上面的代码的作用就是:如果没有启用 WordPress Popular Posts,就显示一段提醒文字。'wordpress-popular-posts/wordpress-popular-posts.php' 就是 WordPress Popular Posts 插件的主文件的路径。

有些时候,is_plugin_active() 没办法检测到插件,你可能需要在前面导入WordPress的 plugin.php 文件,样例如下

1
2
3
4
5
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if(!is_plugin_active( 'wordpress-popular-posts/wordpress-popular-posts.php' ))
	{
	echo '需要显示的内容';
	}

include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); if(!is_plugin_active( 'wordpress-popular-posts/wordpress-popular-posts.php' )) { echo '需要显示的内容'; }

检测 Class 是否存在(class_exists)

我们可以通过 class_exists 函数检测插件的某个类(Class)是否存在,从而达到检测目的。前提是你需要查看插件的源代码,找到某个特有的Class类。比如检测 WooCommerce 是否启用:

1
2
3
if (class_exists('Woocommerce')) { 
	echo 'Woocommerce is actived';
}

if (class_exists('Woocommerce')) { echo 'Woocommerce is actived'; }

检测命名常量是否已定义

可以使用 defined 检测插件的命名常量(Named Constant)是否已定义(defined)。比如检测是否定义了 NextGen 插件的 NEXTGEN_GALLERY_PLUGIN_VERSION 常量,如果已定义,说明该插件已启用,接着再检测 NextGen 版本是否 大于或等于 2.0.0 :

1
2
3
if ( defined('NEXTGEN_GALLERY_PLUGIN_VERSION') ) {
	return version_compare(NEXTGEN_GALLERY_PLUGIN_VERSION, '2.0.0') >= 0;
}

if ( defined('NEXTGEN_GALLERY_PLUGIN_VERSION') ) { return version_compare(NEXTGEN_GALLERY_PLUGIN_VERSION, '2.0.0') >= 0; }

检测函数名是否存在

可以使用 function_exists 函数检测插件特有的某个函数名是否存在,比如检测 Hello Dolly 插件特有的函数名 hello_dolly_get_lyric 是否存在:

1
if ( function_exists( 'hello_dolly_get_lyric' ) ) {

if ( function_exists( 'hello_dolly_get_lyric' ) ) {

小结

  • is_plugin_active() 需要知道插件的安装目录和主文件,通常情况下,这是比较可靠的。但是如果有人通过FTP上传安装插件时,修改了插件的文件夹名称,就没办法了,当然,这只是概率很低的情况。
  • 通过 class_exists 检测插件特有的类(class)是否存在,也是非常可靠的。因为一个插件一旦添加了某个类,是基本不会再修改的。麻烦一点的是,你需要浏览插件的源代码找到是否存在独一无二的类。
  • 通过 defined 检测插件的命名常量是否存在,以及比对常量值,这个方法可以检测到插件的版本号,这样,如果用户使用的插件版本太低,就可以进行相关提示。
  • 通过 function_exists 检测某个插件特有的函数是否存在,也是可行的,但是如果开发者修改了该函数名,就行不通了。

所以,具体要选择什么方法,根据自己的需要进行选择吧。

参考资料:http://themergency.com/wordpress-tip-how-to-check-if-a-plugin-is-active/

本文WordPress 检测某个插件是否已经启用到此结束。不要为失败找借口,只为成功找方法。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
WordPress站点Gravatar头像前后台不显示的如何解决办法

WordPress主题需要支持https吗?WordPress站点如何如何实现https?

WordPress站点的页面/标签/分类URL地址如何添加.html?

WordPress站点更换了域名后数据库应该如何操作替换新旧域名?

WordPress安装在主机空间的什么目录里面?根目录在哪里?