我想检测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条答案
按热度按时间oknrviil1#
最简单的办法是:
Function Reference/is plugin active
nwlqm0z12#
这是你能得到的最安全的:
我还建议:
lb3vh1jj3#
您的函数可能在加载YOAST之前检查了WPSEO_VERSION。请尝试使用以下挂钩之一运行检查WPSEO_VERSION常量的函数。
7dl7o3gd4#
最简单的检测方法是Yoast在源代码中添加的
<!-- / Yoast SEO plugin. -->
,你可以找到它,如果它在那里,你就得到了它。例如,这里有一个site,你可以在它的源代码中看到。