2014-10-05 19 views
2

Я использую CMB2's select, чтобы вытащить список сообщений, которые пользователь может выбрать из него в настраиваемом мета-окне.Настройка параметра по умолчанию с использованием CMB2 select field type

Я добавил «пустую» опцию в массив параметров, но не могу понять, как сделать эту опцию по умолчанию (то есть <option selected="selected" value="">I'm blank</option>).

Мне нужно сделать это, чтобы я мог использовать оператор if, который говорит, что если поле пустое, не показывайте окно вывода на сайте. Прямо сейчас, даже если пользователь специально не выбрал опцию, пропускается опция со значением.

Вот мета код коробки:

$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 аргумент, но когда я попытался применить его, как в примере, это не сработало.

Спасибо за помощь!

ответ

1

Я на полпути вычислил его. У сообщений, с которыми у меня были проблемы, были старые, где я уже возился со значениями, прежде чем я добавил пустой параметр - когда я создал новые записи, по умолчанию была пустая (так как это был первый массив в слиянии) ,

Если у кого-то есть более надежное решение, я бы хотел его услышать!

0

Вы можете добавить следующие строки в мета окно полей массива:

show_option_none' => true 
Смежные вопросы