Плагин называется Complex Meta Fields.
Страница на WordPress.org – https://wordpress.org/plugins/complex-meta-fields/
Плагин позволяет конструировать наборы мета полей для постов разных типов.
Зачем нужен этот плагин?
Предположим у вас есть post type, отвечающий за Компании, пусть это будет company. В то же время вам необходимо для каждой Компании добавлять несколько Дочерних Компаний, информация о которых укладывается в 3 поля: 1) Название, 2) Адрес и 3) Тип. Очевидно, нет смысла создавать дополнительный post type для Дочерних Компаний и скать способ их связать с основной Компанией. В такой ситуации плагин нам и поможет.
Настройка
Плагин отличается простотой. Сразу после установки страница настройки полей выглядит так:
Добавим набор полей, который и будет у нас Дочерней Компанией:
- Нажимаем кнопку чтобы создать новый набор;
- Заполняем название набора;
- Выбираем post type, для которого будет использоваться данный набор (у меня не было Компаний, поэтому я оставил Posts).
Заметьте, что поле Slug создается автоматически. Это поле понадобится, когда дело дойдет до вывода этих данных на странице Компании.
Далее, нам нужно добавить 3 поля, которыми будет охарактеризоваться Дочерняя Компания:
- Нажимаем кнопку для добавления новых полей, нам нужно 3;
- Заполняем имена полей (слаги снова генерируются автоматически);
- Выбираем нужные типы для полей. В нашем случае первые два это обычные текстовые поля, а поле Тип пусть будет выпадающим списком с вариантами выбора;
- Обратите внимание, что при выборе некоторых типов полей появляются дополнительные настройки. Заполняем варианты выбора для выпадающего списка.
Настройка набора полей закончена, сохраняем настройки нажатием на кнопку Save All:
После сохранения настроек отобразится список наборов полей в свернутом виде. Для редактирования набора достаточно нажать его название.
Использование полей
После настройки можно приступать к добавлению Компаний и их Дочерних под-Компаний. На странице редактирования Компании появится дополнительный метабокс с название нашего набора:
Заполняем основную информацию, и с помощью кнопки Add New добавляем нужное нам количество Дочерних Компаний:
- Добавляем нужное количество Дочерних Компаний;
- Заполняем предустановленные нами поля.
Далее просто публикуем Компанию.
Отображение на Front-end
Для отображение полей на странице компании нам поможет небольшой набор функций из API плагина:
cmf_have_meta($slug)
– аналог функцииhave_posts()
. Используется для так называемого Meta Loop.cmf_the_meta($slug)
– аналог функцииthe_post()
. Устанавливает текущий элемент в цикле.cmf_the_field($field_slug)
– печатает поле из текущего элемента цикла.cmf_get_field($field_slug)
– возвращает поле из текущего элемента цикла.
Пример
Рассмотрим пример использования на примере шаблона single.php из темы Twenty Eleven:
<?php /** * Template for displaying all single posts * * @package WordPress * @subpackage Twenty_Eleven * @since Twenty Eleven 1.0 */ get_header(); ?> <div id="primary"> <div id="content" role="main"> <?php while (have_posts()) : the_post(); ?> <?php get_template_part('content-single', get_post_format()); ?> <!-- Complex Meta Fields --> <h3>Child Companies</h3> <?php while (cmf_have_meta('child-company')) : cmf_the_meta('child-company'); ?> <ul> <li><b>Name:</b> <?php cmf_the_field('name'); ?></li> <li><b>Address:</b> <?php cmf_the_field('address'); ?></li> <li><b>Type:</b> <?php cmf_the_field('type'); ?></li> </ul> <?php endwhile; ?> <!-- /Complex Meta Fields --> <?php comments_template('', true); ?> <?php endwhile; // end of the loop. ?> </div><!-- #content --> </div><!-- #primary --> <?php get_footer(); ?>