2015-03-02 50 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