首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测Yoast SEO插件

检测Yoast SEO插件
EN

Stack Overflow用户
提问于 2016-09-02 21:32:28
回答 4查看 3.6K关注 0票数 4

我想检测Yoast SEO。我已经使用了这个函数:

代码语言:javascript
复制
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常量:

代码语言:javascript
复制
if ( active( 'wordpress-seo/wp-seo.php' ) {
    // activate
} elseif( defined( 'WPSEO_VERSION' )) {
    // activate
} else {
    // deactivate
}

由于某种原因,这行if( defined( 'WPSEO_VERSION' )) {没有检测到Yoast..那件事怎么可能?

谢谢大家。

EN

回答 4

Stack Overflow用户

发布于 2020-07-26 05:03:27

这是你能得到的最安全的:

代码语言:javascript
复制
if(in_array('wordpress-seo/wp-seo.php', apply_filters('active_plugins', get_option('active_plugins')))){ 
    /* Yoast is active */
}

我还建议:

代码语言:javascript
复制
if(class_exists('WPSEO_Options')){
    /* Yoast is active */
    if(WPSEO_Options::get('breadcrumbs-enable', false)){
        /* Yoast breadcrumbs is active */
    }
}
票数 6
EN

Stack Overflow用户

发布于 2019-08-27 15:50:55

最简单的方法是:

代码语言:javascript
复制
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

票数 5
EN

Stack Overflow用户

发布于 2016-09-02 22:51:07

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

代码语言:javascript
复制
add_action('init', 'active');

add_action('plugins_loaded', 'active');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39293716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档