WordPress как на ладони
rgbcode is looking for WordPress developers. Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Добавление полей к терминам таксономии

Advanced Custom Fields (ACF)

В этом гайде рассмотрим процесс создание произвольных полей для терминов любой таксономии и вывода их значений в шаблоне темы.

Терминами могут быть рубрики (категории), метки (теги) или произвольной таксономии, к примеру рубрики товаров WooCommerce, их атрибуты и так далее.

Чтобы зарегистрировать пользовательскую таксономию используйте register_taxonomy(), а также читайте о том, что же такое таксономии в WordPress.

Добавление полей

С помощью Advanced Custom Fields добавлять произвольные поля для терминов таксономий очень просто, вот что нужно сделать:

  • В пункте меню "Custom Fields" выбрать подпункт "Add New", чтобы создать новую группу произвольных полей.
  • Добавьте нужные типы полей, которые хотите видеть при добавлении и редактировании термина.
  • В секции «Locations» выберите условие, чтобы группа полей отображалась для терминов нужной таксономии. К примеру, на скриншоте ниже выбрано условие показа группы полей для рубрик.
Добавление группы полей к терминам таксономии
Добавление группы полей к терминам таксономии

Редактирование полей

После того, как группа полей создана и указано, для каких терминов таксономии их показывать, можно при добавлении нового или редактировании старого увидеть наши поля и указать значения. В нашем примере это стандартные рубрики WordPress.

Редактирование произвольных полей у Рубрики
Редактирование произвольных полей у Рубрики

Отображение значений полей

Чтобы вывести значения полей, нужно отредактировать код шаблона вывода архивной страницы таксономии, к примеру для Рубрик это category.php, для меток - tag.php или же общий шаблон taxonomy.php/archive.php. В зависимости от вашей темы, вы также можете использовать фильтры или части шаблона для кастомизации.

Чтобы легко определить, какой файл редактировать, прочитайте статью Иерархия файлов темы (шаблона).

Настройка HTML-кода для таксономии WordPress может быть легко выполнена путем редактирования файла category.php, tag.php или taxonomy.php в вашей теме. В зависимости от вашей темы вы также можете использовать шаблонные части или фильтры для настройки HTML.

В нашем случае мы произвольные поля добавили к Рубрикам, поэтому мы будем редактировать файл category.php, используя тему Twenty Seventeen. В этом шаблоне мы выведем картинку для рубрики сразу после шапки сайта виде бэкграунда и зададим цвет заголовков у постов.

<?php
/**
 * Шаблон вывода архивной страницы Рубрики
 *
 * @link https://wp-kama.ru/handbook/theme/theme-files-hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header();

// Получаем данные текущего термина (рубрики)
$term = get_queried_object();

// Получаем значения произвольных полей
$image = get_field('image', $term);
$color = get_field('color', $term);

?>
<style type="text/css">

	.entry-title a {
		color: <?php echo $color; ?>;
	}

	<?php if( $image ): ?>
	.site-header {
		background-image: url(<?php echo $image['url']; ?>);
	}
	<?php endif; ?>

</style>
<div class="wrap">

	<?php // Далее идёт оставшийся код шаблона ?>

В итоге получим следующий результат:

Добавление изображение рубрики и цвета заголовков постов

Вывод полей определенного термина

Если нужно вывести значение произвольного поля в не шаблона термина, то воспользуйтесь следующими вариантами, указывая их вторым аргументом в функциях get_field()/the_field():

Пример Формат Описание
category_123 $taxonomy . '_' . $term_id Строка содержит название таксономии и ID термина.
term_123 term_' . $term_id Строка содержит слово term и ID термина. Добавлено в версии 5.5.0.
WP_Term Объект термина. Его можно получить множеством способов, например функцией get_term().

Например, пусть у нас есть тестовое поле с именем my-field у стандартных рубрик WordPress и надо вывести его значение:

// 1 вариант
the_field('my-field', 'category_123');

// 2 вариант
the_field('my-field', 'term_123');

// 3 вариант
$term = get_term( 123 );
the_field('my-field', $term);

Авто-встраивание

Когда вы используете типа поля "Визуальный редактор" (WYSIWYG ) для термина таксономии, то авто-встраивание (auto-embed) может не работать. Функция авто-встраивания работает только в постах. То есть, если вывести на странице рубрики во фронт-энде контент поля "Визуальный редактор", в котором есть ссылка на YouTube-ролик, то она не будет преобразована автоматически. Чтобы решить эту проблему используйте следующий код, к примеру, в category.php:

// Переменные
$queried_object = get_queried_object();
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id;

$GLOBALS['wp_embed']->post_ID = $taxonomy . '_' . $term_id;
1 комментарий
    Войти