Плагин называется Complex Meta Fields.

Страница на WordPress.org — https://wordpress.org/plugins/complex-meta-fields/

Плагин позволяет конструировать наборы мета полей для постов разных типов.

Зачем нужен этот плагин?

Предположим у вас есть post type, отвечающий за Компании, пусть это будет company. В то же время вам необходимо для каждой Компании добавлять несколько Дочерних Компаний, информация о которых укладывается в 3 поля: 1) Название, 2) Адрес и 3) Тип. Очевидно, нет смысла создавать дополнительный post type для Дочерних Компаний и скать способ их связать с основной Компанией. В такой ситуации плагин нам и поможет.

Настройка

Плагин отличается простотой. Сразу после установки страница настройки полей выглядит так:

Страница настройки полей

Добавим набор полей, который и будет у нас Дочерней Компанией:

Добавляем набор полей

 

  1.  Нажимаем кнопку чтобы создать новый набор;
  2.  Заполняем название набора;
  3. Выбираем post type, для которого будет использоваться данный набор (у меня не было Компаний, поэтому я оставил Posts).

Заметьте, что поле Slug создается автоматически. Это поле понадобится, когда дело дойдет до вывода этих данных на странице Компании.

Далее, нам нужно добавить 3 поля, которыми будет охарактеризоваться Дочерняя Компания:

QY2Lp6dIQGNv26[1]

  1. Нажимаем кнопку для добавления новых полей, нам нужно 3;
  2. Заполняем имена полей (слаги снова генерируются автоматически);
  3. Выбираем нужные типы для полей. В нашем случае первые два это обычные текстовые поля, а поле Тип пусть будет выпадающим списком с вариантами выбора;
  4. Обратите внимание, что при выборе некоторых типов полей появляются дополнительные настройки. Заполняем варианты выбора для выпадающего списка.

Настройка набора полей закончена, сохраняем настройки нажатием на кнопку Save All:

Готово

После сохранения настроек отобразится список наборов полей в свернутом виде. Для редактирования набора достаточно нажать его название.

 

Использование полей

После настройки можно приступать к добавлению Компаний и их Дочерних под-Компаний. На странице редактирования Компании появится дополнительный метабокс с название нашего набора:

Метабокс

Заполняем основную информацию, и с помощью кнопки Add New добавляем нужное нам количество Дочерних Компаний:

Добавление

  1. Добавляем нужное количество Дочерних Компаний;
  2. Заполняем предустановленные нами поля.

Далее просто публикуем Компанию.

 

Отображение на 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(); ?>