如何检查插件在 WordPress 中是否处于活动状态 [3 种方式]

已发表: 2020-08-08

检查插件是否在 WordPress 中处于活动状态 作为 WordPress 开发人员,在开发插件时,代码中最常见的检查之一是插件激活的状态。您应该检查插件是否处于活动状态的原因有很多。 仅举几例,您可以检查依赖插件是否处于活动状态或执行相同操作的类似插件。

无论哪种情况,您都需要在插件基础文件中添加检查以检查目标插件是否处于活动状态。 如果您正在开发扩展 WooCommerce 类的 WooCommerce 插件,这是一个经典示例。

例如,当您开发 WooCommerce 支付网关插件时,您需要在插件激活后立即检查 WooCommerce 是否处于活动状态,或者最好在插件激活挂钩期间检查。

检查 WordPress 插件是否处于活动状态

幸运的是,WordPress 核心有一个随时可用的方法或函数来检查某个插件是否处于活动状态并返回真或假。

is_plugin_active WordPress

此函数返回一个boolean - true or false ,您可以轻松地将其合并到您的代码中,尤其是在激活挂钩期间。

如果您正在检查的插件未激活,您可以显示标题通知以供用户安装插件。

当您希望用户停用可能与您的插件功能冲突的另一个插件时,您也可以应用相同的功能。

函数 is_plugin_active() 快速回顾

让我们快速查看函数is_plugin_active()以了解有关如何在项目中有效使用它的更多信息。

is_plugin_active( string $plugin )

此函数采用一个字符串参数,该参数表示插件目录中插件相对路径的路径。

 功能 is_plugin_active( $plugin ) {
    返回 in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || is_plugin_active_for_network( $plugin );
}

例如 WooCommerce 的路径是woocommerce/woocommerce.php ,如上所示
下图:
WooCommerce 基本文件文件路径

函数is_plugin_active()可用于使用以下代码片段检查插件是否在后端处于活动状态

<?php
/**
* 检测插件。 仅用于管理区域。
*/
if ( is_plugin_active( 'plugin-directory/plugin-file.php' ) ) {
//插件被激活
}

例如,如果您想检查 WooCommerce 是否处于活动状态,您可以使用以下代码进行检查:

 <?php
/**
* 检查 WooCommerce 插件是否在管理区域中处于活动状态
*/
if ( is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
//WooCommerce 插件被激活
}

插件基本文件和基本目录

如您所见,我使用了 WooCommerce 插件基本名称和文件夹,正如我使用上图所说明的那样。
插件的基本名称是作为主文件的单个文件插件的文件名,有时它与目录/文件夹匹配,但并非所有情况 - 有些插件是不同的。

检查插件是否在多站点中处于活动状态

对于 WordPress 多站点,有一个功能旨在帮助开发人员检查插件是否在多站点网络中处于活动状态。 功能是:

is_plugin_active_for_network( string $plugin )

这个函数就像 is_plugin_active(string $plugin) 函数一样工作,并且可以以相同的方式应用来确定插件是否在 WordPress 多站点网络中处于活动状态。

 <?php
功能 is_plugin_active_for_network( $plugin ) {
    如果(!is_multisite()){
        返回假;
    }
 
    $plugins = get_site_option('active_sitewide_plugins');
    if ( isset( $plugins[ $plugin ] ) ) {
        返回真;
    }
 
    返回假;
}

检查插件是否处于活动状态的其他方法

您可以使用其他方法来检查插件是否处于活动状态。 您可以使用原生 php 函数class_exists 或 function_exists 进行检查。 这些方法分别检查插件或函数的类是否存在。

使用 function_exists() 检查插件是否处于活动状态

如果您知道插件的功能或方法,则可以使用function_exists方法进行检查,如下面的代码片段所示:

 <?php
如果(函数存在(“插件函数”)){
// 插件激活
}

使用 class_exists() 检查插件是否处于活动状态

如果您知道插件的主类,则可以使用class_exists方法进行检查,如下面的代码片段所示:

 <?php
如果(class_exists('plugin_class')){
// 插件激活
}

您可以使用这些方法中的任何一种来检查plugins_loaded钩子上的插件是否处于活动状态,如下面的代码片段所示:

 <?php
/*
* 测试插件是否处于活动状态
*/

功能 njengah_is_plugin_name_active() {
如果(class_exists('Plugin_Class')){

// 它是活动的,所以这里的逻辑

}
}
add_action('plugins_loaded', 'njengah_is_plugin_name_active');

结论

在这篇文章中,我们重点介绍了在您开发另一个插件或主题时检查插件是否处于活动状态的各种方法。 这些是可以应用于所有 WordPress 开发任务的有用方法。

类似文章