我如何从 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
}