Visual Composer将短代码嵌套在容器中

时间:2018-08-08 14:02:47

标签: wordpress visual-composer

我刚刚使用vc_map为wordpress网站创建了一个嵌套的简码。

效果很好,非常简单。

我的父母的简码是“ simple_table”,我的孩子的简码是“ simple_table_row”。

[simple_table param="foo"]
   [simple_tablerow param="another_foo"]
   [simple_tablerow param="another_foo"]
   [simple_tablerow param="another_foo"]
[/simple_table]

我可以将我的简码添加到页面的根部或行中。

但是,我无法在其他容器中添加标签,游览,手风琴或Pageable容器。我嵌套的简码未出现在元素列表中。我已经创建了一些简单的简码,可以在这些特定情况下正常工作。

这是我的vc_map:

vc_map( array(
    "name" => "Simple_table",
    "description" => "Simple_table",
    "base" => "simple_table",
    "class" => "simple_table",
    "content_element" => true,
    "is_container" => true,
    'as_parent' => array('only' => 'simple_tablerow'),
    "show_settings_on_create" => true,
    "icon" => "simple_table_icon", 
    "category" => __('Content', 'js_composer'),
    "js_view" => 'VcColumnView',
    "params" => array(
                    array(
                        'type' => 'param_group',
                        'value' => '',
                        'param_name' => 'cols',
                        "heading" => "Cols",
                        'params' => array(
                            array(
                                'type' => 'textfield',
                                "holder" => "div",
                                'value' => '',
                                'heading' => 'Data',
                                'param_name' => 'data',
                                'admin_label' => true,
                            ),
                            array(
                                'type' => 'textfield',
                                'value' => '',
                                'heading' => 'Style',
                                'param_name' => 'style',
                            ),
                            array(
                                'type' => 'textfield',
                                'value' => '',
                                'heading' => 'Class',
                                'param_name' => 'class',
                            )
                        )
                    ),
                    array(
                      "type" => "checkbox",
                      "class" => "",
                      "heading" => "hide_header",
                      "param_name" => "hide_header"
                  ),
                    array(
                         "type" => "textfield",
                         "holder" => "",
                         "class" => "",
                         "heading" => "Class",
                         "param_name" => "class"
                    ),
      ),
    )
);

vc_map( array(
    "name" => "Simple_tablerow",
    "description" => "simple_tablerow",
    "base" => "simple_tablerow",
    "class" => "simple_tablerow",
    "content_element" => true,
    "as_child" =>  array('only' => 'simple_table'),
    "show_settings_on_create" => true,
    "icon" => "hide_header",
    "category" => __('Content', 'js_composer'),
    "params" => array(
        array(
            'type' => 'param_group',
            'value' => '',
            'param_name' => 'cols',
            "heading" => "Cols",
            'params' => array(
                array(
                    'type' => 'textfield',
                    'value' => '',
                    'heading' => 'Data',
                    'param_name' => 'data',
                    'admin_label' => true,
                ),
                array(
                    'type' => 'textfield',
                    'value' => '',
                    'heading' => 'Style',
                    'param_name' => 'style',
                ),
                array(
                    'type' => 'textfield',
                    'value' => '',
                    'heading' => 'Class',
                    'param_name' => 'class',
                )
            ),
        ),
        array(
            'type' => 'textfield',
            'value' => '',
            'heading' => 'Class',
            'param_name' => 'class',
        )
    ),
    )
);

如何在标签,游览,手风琴或Pageable容器等容器中添加可用的嵌套短代码?

注意:参数“ allowed_container_element”似乎是原因,但是如何修改该值?

1 个答案:

答案 0 :(得分:2)

希望您已经找到了答案,因为它有点旧了,但是我自己正在寻找答案,所以出现了。

此文档站点可能对您有用https://kb.wpbakery.com/docs/developers-how-tos/nested-shortcodes-container/

如果我不得不猜测,似乎您忘记了扩展WPBakeryShortCodesContainer

的底部的最后一点代码
//Your "container" content element should extend WPBakeryShortCodesContainer class to inherit all required functionality
if ( class_exists( 'WPBakeryShortCodesContainer' ) ) {
  class WPBakeryShortCode_Your_Gallery extends WPBakeryShortCodesContainer {
  }
}
if ( class_exists( 'WPBakeryShortCode' ) ) {
  class WPBakeryShortCode_Single_Img extends WPBakeryShortCode {
  }
}