Intereting Posts
Доступ к теме и использование дистрибутива GPL-адаптера? Изменение размера шрифта на основе определенного шрифта через javascript Две отдельные страницы портфолио Файл wp-comments-post.php возвращает пустую страницу Добавить класс post в пользовательский цикл (WP_QUERY) Поиск в соответствующей категории в wordpress Лучший способ удаления метаданных пользователя во время удаления плагина? Передача URL-адресов каналов с помощью «&» на fetch_feed ()? Как настроить Связанные страницы Большие размеры на одной странице? Можно ли вытащить и отобразить одно изображение, ориентированное на ландшафт? Дублировать «Страницы» в меню администратора Создание поля ввода, необходимого с точки зрения WP Динамический радарный график на основе введенных пользователем значений Обновление wp_options с массивом на save_post приводит к дублированию записей Где создается экземпляр WP_Query (при работе с темами)?

Отображать название метабокса для настраиваемых полей со значениями

Я использую несколько групп метаболизма в своих письмах. В моих функциях я регистрирую несколько обменных ящиков:

$prefix = 'dbt_'; $meta_boxes = array(); $meta_boxes[] = array( 'id' => 'general_information', 'title' => 'General Information', 'pages' => array('post', 'page', 'link'), // multiple post types, accept custom post types 'context' => 'normal', // normal, advanced, side (optional) 'priority' => 'high', // high, low (optional) 'fields' => array( array( 'name' => 'Name', 'id' => $prefix . 'name', 'type' => 'text', 'std' => 'default value here' ), array( 'name' => 'Manufacturer', 'id' => $prefix . 'manufacturer', 'type' => 'text', 'std' => '' ) $meta_boxes[] = array( 'id' => 'measurements', 'title' => 'Measurements', 'pages' => array('post', 'page', 'link'), // multiple post types, accept custom post types 'context' => 'normal', // normal, advanced, side (optional) 'priority' => 'high', // high, low (optional) 'fields' => array( array( 'name' => 'Length', 'id' => $prefix . 'length', 'type' => 'text', 'std' => '' ), array( 'name' => 'Width', 'id' => $prefix . 'width', 'type' => 'text', 'std' => '' ) ..etc 

В моей теме я показываю имя и значения каждого поля в каждой группе метаболизма. Цель состоит в том, чтобы поля, сгруппированные по обмену, в противном случае я бы просто использовал get_post_custom($post_id) .

Код в single.php:

 global $meta_boxes; foreach ( $meta_boxes as $metabox ) { echo $metabox['title']; foreach ( $metabox['fields'] as $field ) { $meta = get_post_meta($post->ID, $field['id'], true); //get post meta from each metabox if(!isset($meta[0])) continue; //display only fields with values echo $field['name']; echo $meta ? $meta : $field['std']; //show value or default value } } 

Если, например, у метабокса нет полей со значениями, заголовок метабокса $metabox['title'] все еще появляется. Как я могу скрыть заголовок метабокса, если нет значений?

Solutions Collecting From Web of "Отображать название метабокса для настраиваемых полей со значениями"

Вы можете добавить еще один простой цикл foreach, чтобы проверить, есть ли у вас какие-либо значения:

 foreach ( $meta_boxes as $metabox ) { $has_value = false foreach ( $metabox['fields'] as $field ) { $meta = get_post_meta($post->ID, $field['id'], true); if(!isset($meta[0])){ $need_title = true; break; } } if ($has_value){ echo $metabox['title']; foreach ( $metabox['fields'] as $field ) { $meta = get_post_meta($post->ID, $field['id'], true); //get post meta from each metabox if(!isset($meta[0])) continue; //display only fields with values echo $field['name']; echo $meta ? $meta : $field['std']; //show value or default value } } }