我正在构建一个动态的Gutenberg块,该块需要根据活动的插件进行不同的渲染。我知道有PHP函数is_plugin_active
。是否有等效或“替代方法”可从JavaScript中找到?还是我需要将其从PHP传递给JS?
答案 0 :(得分:1)
正如Tony所说,您可以使用本地化将数据从PHP传递到脚本中。
另一种解决方法是,如果一个或多个插件处于活动状态,则钩住body_class filter hook并向其中添加自定义CSS类:
/**
* Adds additional CSS classes to the body tag if a given plugin is active.
*
* @param array $classes An array of CSS classes that will be added to the body tag
* @return array $classes An array of CSS classes that will be added to the body tag
*/
function wp76641_active_plugins_body_classes($classes) {
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if ( is_plugin_active('plugin-x-directory/plugin-x-file.php') ) {
$classes[] = 'plugin-x-is-active';
}
return $classes;
}
add_filter('body_class', 'wp76641_active_plugins_body_classes');
然后,在您的JS中,您可以执行以下操作:
if ( document.body.classList.contains('plugin-x-is-active') ) {
// Do your thing
}