我有一些使用可视化作曲家创建的内容,我想将其中的一些内容包装在一个短代码中
visual composer elements
[is_mobile]visual composer elements wrapped in shortcode[/is_mobile]
other visual composer elements
请问怎么办?感谢
答案 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_create
和content_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帮助我解决了这个问题,尽管它相当稀疏。