检测可视化编辑器

问题描述 投票:7回答:4

有没有一种方法来检测,如果一个WordPress页面是使用Visual Composer的?

我有2个不同的页面模板:

  1. 定期页面默认模板。
  2. 模板视觉作曲家页面。

我希望有一种方式,如果用户使用视觉作曲家打造的,而不是依靠用户每次选择视觉作曲家模板的页面来检测。

有没有一种方法来检测正在建设中的页面,然后分配基于该模板?

php wordpress wordpress-plugin
4个回答
8
投票

是的,你可以,如果视觉作曲家为后启用检测。它存储在_wpb_vc_js_status后元属性。

$vc_enabled = get_post_meta($post_id, '_wpb_vc_js_status', true);

需要注意的是后仍然可以包含视觉作曲家简码,即使当前未启用视觉作曲家编辑。例如,如果我设置一个视觉作曲家页,然后恢复到正常的编辑器,_wpb_vc_js_status会是假的。


9
投票

其实_wpb_vc_js_status因为4.8是不正确的,因为它不再使用。检查最简单的方法,如果页面是用视觉作曲家 - 这是您在内容vc_row简码。

$post = get_post();
if ( $post && preg_match( '/vc_row/', $post->post_content ) ) {
    // Visual composer works on current page/post
}

4
投票

你可以用is_plugin_active检测:

if ( is_plugin_active( 'js_composer/js_composer.php' ) ) {
     //your code here
}

0
投票
if( defined( 'WPB_VC_VERSION' ) ) { ... }

奇迹般有效。我正在寻找一个可以隐藏当你得到WPBakery页面构建与商业主题bundeled插件,避免用户的混乱发生的唠叨屏幕。如果有人能需要一个片断:

// hide nag screen of WP Bakery Visual composer if found
if( defined( 'WPB_VC_VERSION' ) ) {
    if(!isset($_COOKIE['vchideactivationmsg_vc11'])) {
        setcookie('vchideactivationmsg', '1', strtotime('+3 years'), '/');
        setcookie('vchideactivationmsg_vc11',  WPB_VC_VERSION, strtotime('+3 years'), '/');
     }
}

钩子进入admin_init,你是好去!

© www.soinside.com 2019 - 2024. All rights reserved.