我正在使用CMB2's select来拉入一个帖子列表,用户可以在自定义元框中从中进行选择。
我已经在选项数组中添加了一个“空白”选项,但我不知道如何将其设置为默认选项(即。<option selected="selected" value="">I'm blank</option>)。
我需要这样做,这样我才能使用if语句,声明如果字段为空,则不在站点上显示输出框。现在,即使用户没有明确选择一个选项,也会传递一个带有值的选项。
下面是meta box代码:
$link_post_types = array('charter', 'page');
$meta_boxes['ms_metabox'] = array(
'id' => 'ms_metabox',
'title' => __( 'Page Links', 'cmb2' ),
'object_types' => array( 'page' ),
'context' => 'normal',
'priority' => 'high',
'show_names' => true,
'fields' => array(
array(
'name' => __( 'Page Link', 'cmb2' ),
'desc' => __( 'Choose the page this will link to', 'cmb2' ),
'id' => $prefix . 'page_link',
'type' => 'select',
'options' => ms_get_posttype_options($link_post_types),
),
),
);
function ms_get_posttype_options($argument) {
$get_post_args = array(
'post_type' => $argument,
'posts_per_page' => -1,
'orderby' => 'type',
'order' => ASC
);
$options = array();
foreach ( get_posts( $get_post_args ) as $post ) {
$post_type = get_post_type( $post->ID);
$title = get_the_title( $post->ID );
$permalink = get_permalink( $post->ID);
$options[] = array(
'name' => $title . ' : ' . $post_type,
'value' => $permalink,
);
}
$empty_option[] = array(
'name' => 'Please select an option',
'value' => '',
);
$options = array_merge($empty_option, $options);
return $options;
}有一个default参数,但当我尝试像示例中那样应用它时,它不起作用。
谢谢你的帮助!
发布于 2014-10-08 07:26:27
我已经想了一半了。我遇到问题的帖子是我在添加空白选项之前就已经处理过的旧帖子--当我创建新帖子时,默认选项是空白的(因为它是合并中的第一个数组)。
不过,如果有人有更安全的解决方案,我很想听听!
发布于 2016-03-22 01:20:22
您可以将以下内容添加到meta box字段数组中:
show_option_none' => truehttps://stackoverflow.com/questions/26207091
复制相似问题