У меня есть 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']));
}
Мета окно правильно на правильный тип сообщения, но когда я обновляю сообщение, он не сохранит данные.
Спасибо.
, похоже, не поможет. Я проверил 'wp_metadata', и там нет идентификатора' my_meta_box_select', поэтому он ничего не сохраняет. –
Только что отредактировал мой пост. Пожалуйста, просмотрите его. –
ОК, поэтому теперь он сохраняется в таблице 'wp_metadata', но при загрузке сообщения из типа сообщений' clients' выпадающее меню не выбирает текущее значение. Есть идеи по этому поводу? У меня возникли проблемы с выбором ' Php ($ selected, $ casestudies ['the_title']); ?>> php the_title(); ?> 'для правильной отображения. –