2015-03-21 2 views
1

У меня есть 2 пользовательских типа сообщений с именем clients и casestudies. Я пытаюсь создать мета-поле на clients типах сообщений, которые будут иметь выпадающий список с заголовками всех сообщений из типа сообщения casestudies. Это приведет к тому, что страница, отображающая изображение с clients, будет перенаправлена ​​в соответствующее сообщение casestudies, если выбор сделан из выпадающего списка.Выпадающий список Wordpress metabox не сохраняется

Я следовал за этот учебник, чтобы получить мета коробку, вместе взятые: http://code.tutsplus.com/tutorials/how-to-create-custom-wordpress-writemeta-boxes--wp-20336

Это мета-код коробки у меня в файле functions.php:

add_action('add_meta_boxes', 'cd_meta_box_add'); 
function cd_meta_box_add() 
{ 
    add_meta_box('my-meta-box-id', 'My First Meta Box', 'cd_meta_box_cb', 'clients', 'side', 'default'); 
} 

function cd_meta_box_cb($post) 
{ 
$values = get_post_custom($post->ID); 
$selected = isset($values['my_meta_box_select']) ? esc_attr($values['my_meta_box_select'][0]) : ”; 
    ?>  
    <p> 
     <label for="my_meta_box_select">Select which case study this logo will link to when it is clicked:<br /><br /></label> 
     <select name="my_meta_box_select" id="my_meta_box_select" style="width:100%;"> 
      <option value="No case study">No case study</option> 
       <?php 
       $casestudies = array('post_type' => 'casestudies', 'orderby' => 'title', 'order' => 'asc',); 
       $casestudiesloop = new WP_Query($casestudies); 
       while ($casestudiesloop->have_posts()) : $casestudiesloop->the_post(); 
        ?> <option value="<?php the_title(); ?>" <?php selected($selected, $casestudies['the_title']); ?> ><?php the_title(); ?></option> 
      <?php 
       endwhile; 
        ?> 
     </select> 
    </p> 
    <?php  
} 

add_action('save_post', 'cd_meta_box_save'); 
function cd_meta_box_save($post_id) 
{ 
    if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; 

    if(!isset($_POST['meta_box_nonce']) || !wp_verify_nonce($_POST['meta_box_nonce'], 'my_meta_box_nonce')) return; 

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

    if(isset($_POST['my_meta_box_select'])) 
     update_post_meta($post_id, 'my_meta_box_select', esc_attr($_POST['my_meta_box_select'])); 
} 

Мета окно правильно на правильный тип сообщения, но когда я обновляю сообщение, он не сохранит данные.

Спасибо.

ответ

0

У вас нет скрытого поля. Функция сохранения ничего не вернет.

<input type="hidden" name="meta_box_nonce" id="meta_box_nonce" value="<?php echo wp_create_nonce('my_meta_box_nonce'); ?>" /> 

UPDATE:

Так что ваша cd_meta_box_cb функция будет

<?php 
    function cd_meta_box_cb($post) 
    { 
     $values = get_post_custom($post->ID); 
     $selected = isset($values['my_meta_box_select']) ? esc_attr($values['my_meta_box_select'][0]) : ”; 
     ?> 
     <p> 
      <label for="my_meta_box_select">Select which case study this logo will link to when it is clicked:<br /><br /></label> 
      <select name="my_meta_box_select" id="my_meta_box_select" style="width:100%;"> 
       <option value="No case study">No case study</option> 
        <?php 
        $casestudies = array('post_type' => 'casestudies', 'orderby' => 'title', 'order' => 'asc',); 
        $casestudiesloop = new WP_Query($casestudies); 
        while ($casestudiesloop->have_posts()) : $casestudiesloop->the_post(); 
         ?> <option value="<?php the_title(); ?>" <?php selected($selected, $casestudies['the_title']); ?> ><?php the_title(); ?></option> 
       <?php 
        endwhile; 
         ?> 
      </select> 
     </p> 
     <input type="hidden" name="meta_box_nonce" id="meta_box_nonce" value="<?php echo wp_create_nonce('my_meta_box_nonce'); ?>" /> 
     <?php 
    } 
?> 
+0

, похоже, не поможет. Я проверил 'wp_metadata', и там нет идентификатора' my_meta_box_select', поэтому он ничего не сохраняет. –

+0

Только что отредактировал мой пост. Пожалуйста, просмотрите его. –

+0

ОК, поэтому теперь он сохраняется в таблице 'wp_metadata', но при загрузке сообщения из типа сообщений' clients' выпадающее меню не выбирает текущее значение. Есть идеи по этому поводу? У меня возникли проблемы с выбором '> 'для правильной отображения. –

Смежные вопросы