2014-10-05 215 views
2

我正在使用CMB2's select來拉取用戶可以在自定義元框中選擇的帖子列表。使用CMB2選擇字段類型設置默認選項

我已經添加了一個「空白」選項的選項數組,但我不知道如何使該默認選項(即<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 
相關問題