您无法检查是否会在该操作发生之前调用该操作。即使操作已经附加了回调,也不能保证匹配do_action()
将使用。
在您的情况下,请使用is_plugin_active()
:
if ( is_plugin_active( \'wordpress-seo/wp-seo.php\' ) )
{
// do something
}
正如@BarryCarlyon在评论中提到的,该目录可以重命名。您可以检查是否定义/声明了常量或类。但并没有百分之百的解决方案:常量、函数或类在升级后可能会改变,或者其他插件已经定义了这些常量。尤其是在这种情况下:有
another WP SEO plugin 可用(我从不理解他为什么使用一个已经在使用的名称…),你可能会得到一个假阳性匹配。
有功能get_file_data()
. 一些未测试的伪代码:
$wpseo_active = FALSE;
$plugins = get_option( \'active_plugins\', array() );
foreach ( $plugins as $plugin )
{
if ( FALSE !== stripos( $plugin, \'wp-seo\' )
{
$data = get_file_data( WP_PLUGIN_DIR . "$plugin" , array ( \'Author\' ) );
if ( \'Joost de Valk\' === $data[0] )
{
$wpseo_active = TRUE;
}
}
}
if ( $wpseo_active )
{
// do something
}
但这仍然不安全:名称可以更改。