我如何从 JavaScript 中找出特定插件是否在 WordPress 中处于活动状态?
How can I find out if a specific plugin is active in WordPress from JavaScript?
我正在构建一个动态 Gutenberg 块,它需要根据活动插件进行不同的呈现。我知道有 PHP 函数 is_plugin_active
。是否有等价物或 "workaround" 可以从 JavaScript 中找到它?或者我需要将它从 PHP 传递给 JS?
正如 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
}
我正在构建一个动态 Gutenberg 块,它需要根据活动插件进行不同的呈现。我知道有 PHP 函数 is_plugin_active
。是否有等价物或 "workaround" 可以从 JavaScript 中找到它?或者我需要将它从 PHP 传递给 JS?
正如 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
}