如何从JavaScript找出WordPress中某个特定插件是否处于活动状态?

时间:2019-06-13 15:22:48

标签: javascript wordpress wordpress-rest-api

我正在构建一个动态的Gutenberg块,该块需要根据活动的插件进行不同的渲染。我知道有PHP函数is_plugin_active。是否有等效或“替代方法”可从JavaScript中找到?还是我需要将其从PHP传递给JS?

1 个答案:

答案 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
}