WordPress:检查是否安装了插件

时间:2016-07-26 16:16:52

标签: php wordpress plugins

我想检查是否在WordPress中安装了Yoast SEO。我已经在我的测试环境中激活了Yoast SEO,但它没有运作。

在Yoast的 wp-seo-main.php 中,第16行有这一行:

define( 'WPSEO_VERSION', '3.4' );

所以我想,检查Yoast是否安装并运行是一个很好的路线,所以我做了:

if ( defined( 'WPSEO_VERSION' ) ) {
    echo '<script>alert("Yes, defined");</script>';
} else {
    echo '<script>alert("No, undefined");</script>';
}

但它给了我&#34;不,未定义&#34;。多奇怪,因为它应该被定义。

有人有个主意吗?我完全没有想法。

5 个答案:

答案 0 :(得分:11)

或者没有额外的夹杂物,前端或后端:

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
}

与任何插件一起使用,只需查看目标的插件文件夹plugin-folder/plugin-index-name.php后者shuld将文件顶部的插件详细信息保留在其中。

请检查文件。 reference

答案 1 :(得分:1)

受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;
}

答案 2 :(得分:1)

使用以下代码:

 <?php if ( is_plugin_active( 'plugin-folder/plugin-file.php' ) ) : ?>

      //staff

 <?php endif; ?>

答案 3 :(得分:0)

这对我有用。

if(count(
        preg_grep(
            '/^wordpress-seo.*\/wp-seo.php$/',
            apply_filters('active_plugins', get_option('active_plugins'))
        )
    ) != 0
){
    // Plugin activated
}

答案 4 :(得分:0)

感谢所有其他人到目前为止所做的出色工作!但是问题还在于检查是否已安装插件,而您所有的答案都仅与检查插件是否处于活动状态有关。

所以我去了操场,做了一张正确的支票,想用已经提供的WP给你看。

// Check if needed functions exists - if not, require them
if ( ! function_exists( 'get_plugins' ) || ! function_exists( 'is_plugin_active' ) ) {
    require_once ABSPATH . 'wp-admin/includes/plugin.php';
}

/**
 * Checks if Yoast SEO is installed
 *
 * @return bool
 */
function is_wp_seo_installed(): bool {
    if ( check_plugin_installed( 'wordpress-seo/wp-seo.php' ) ) {
        return true;
    }

    return false;
}

/**
 * Check if Yoast SEO is activated
 *
 * @return bool
 */
function is_wp_seo_active(): bool {
    if ( check_plugin_active( 'wordpress-seo/wp-seo.php' ) ) {
        return true;
    }

    return false;
}

/**
 * Check if plugin is installed by getting all plugins from the plugins dir
 *
 * @param $plugin_slug
 *
 * @return bool
 */
function check_plugin_installed( $plugin_slug ): bool {
    $installed_plugins = get_plugins();

    return array_key_exists( $plugin_slug, $installed_plugins ) || in_array( $plugin_slug, $installed_plugins, true );
}

/**
 * Check if plugin is installed
 *
 * @param string $plugin_slug
 *
 * @return bool
 */
function check_plugin_active( $plugin_slug ): bool {
    if ( is_plugin_active( $plugin_slug ) ) {
        return true;
    }

    return false;
}

如您所见,我已经编写了两个单独的函数来检查Yoast SEO是否已安装并处于活动状态,所以我只需要调用它并检查return参数:

$installed = is_wp_seo_installed();
$active    = is_wp_seo_active();

if ( $installed && $active ) {
    echo 'WP SEO is installed and active!';
} else {
    echo 'WP SEO is not installed or active!';
}

但是,如果您想跳过这两个额外的功能,则可以直接调用这两个检查功能:

$installed = check_plugin_installed( 'wordpress-seo/wp-seo.php' );
$active    = check_plugin_active( 'wordpress-seo/wp-seo.php' );

if ( $installed && $active ) {
    echo 'Yoast SEO is installed and active!';
} else {
    echo 'Yoast SEO is not installed or active!';
}

我希望这可以帮助您进行良好的安装和主动检查!