检测Yoast SEO插件

时间:2016-09-02 13:32:28

标签: wordpress plugins

我想检测Yoast SEO。我已经使用了这个功能:

function active( $plugin ) {
    $network_active = false;
    if ( is_multisite() ) {
        $plugins = get_site_option( 'active_sitewide_plugins' );
        if ( isset( $plugins[$plugin] ) ) {
            $network_active = true;
        }
    }
    return in_array( $plugin, get_option( 'active_plugins' ) ) || $network_active;
}

if ( active( 'wordpress-seo/wp-seo.php' ) {

这很好用。但是如果Yoast曾想过重命名wordpress-seo/wp-seo.php,那么这个功能就变得毫无用处。所以我们需要添加一个很难改变的备份,比如WPSEO_VERSION常量:

if ( active( 'wordpress-seo/wp-seo.php' ) {
    // activate
} elseif( defined( 'WPSEO_VERSION' )) {
    // activate
} else {
    // deactivate
}

由于某种原因,此行if( defined( 'WPSEO_VERSION' )) {未检测到Yoast ..这怎么可能?

谢谢大家。

4 个答案:

答案 0 :(得分:2)

这是您可以安全获得的

if(in_array('wordpress-seo/wp-seo.php', apply_filters('active_plugins', get_option('active_plugins')))){ 
    /* Yoast is active */
}

我还建议:

if(class_exists('WPSEO_Options')){
    /* Yoast is active */
    if(WPSEO_Options::get('breadcrumbs-enable', false)){
        /* Yoast breadcrumbs is active */
    }
}

答案 1 :(得分:1)

最简单的方法是:

if ( is_plugin_active( 'wordpress-seo/wp-seo.php' ) || is_plugin_active( 'wordpress-seo-premium/wp-seo-premium.php' ) ) {
   /* Let's do cool things */
}

Function Reference/is plugin active

答案 2 :(得分:0)

您的功能可能是在加载YOAST之前检查WPSEO_VERSION。尝试使用以下钩子之一来运行检查WPSEO_VERSION常量的函数。

add_action('init', 'active');

add_action('plugins_loaded', 'active');

答案 3 :(得分:0)

好吧,Yoast在源代码中添加了<!-- / Yoast SEO plugin. -->,您可以找到它,如果存在,就可以了。例如,这是一个site,您可以在其源代码中看到它。