wordpress 检测Yoast SEO插件

5sxhfpxr  于 2022-11-28  发布在  WordPress
关注(0)|答案(4)|浏览(159)

我想检测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..这怎么可能呢?
谢谢大家。

oknrviil

oknrviil1#

最简单的办法是:

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

nwlqm0z1

nwlqm0z12#

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

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 */
    }
}
lb3vh1jj

lb3vh1jj3#

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

add_action('init', 'active');

add_action('plugins_loaded', 'active');
7dl7o3gd

7dl7o3gd4#

最简单的检测方法是Yoast在源代码中添加的<!-- / Yoast SEO plugin. -->,你可以找到它,如果它在那里,你就得到了它。例如,这里有一个site,你可以在它的源代码中看到。

相关问题