我想检查是否在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;。多奇怪,因为它应该被定义。
有人有个主意吗?我完全没有想法。
答案 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!';
}
我希望这可以帮助您进行良好的安装和主动检查!