Intereting Posts
пользовательский пул для пользовательского типа сообщения Добавление слайд-шоу Javascript на главную страницу Список авторов, основанный на недавнем активном Как выполнить простой PHP-скрипт в WP (я не думаю, что здесь применяется wp_enque_script) Измените существующую метку в панели администратора с чем-то еще Виджет без DIV-обертки Пользовательский тип заголовка задается другим настраиваемым типом сообщения Как я могу получить список последних сообщений за пределами моей установки WP? Отображать данные, когда категория пуста Запустите два wordpress в одном домене Безопасность пользовательских функций WordPress Добавить действие, которое будет срабатывать при обновлении опубликованного сообщения Сообщения категории отображаются в локальной установке, они не отображаются на живом сервере проблема с esc_attr (ob_get_clean ()) Программно изменить автора сообщения

Отображение настраиваемого поля и значения на странице

У меня есть продукты со списком настраиваемых значений полей, которые загружаются через CSV, но не все продукты имеют значение для каждого настраиваемого поля, так как это поле не относится к этому продукту. Я хочу иметь возможность вызывать каждое соответствующее имя настраиваемого поля и его значение на странице для каждого продукта.

Я использую это, которое отображает значение настраиваемого поля (только) на странице:

<?php echo get_post_meta( get_the_ID(), 'current_promotions', true ); ?> 

Однако я хотел бы указать имя поля и значение для каждого продукта, где это необходимо.

Может ли кто-нибудь помочь?

Вы можете использовать <?php the_meta(); ?> <?php the_meta(); ?> чтобы сделать это (id, который вы хотите распечатать внутри цикла).

Из Кодекса:

Это простая встроенная функция для отображения пользовательских полей для текущего сообщения, известного как «пост-мета» (хранится в таблице wp_postmeta). Он форматирует данные в неупорядоченный список (см. Вывод ниже).

Он должен использоваться из цикла или в файле темы, который обрабатывает данные из одного сообщения (например, single.php). the_meta () будет игнорировать meta_keys (то есть имена полей), которые начинаются с подчеркивания.

Итак, это:

 <p>Meta information for this post:</p> <?php the_meta(); ?> 

Выведет это:

 <ul class='post-meta'> <li><span class='post-meta-key'>your_key:</span> your_value</li> ... other fields </ul> 

Конечно, вы также можете сделать что-то вроде этого (гораздо проще настроить этот код):

 if ( $keys = get_post_custom_keys($post_id) ) { // $post_id is ID of your post echo "<ul class='post-meta'>\n"; foreach ( (array) $keys as $key ) { $keyt = trim($key); if ( is_protected_meta( $keyt, 'post' ) ) continue; $values = array_map('trim', get_post_custom_values($key)); foreach ( $values as $k=>$value ) { if ( $value == '' ) { // or whatever is your way to find if value is irrelevant unset($values[$k]); } } $value = implode($values,', '); echo apply_filters('the_meta_key', "<li><span class='post-meta-key'>$key:</span> $value</li>\n", $key, $value); } echo "</ul>\n"; } не if ( $keys = get_post_custom_keys($post_id) ) { // $post_id is ID of your post echo "<ul class='post-meta'>\n"; foreach ( (array) $keys as $key ) { $keyt = trim($key); if ( is_protected_meta( $keyt, 'post' ) ) continue; $values = array_map('trim', get_post_custom_values($key)); foreach ( $values as $k=>$value ) { if ( $value == '' ) { // or whatever is your way to find if value is irrelevant unset($values[$k]); } } $value = implode($values,', '); echo apply_filters('the_meta_key', "<li><span class='post-meta-key'>$key:</span> $value</li>\n", $key, $value); } echo "</ul>\n"; }