Intereting Posts
регистрация нового jQuery после wp_deregister_script () не работает Показать сообщения Как удалить /index.php/ из URL-адреса Сортировка сообщений по имени пользовательской таксономии Как добавить параметр боковой панели и полной ширины в редакторе сообщений Показывать определенные термины из пользовательской таксономии, но исключать «родительские» термины? Запросы Active DB в WordPress? Пользовательские роли пользователя не применяются. SELECT-запрос с подготовкой и заполнителем для строки Как троичный оператор работает в сообщении цикла wordpress? Сайт WordPress, чтобы иметь возможность подключаться к данным на локальной машине пользователя Максимальное изменение размера загружаемого файла в php.ini игнорируется. Как удалить ограничение размера загрузки? Адрес URL-адреса WordPress продолжает отбрасывать www Проверяет ли Worpdress URL-адреса в статье и запрашивает их через GET? URL сайта всегда перед другими URL-адресами

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

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

$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'] все еще появляется. Как я могу скрыть заголовок метабокса, если нет значений?

Вы можете добавить еще один простой цикл 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 } } }