CMB2的多个show_on限制

时间:2015-05-19 17:10:46

标签: wordpress wordpress-plugin meta-boxes

我刚开始使用CMB2 plugin。据我所知,没有办法对盒子施加多个限制。按帖子类型限制,以及两个内置show_on条件(按Display Options排序),您可以添加custom show_on conditions。但是当涉及{{1}时你只能传递一个带有键/值对的数组。我试过传递一个数组数组,它​​似乎没有用,例如:

show_on

我尝试使用$cmb = new_cmb2_box( array( 'id' => 'slideshow_content_box', 'title' => __( 'Slideshow content' ), 'object_types' => array( 'page' ), 'show_on' => array( array( 'key' => 'id', 'value' => array( 30 ) ), array( 'key' => 'page-template', 'value' => 'page_template.php' ), ), 'context' => 'normal', 'priority' => 'high', 'show_names' => true, 'closed' => false, )); 过滤器进行黑客攻击,但自定义参数似乎被剥离了。

有没有办法合并多个cmb2_show_on限制?

1 个答案:

答案 0 :(得分:1)

我猜这应该被关闭但是对于任何继续观看者,你可以通过' show_on_cb'添加功能。定义条件。

您的解决方案将是:

$cmb = new_cmb2_box( array(
    'id'                => 'slideshow_content_box',
    'title'             => __( 'Slideshow content' ),
    'object_types'      => array( 'page' ),
    'show_on_cb'        => 'add_conditions',
    'context'           => 'normal',
    'priority'          => 'high',
    'show_names'        => true,
    'closed'            => false,
));

//Return true if page template is 'page-template' or id is 30.
function add_conditions() {
    $page_template = get_page_template();
    $page_id = get_the_id();

    if ( $page_template === 'page-template' || $page_id === 30 ) {
        return true;
    }
    return false;
}

还有更多show_on文档here,但它很广泛,因此可能会令人困惑。