我曾经为WPBakery Page Builder开发了一个带有插件的wordpress插件,随着时间的推移,我从它的用户那里得到了一些建议,所以决定将其中一些构建到我的插件中......
我试图添加一个新元素“Container”(https://getbootstrap.com/docs/4.3/layout/overview/#containers),它几乎可以像 WPBakery Page Builder 中已经存在的“Section”元素一样工作,但有点更少的选择。
您可以在以下链接中查看我为实现上述目标而编写的代码... https://github.com/gitfaraz/WPBakery-Page-Builder-for-Twitter-Bootstrap-Themes/blob/master/bootstrap4 /bs_container.php
以下是该文件中的代码...
add_action('init', 'bs_container');
function bs_container() {
class WPBakeryShortCode_Bs_Container extends WPBakeryShortCodesContainer{
// Element Init
public function __construct(){
add_action('vc_before_init', [$this, 'mapping']);
add_shortcode('bs_container', [$this, 'output']);
}
public function mapping(){
vc_map(array(
'name' => esc_html__('Container', 'js_composer'),
'base' => 'bs_container',
'class' => 'vc_main-sortable-element',
'show_settings_on_create' => false,
'category' => esc_html__('Bootstrap', 'js_composer'),
'icon' => 'vc_icon-vc-section',
'description' => esc_html__('Group multiple rows in container', 'js_composer'),
'is_container' => true,
'js_view' => 'VcSectionView',
// 'as_parent' => array(
// 'only' => '',
// ),
// 'as_child' => array(
// 'only' => '', // Only root
// ),
'params' => array(
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Full height section?', 'js_composer' ),
'param_name' => 'full_height',
'description' => esc_html__( 'If checked section will be set to full height.', 'js_composer' ),
'value' => array( esc_html__( 'Yes', 'js_composer' ) => 'yes' ),
),
array(
'type' => 'el_id',
'heading' => esc_html__( 'Section ID', 'js_composer' ),
'param_name' => 'el_id',
'description' => sprintf( esc_html__( 'Enter element ID (Note: make sure it is unique and valid according to %sw3c specification%s).', 'js_composer' ), '<a href="https://www.w3schools.com/tags/att_global_id.asp" target="_blank">', '</a>' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Disable section', 'js_composer' ),
'param_name' => 'disable_element',
// Inner param name.
'description' => esc_html__( 'If checked the section won\'t be visible on the public side of your website. You can switch it back any time.', 'js_composer' ),
'value' => array( esc_html__( 'Yes', 'js_composer' ) => 'yes' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
'group' => esc_html__( 'Design Options', 'js_composer' ),
)
)
));
}
public function output($atts, $content = NULL ) {
$output = ('<div class="container">'.do_shortcode( shortcode_unautop( $content ) ).'</div>');
return $output;
}
}
new WPBakeryShortCode_Bs_Container();
}
我遇到的问题是它没有按我的意愿添加到后端。当我尝试将其添加到后端时,它会添加包装在我不希望发生的 ROW 和 COLUMN 中。我希望它像 WPBakery Page Builder 已经可用的 SECTION 元素一样添加到后端...
如果可以,请从https://github.com/gitfaraz/WPBakery-Page-Builder-for-Twitter-Bootstrap-Themes下载并安装插件文件,以便您更好地理解问题,以便能够提供帮助我以更好的方式实现我想要的。
我知道有人可以以最好的方式帮助我,我很乐意将他/她/他们的名字添加到我的 Wordpress 插件页面上的贡献者和开发者部分的列表中。
我可以使用 'vc_map_update()' ( https://kb.wpbakery.com/docs/inner-api/vc_map_update/ ) 更改已经存在的 SECTION 元素,但这可能会让 WPBakery Page Builder 用户感到恼火,因此想要完全添加新的和独立的 CONTAINER 元素。