判断某个插件是否启用在某些情况下很有用,比如插件需要用户在主题中放置模板标签,比如某些功能依赖于某个插件等等。在WordPress前台和后台判断插件启用的方法略有不同,本文会详细介绍。
目录
在后台判断插件是否启用
WordPress API有一个专门用来判断插件是否启用的,名为is plugin active。仔细读一下文档加粗的文字,说明了该函数的使用范围。
该函数定义在wp-admin/includes/plugin.php中,所以该函数只在后台页面起作用。
要在后台判断插件是否启用,这样做就可以。
<?php If (is_plugin_active('plugin-directory/plugin-file.php')) { //plugin is activated } ?>
在前台判断插件是否启用
上面说的is_plugin_active也可以用到前台,但需要引入定义它的文件,所以在前台应该这样用
<?php include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); ?> <?php is_plugin_active($plugin) ?>
还有另一种方法
If (in_array( 'plugin-directory/plugin-file.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) )
这种方法也极其好用,不用引入额外的文件。
通过代码启用插件
来自wpengineer.com的文章《Activate WordPress Plugins Automatically via a Function》介绍了一种用代码启用插件的方法,
<?php // example on admin init, control about register_activation_hook() add_action( 'admin_init', 'fb_activate_plugins' ); // the exmple function function fb_activate_plugins() { if ( ! current_user_can('activate_plugins') ) wp_die(__('You do not have sufficient permissions to activate plugins for this site.')); $plugins = FALSE; $plugins = get_option('active_plugins'); // get active plugins if ( $plugins ) { // plugins to active $pugins_to_active = array( 'hello.php', // Hello Dolly 'adminimize/adminimize.php', // Adminimize 'akismet/akismet.php' // Akismet ); foreach ( $pugins_to_active as $plugin ) { if ( ! in_array( $plugin, $plugins ) ) { array_push( $plugins, $plugin ); update_option( 'active_plugins', $plugins ); } } } // end if $plugins } ?>
所有激活的插件都会向wp_options表中的active_plugins字段写数据,上面的代码就是通过更改active_plugins的值用代码激活插件。
同理,不是很难想象,要想禁用所有插件,也可以直接操作数据库,清空wp_options表的active_plugins字段就可以了
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';
WordPress内置两个函数亦可以启用或禁用插件,但必须在后台页面使用。
启用插件
例如启用wp-postviews插件
add_action('admin_init','enable_wp_postviews'); function enable_wp_postviews() { activate_plugins( 'wp-postviews/wp-postviews.php' ); }
禁用插件
禁用wp-postviews插件
add_action('admin_init','disable_wp_postviews'); function disable_wp_postviews() { deactivate_plugins( 'wp-postviews/wp-postviews.php' ); }
参考文章
《Activate WordPress Plugins Automatically via a Function》
《Quickly Disable or Enable All WordPress Plugins via the Database》
《Using is_plugin_active within functions.php》
《How Do I Programmatically Check if a WordPress Plugin Is Already Activated?》