将可视化作曲元素包装在短代码中

时间:2016-03-30 19:54:49

标签: wordpress wordpress-plugin

我有一些使用可视化作曲家创建的内容,我想将其中的一些内容包装在一个短代码中 visual composer elements [is_mobile]visual composer elements wrapped in shortcode[/is_mobile] other visual composer elements

请问怎么办?感谢

1 个答案:

答案 0 :(得分:1)

我相信你需要注册" Visual Composer的短代码。未注册的短代码会使Visual Composer感到困惑;它并不真正知道如何处理它们,所以它忽略了它们或用它们做了奇怪的事情(在我的例子中,我试图用未注册的短代码包装的内容最终在页面的顶部)。

所以在下面:

    编辑页面时,
  • name显示在Visual Composer元素的网格中。您还可以使用它将短代码添加到VC Container类(WPBakeryShortCodesContainer)。
  • base是您的短代码名称 - 在您的示例is_mobile
  • as_parent表示您的容器可以作为子容器接受哪些短代码。我把它设置为"除了"没有 - 意味着它接受所有Visual Composer短代码作为孩子。您也可以将其设置为" only"并列出您希望作为孩子的特定短代码(例如,如果您只想让人们显示或隐藏图片库)。
  • 对我来说并不重要的事情:我不确定为什么,但我能够使用is_container作为真或假。这对我的情况没有任何影响。 show_settings_on_createcontent_element可能与您的目的无关,但如果您想了解更多内容,则会解释here on VC documentation for vc_map

这会使用Visual Composer注册您的短代码:

vc_map( array(
    "name" => __("Is Mobile", "my-text-domain"),
    "base" => "is_mobile", // your shortcode name
    "as_parent" => array('except' => ''), // Use only|except attributes to limit child shortcodes (separate multiple values with comma)
    "content_element" => true,
    "show_settings_on_create" => false,
    "is_container" => true,
    "params" => array(
        // you can add params same as with any other content element
        // i didn't have any options to add onto my element; i was just trying
        // to show or hide content based on WP conditions irrelevant to VC
    ),
    "js_view" => 'VcColumnView'
) );

这使得您的短代码通过扩展默认的VC容器短代码类来充当容器(即,接受其他VC元素作为子代)。它似乎使用上面代码段中的name作为连接。

if ( class_exists( 'WPBakeryShortCodesContainer' ) ) {
    class WPBakeryShortCode_Is_Mobile extends WPBakeryShortCodesContainer {
    }
}
关于VC文档的

This page帮助我解决了这个问题,尽管它相当稀疏。