Intereting Posts
Пользователь WordPress, добавленный с идентификатором 0 Неопределенная ошибка post_type на странице Добавить новую страницу исключение mod-rewrite? сохранить #hash в соответствующих URL-адресах? Условные теги или несколько файлов Добавить форму captcha в регистрационную форму woocommerce Использовать шаблон для сообщений с определенной категорией grandparent Как использовать Ajax для отображения новых сообщений в режиме реального времени, на главной странице Как reset_postdata восстанавливает пост основного цикла запроса? WP уже установлен, просит установить Глобальный поиск в мультисайтах, но только с одним дочерним сайтом Ограничить количество сообщений в шаблоне пользовательской категории – разбиение разбивки на страницы Обновление сообщения WordPress или страницы занимает 60 секунд Один сайт в составе Multisite, который будет скрыт (не опубликован) от Public? Включить «Мои блоги» в пользовательской установке Комментарии и проблемы с pingbacks

Как эхо значение поля выбора мета в браузере

Я думаю, что я неправильно повторяю значение выбранного варианта из своего метакаталога select. В браузере ничего не отображается.

Functions.php :

function add_custom_meta_box() { add_meta_box( 'custom_meta_box', 'Custom Meta Box', 'show_custom_meta_box', 'post', 'normal', 'high'); } add_action('add_meta_boxes', 'add_custom_meta_box'); $prefix = 'custom_'; $custom_meta_fields = array( array( 'label'=> 'Map Icon', 'desc' => 'A description for the field.', 'id' => $prefix.'select', 'type' => 'select', 'options' => array ( 'one' => array ( 'label' => 'Option One', 'value' => 'three' ), 'two' => array ( 'label' => 'Option Two', 'value' => 'two' ), 'three' => array ( 'label' => 'Option Three', 'value' => 'three' ) ) ) ); function show_custom_meta_box() { global $custom_meta_fields, $post; echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />'; echo '<table class="form-table">'; foreach ($custom_meta_fields as $field) { $meta = get_post_meta($post->ID, $field['id'], true); echo '<tr> <th><label for="'.$field['id'].'">'.$field['label'].'</label></th> <td>'; switch($field['type']) { case 'select': echo '<select name="'.$field['id'].'" id="'.$field['id'].'">'; foreach ($field['options'] as $option) { echo '<option', $meta == $option['value'] ? ' selected="selected"' : '', ' value="'.$option['value'].'">'.$option['label'].'</option>'; } echo '</select><br /><span class="description">'.$field['desc'].'</span>'; break; } echo '</td></tr>'; } echo '</table>'; } function save_custom_meta($post_id) { global $custom_meta_fields; if (!wp_verify_nonce($_POST['custom_meta_box_nonce'], basename(__FILE__))) return $post_id; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id; if ('page' == $_POST['post_type']) { if (!current_user_can('edit_page', $post_id)) return $post_id; } elseif (!current_user_can('edit_post', $post_id)) { return $post_id; } foreach ($custom_meta_fields as $field) { $old = get_post_meta($post_id, $field['id'], true); $new = $_POST[$field['id']]; if ($new && $new != $old) { update_post_meta($post_id, $field['id'], $new); } elseif ('' == $new && $old) { delete_post_meta($post_id, $field['id'], $old); } } } add_action('save_post', 'save_custom_meta'); 

передний page.php:

Скопировал часть get_post_meta из кода, но, похоже, не работает в цикле, я использую его в:

 remove_action( 'genesis_loop', 'genesis_do_loop' ); add_action( 'genesis_loop', 'be_home_loop' ); function be_home_loop() { echo '<div id="pagewrap"> '; echo '<div id="content">'; while (have_posts()) : the_post(); ?> <div class="entry"> <?php the_title( '<h3>', '</h3>' ); ?> <?php the_content('read more &raquo;'); $key_2_value = get_post_meta( get_the_ID(), 'custom_meta_box', true ); if( ! empty( $key_2_value )) { echo $key_2_value; } 

Solutions Collecting From Web of "Как эхо значение поля выбора мета в браузере"

Я получил ваш «сломанный» код в вашем ответе на работу и объясню, почему. Во-первых, вот отредактированный код, который не работал на вас:

 <?php //Get your post ID with a variable $this_post_id = get_the_ID(); //Removed get function from get_post_meta to make functionality clearer //I tend to avoid nesting functions that are grabbing post information for easier debugging/reading //You need to use the field ID as the parameter in get_post_meta, what you had was the meta box id, not the field itself //Therefore WordPress didn't know what to retrieve since the metabox itself wasn't the custom meta you were grabbing $key_2_value = get_post_meta( $this_post_id, 'custom_select', true ); //Debugging got you an empty string before, uncomment this to see the results now //var_dump($key_2_value); if( ! empty( $key_2_value )) { //This works now - yay! echo $key_2_value; } ?> 

Первое, что я сделал, это избежать вложенных функций внутри функций, поэтому я сделал get_the_ID в переменной. Это облегчает чтение и отладку, если что-то случится, потому что тогда вы можете запускать var_dump по вашим переменным по частям, чтобы убедиться, что вы получаете всю необходимую информацию при устранении неполадок.

Запуск var_dump на $key_2_value дал мне пустую строку. Я запустил var_dump в $this_post_id который работал над идентификатором сообщения, круто, потом я кое-что понял.

Я изменил это:

 get_post_meta( get_the_ID(), 'custom_meta_box', true ); 

К этому:

 get_post_meta( $this_post_id, 'custom_select', true ); 

Если вы посмотрите на свой файл функций, в определении $custom_meta_fields , вы предоставили $custom_meta_fields выбора идентификатор «custom_select»:

 $prefix = 'custom_'; $custom_meta_fields = array( array( 'label'=> 'Map Icon', 'desc' => 'A description for the field.', 'id' => $prefix.'select', //right here! 'type' => 'select', 'options' => array ( 'one' => array ( 'label' => 'Option One', 'value' => 'three' ), 'two' => array ( 'label' => 'Option Two', 'value' => 'two' ), 'three' => array ( 'label' => 'Option Three', 'value' => 'three' ) ) ) ); 

Таким образом, с помощью get_post_meta параметр $key является идентификатором поля post meta. И поэтому у вас было имя вашего мета-поля, custom_meta_box вместо имени самого фактического поля. Как только я изменил это на custom_select, он сработал.

Надеюсь, что это помогло! 🙂

Следующие работы:

 $post_meta_data = get_post_custom($post->ID); echo $post_meta_data['custom_select'][0]; 

Пожалуйста, может кто-нибудь объяснить мне, почему это не работает? Я знаю, что это не так, но не знаю, почему

  $key_2_value = get_post_meta( get_the_ID(), 'custom_meta_box', true ); if( ! empty( $key_2_value )) { echo $key_2_value;