这里会显示出您选择的修订版和当前版本之间的差别。
note:spoony:wordpress-检测某个插件是否已经启用 [2017/02/17 23:43] Spoony 创建 |
note:spoony:wordpress-检测某个插件是否已经启用 [2017/02/17 23:45] Spoony |
||
---|---|---|---|
行 1: | 行 1: | ||
====== WordPress 检测某个插件是否已经启用 ====== | ====== WordPress 检测某个插件是否已经启用 ====== | ||
+ | <code> | ||
+ | 使用 is_plugin_active() 进行检测 | ||
- | 使用Wordpress的朋友可能遇到这样的问题,在非single.php页面中我们有时候想要调用当前文章的标题、内容等信息,而Wordpress在生成文章页的时候在各个页面中唯一不变的只有当前的文章ID,那么如何这个ID获取到当前文章的标题、内容等信息呢? | + | is_plugin_active() 函数是专门用来检测插件是否已经安装并启用的,使用的方法很简单,只需要添加对应的插件的主文件路径即可: |
+ | 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 文件,样例如下 |
- | <code> | + | include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); |
- | <?php | + | if(!is_plugin_active( 'wordpress-popular-posts/wordpress-popular-posts.php' )) |
- | $id='14'//文章的ID | + | { |
- | $title = get_post($id)->post_title; | + | echo '需要显示的内容'; |
- | echo $title;//输出文章的标题 | + | } |
- | ?> | + | 检测 Class 是否存在(class_exists) |
- | 其他信息可以通过改变get_post($id)->post_title中的post_title来实现: | + | 我们可以通过 class_exists 函数检测插件的某个类(Class)是否存在,从而达到检测目的。前提是你需要查看插件的源代码,找到某个特有的Class类。比如检测 WooCommerce 是否启用: |
- | post_author:(整数)文章作者的编号 | + | |
- | post_data:(字符)文章发表的日期和时间(YYYY-MM-DD HH-MM-SS) | + | if (class_exists('Woocommerce')) { |
- | post_data_gmt:(字符)文章发表的格林尼治标准时间(GMT) (YYYY-MM-DD HH-MM-SS) | + | echo 'Woocommerce is actived'; |
- | post_content:(字符)文章内容 | + | } |
- | post_title:(字符)文章标题 | + | 检测命名常量是否已定义 |
- | post_category:(整数)文章类别的编号。注意:该值在WordPress 2.1之后的版本总为0。定义文章的类别时可使用 get_the_category()函数。 | + | |
- | post_excerpt:(字符)文章摘要 | + | 可以使用 defined 检测插件的命名常量(Named Constant)是否已定义(defined)。比如检测是否定义了 NextGen 插件的 NEXTGEN_GALLERY_PLUGIN_VERSION 常量,如果已定义,说明该插件已启用,接着再检测 NextGen 版本是否 大于或等于 2.0.0 : |
- | post_status:(字符)文章状态(publish|pending|draft|private|static|object|attachment|inherit|future) | + | |
- | comment_status:(字符)评论状态(open|closed|registered_only) | + | if ( defined('NEXTGEN_GALLERY_PLUGIN_VERSION') ) { |
- | ping_status:(字符)pingback/trackback状态(open|closed) | + | return version_compare(NEXTGEN_GALLERY_PLUGIN_VERSION, '2.0.0') >= 0; |
- | post_password:(字符)文章密码 | + | } |
- | post_name:(字符)文章的URL嵌套 | + | 检测函数名是否存在 |
- | to_ping:(字符)要引用的URL链接 | + | |
- | pinged:(字符)引用过的链接 | + | 可以使用 function_exists 函数检测插件特有的某个函数名是否存在,比如检测 Hello Dolly 插件特有的函数名 hello_dolly_get_lyric 是否存在: |
- | post_modified:(字符)文章最后修改时间(YYYY-MM-DD HH-MM-SS) | + | |
- | post_modified_gmt:(字符)文章最后修改GMT时间(YYYY-MM-DD HH-MM-SS) | + | if ( function_exists( 'hello_dolly_get_lyric' ) ) { |
- | post_parent:(整数)父级文章编号(供附件等) | + | 小结 |
- | guid:(字符)文章的一个链接。注意:不能将GUID作为永久链接(虽然在2.5之前的版本中它的确被当作永久链接),也不能将它作为文章的可用链接。GUID是一种独有的标识符,只是目前恰巧成为文章的一个链接。 | + | |
- | post_type:(字符)(日志 | 页面 | 附件) | + | is_plugin_active() 需要知道插件的安装目录和主文件,通常情况下,这是比较可靠的。但是如果有人通过FTP上传安装插件时,修改了插件的文件夹名称,就没办法了,当然,这只是概率很低的情况。 |
- | post_mime_type:(字符)Mime类型(供附件等) | + | 通过 class_exists 检测插件特有的类(class)是否存在,也是非常可靠的。因为一个插件一旦添加了某个类,是基本不会再修改的。麻烦一点的是,你需要浏览插件的源代码找到是否存在独一无二的类。 |
- | comment_count:(整数)评论总数 | + | 通过 defined 检测插件的命名常量是否存在,以及比对常量值,这个方法可以检测到插件的版本号,这样,如果用户使用的插件版本太低,就可以进行相关提示。 |
+ | 通过 function_exists 检测某个插件特有的函数是否存在,也是可行的,但是如果开发者修改了该函数名,就行不通了。 | ||
+ | 所以,具体要选择什么方法,根据自己的需要进行选择吧。 | ||
</code> | </code> | ||
+ | |||
+ | 参考资料:http://themergency.com/wordpress-tip-how-to-check-if-a-plugin-is-active/ |