2015-03-02 78 views
0

我試圖尋找解決方案,但不能真正找到任何有關的。Wordpress添加元框不保存數據

我創建一個插件,使用不同的帖子類型周圍的各種元框。

此特定元框設計用於在'預訂'帖子類型的添加/編輯屏幕內列出名爲'Apartments'的帖子類型的帖子。它可以將預訂與公寓聯繫起來。

當我點擊發布或更新時,不會保存任何內容,並且該選項默認爲空/ $值。

有什麼想法?

在此先感謝

亞歷

<?php 

function bookingsapartment_add_meta_box() { 

    $screens = array('bookings'); 

    foreach ($screens as $screen) { 

     add_meta_box(
      'bookingsapartment_sectionid', 
      __('Apartment', 'bookingsapartment_textdomain'), 
      'bookingsapartment_meta_box_callback', 
      $screen 
     ); 
    } 
} 
add_action('add_meta_boxes', 'bookingsapartment_add_meta_box'); 


function bookingsapartment_meta_box_callback($post) { 


    wp_nonce_field('bookingsapartment_meta_box', 'bookingsapartment_meta_box_nonce'); 


    $value = get_post_meta($post->ID, 'apartmentname', true); 

    $options = get_posts(
     array(
      'post_type' => 'apartments', 
      'orderby'  => 'title', 
      'order'  => 'ASC', 
      'numberposts' => -1 
     ) 
    ); 
    echo '<label for="bookingsapartment_new_field">'; 
    _e('This is the description', 'bookingsapartment_textdomain'); 
    echo '</label> '; 
    echo '<select class="widefat">'; 
    echo '<option value="' . esc_attr($value) . '" size="25" />' . esc_attr($value) . '</option>'; 
     foreach ($options as $option) { 
      echo '<option id="bookingsapartment_new_field" name="bookingsapartment_new_field" value="' . $option->post_title . '" size="25" />' . $option->post_title . '</option>'; 
     } 

    echo "</select>"; 
} 


function bookingsapartment_save_meta_box_data($post_id) { 


    if (! isset($_POST['bookingsapartment_meta_box_nonce'])) { 
     return; 
    } 


    if (! wp_verify_nonce($_POST['bookingsapartment_meta_box_nonce'], 'bookingsapartment_meta_box')) { 
     return; 
    } 


    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
     return; 
    } 


    if (isset($_POST['post_type']) && 'page' == $_POST['post_type']) { 

     if (! current_user_can('edit_page', $post_id)) { 
      return; 
     } 

    } else { 

     if (! current_user_can('edit_post', $post_id)) { 
      return; 
     } 
    } 


    if (! isset($_POST['bookingsapartment_new_field'])) { 
     return; 
    } 


    $my_data = sanitize_text_field($_POST['bookingsapartment_new_field']); 


    update_post_meta($post_id, 'apartmentname', $my_data); 
} 
add_action('save_post', 'bookingsapartment_save_meta_box_data'); 

?> 

回答

0

解決。

我向選擇標籤添加了名稱和ID值,並且它馬上就起作用了。

echo '<select class="widefat" id="myplugin_new_field" name="myplugin_new_field">'; 
+0

是的,標籤的名稱和標識是實際要告訴WordPress要保存的內容 – MMK 2015-03-02 16:04:42