我刚开始使用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
限制?
答案 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,但它很广泛,因此可能会令人困惑。