在CMB Metaboxes上添加标签

时间:2015-12-26 01:53:25

标签: javascript php wordpress themes meta

我目前正在使用Github上的CMB元数据作为我的主题 - https://github.com/WebDevStudios/CMB2 - 我的问题是这个插件是否可以支持垂直选项卡,而不是单一的标准wordpress部分。我想添加多个字段或内容组,而不会让用户感到沮丧或困惑。如果不是,我谦虚地问你是否可以帮我一个简短的解释(可能是一个编码结构),我可以自己添加标签作为这个插件的钩子。

提前感谢您的帮助。

此致

1 个答案:

答案 0 :(得分:0)

最近,我们的团队创建了一个解决问题的扩展: GitHub

使用示例:

add_filter( 'cmb2_init', 'example_tabs_metaboxes' );

function example_tabs_metaboxes() {
$box_options = array(
    'id'           => 'example_tabs_metaboxes',
    'title'        => __( 'Example tabs', 'cmb2' ),
    'object_types' => array( 'page' ),
    'show_names'   => true,
);

// Setup meta box
$cmb = new_cmb2_box( $box_options );

// setting tabs
$tabs_setting           = array(
    'args' => $box_options,
    'tabs' => array()
);
$tabs_setting['tabs'][] = array(
    'id'     => 'header',
    'title'  => __( 'Header', 'cmb2' ),
    'fields' => array(
        array(
            'name' => __( 'Title', 'cmb2' ),
            'id'   => 'header_title',
            'type' => 'text'
        ),
        array(
            'name' => __( 'Subtitle', 'cmb2' ),
            'id'   => 'header_subtitle',
            'type' => 'text'
        ),
        array(
            'name'    => __( 'Background image', 'cmb2' ),
            'id'      => 'header_background',
            'type'    => 'file',
            'options' => array(
                'url' => false
            )
        )
    )
);
$tabs_setting['tabs'][] = array(
    'id'     => 'platforms',
    'title'  => __( 'Platforms', 'cmb2' ),
    'fields' => array(
        array(
            'name' => __( 'Title', 'cmb2' ),
            'id'   => 'platforms_title',
            'type' => 'text'
        ),
        array(
            'name' => __( 'Subtitle', 'cmb2' ),
            'id'   => 'platforms_subtitle',
            'type' => 'text'
        ),
        array(
            'id'      => 'platforms',
            'type'    => 'group',
            'options' => array(
                'group_title'   => __( 'Platform {#}', 'cmb2' ),
                'add_button'    => __( 'Add platform', 'cmb2' ),
                'remove_button' => __( 'Remove platform', 'cmb2' ),
                'sortable'      => false
            ),
            'fields'  => array(
                array(
                    'name' => __( 'Title', 'cmb2' ),
                    'id'   => 'title',
                    'type' => 'text'
                ),
                array(
                    'name' => __( 'Description', 'cmb2' ),
                    'id'   => 'description',
                    'type' => 'textarea'
                ),
                array(
                    'name'       => __( 'Link', 'cmb2' ),
                    'id'         => 'link',
                    'type'       => 'text_url',
                    'attributes' => array(
                        'placeholder' => 'http://'
                    )
                ),
                array(
                    'name'    => __( 'Background image', 'cmb2' ),
                    'id'      => 'background',
                    'type'    => 'file',
                    'options' => array(
                        'url' => false
                    )
                )
            )
        )
    )
);
$tabs_setting['tabs'][] = array(
    'id'     => 'reviews',
    'title'  => __( 'Reviews', 'cmb2' ),
    'fields' => array(
        array(
            'name' => __( 'Title', 'cmb2' ),
            'id'   => 'review_title',
            'type' => 'text'
        ),
        array(
            'name' => __( 'Subtitle', 'cmb2' ),
            'id'   => 'review_subtitle',
            'type' => 'text'
        ),
        array(
            'id'      => 'reviews',
            'type'    => 'group',
            'options' => array(
                'group_title'   => __( 'Review {#}', 'cmb2' ),
                'add_button'    => __( 'Add review', 'cmb2' ),
                'remove_button' => __( 'Remove review', 'cmb2' ),
                'sortable'      => false
            ),
            'fields'  => array(
                array(
                    'name' => __( 'Author name', 'cmb2' ),
                    'id'   => 'name',
                    'type' => 'text'
                ),
                array(
                    'name'    => __( 'Author avatar', 'cmb2' ),
                    'id'      => 'avatar',
                    'type'    => 'file',
                    'options' => array(
                        'url' => false
                    )
                ),
                array(
                    'name' => __( 'Comment', 'cmb2' ),
                    'id'   => 'comment',
                    'type' => 'textarea'
                )
            )
        )
    )
);

// set tabs
$cmb->add_field( array(
    'id'   => 'tabs__',
    'type' => 'tabs',
    'tabs' => $tabs_setting
) );
}