Вывод произвольных полей ACF
Рассмотрим вывод произвольных полей, созданных в Advanced Custom Fields для WordPress. А так же, как вывести произвольные поля для терминов таксономии, например, "Рубрики" в шаблоне category.php

Содержание:
- текст, число, область текста, файл, медиа;
- изображение:
- галерея;
- повторитель;
- объект записи;
- группа;
- вывод поля, если оно заполнено;
- вывод полей для другой страницы;
- вывод полей для терминов таксономии;
- вывод полей для профиля пользователя;
- страница с опциями ACF;
Типы полей - текст, число, область текста, файл, медиа
Чтобы вывести текст, область текста, число, файл или медиа, воспользуйтесь кодом ниже.
<?php the_field('имя_поля'); ?>
Тип поля - «Изображение»
Ссылка на изображение (URL)
Данный способ вывода изображения не позволяет вывести дополнительные данные об изображении. Только URL. Используйте следующий код.
<img src="<?php the_field('имя_поля_с_изображением'); ?>" />
ID изображения
При выборе формата вывода - ID изображения, используется функция wp_get_attachment_image().
$id_image = get_field('имя_поля');
$size = 'full'; // (thumbnail, medium, large, full или свой)
if ( $id_image ) {
echo wp_get_attachment_image( $id_image, $size );
}
Ещё пример.
<?php $id_img = wp_get_attachment_image_src(get_field('имя_поля_изображения'), 'medium'); ?>
<img
src="<?php echo $id_img[0]; ?>"
alt="<?php echo get_the_title(get_field('имя_поля_изображения')); ?>"
/>
Массив изображения
$image_array = get_field('имя_поля_изображения');
if ( $image_array ) { ?>
<img
src="<?php echo esc_url($image_array['url']); ?>"
alt="<?php echo esc_attr($image_array['alt']); ?>"
/>
<?php } ?>
- <?php echo esc_url($image_array['url']); ?> - вывод URL изображения (полный размер);
- <?php echo esc_url($image_array['sizes']['thumbnail']); ?> - вывод URL изображения (thumbnail, medium, large или кастомный);
- <?php echo esc_attr($image_array['alt']); ?> - вывод alt изображения;
- <?php echo esc_attr($image_array['title']); ?> - вывод заголовка изображения;
- <?php echo esc_html($image_array['caption']); ?> - вывод подписи изображения.
Тип поля - «Галерея»
Рассмотрим возвращаемый формат - массив изображения.
<?php
$img_gallery = get_field('имя_галереи');
if ($img_gallery) { ?>
<?php foreach( $img_gallery as $img ) { ?>
<img
src="<?php echo esc_url($img['sizes']['medium']); ?>"
alt="<?php echo esc_attr($img['alt']); ?>"
/>
<?php } ?>
<?php } ?>
Использование очень похоже на вывод изображений, за исключением использования цикла foreach().
Тип поля - «Повторитель»
Для вывода повторителя, используйте код ниже.
<?php
if ( have_rows('имя_поля_повторителя') ) { // если найдены данные
while ( have_rows('имя_поля_повторителя') ) { the_row(); // цикл по строкам данных
the_sub_field('имя_поля_в_повторителе');
}
} else {
// строки не найдены
}
?>
Тип поля - «Объект записи»
Для вывода нескольких значений «Объекта записи» используйте следующий код.
<?php
$post_objects = get_field('имя_поля_объект_записи');
if ($post_objects) : ?>
<?php foreach ($post_objects as $post) : // переменная должна называться $post (ВАЖНО) ?>
<?php setup_postdata($post); ?>
<?php the_title(); ?>
<?php the_excerpt(); ?>
<?php the_field('имя_поля'); ?>
<?php the_permalink(); ?>
<?php endforeach; ?>
<?php wp_reset_postdata(); // ВАЖНО ?>
<?php endif; ?>
Тип поля - «Группа»
Пусть вложенное поле будет изображением. Чтобы вывести вложенные поля с типом «Группа», воспользуйтесь следующим кодом.
<?php $group_fields = get_field('имя_поля_с_типом_группа'); ?>
<?php if ($group_fields) { ?>
<?php foreach ($group_fields as $key => $item) { ?>
<?php if ($item) { ?>
<img
src="<?php echo esc_url($group_fields[$key]['sizes']['large']); ?>"
alt="<?php echo esc_attr($group_fields[$key]['alt']); ?>"
class="responsive"
>
<?php } ?>
<?php } ?>
<?php } ?>
Вывод поля ACF только при условии, что оно заполнено
Для выполнения проверки заполнено ли поле, используйте get_field().
<?php if ( get_field('имя_поля') ) { ?>
<?php the_field('имя_поля'); ?>
<?php } ?>
Вывод полей ACF с другой страницы
Для вывода полей с другой страницы нужно просто добавить id необходимой страницы/записи.
$page_id = 485;
<?php the_field('имя_поля', $page_id); ?>
Вывод поля для родительской страницы.
$mypost_Query = new WP_Query([запрос]);
if ( $mypost_Query->have_posts() ) {
while ( $mypost_Query->have_posts() ) { $mypost_Query->the_post();
$parent_id = get_the_ID(); // id текущей страницы
$q = new WP_Query( [
'posts_per_page' => -1,
'post_type' => 'тип_записи',
'post_parent' => $parent_id
] );
echo "<ul>";
if ( $q->have_posts() ) {
if ( have_rows('prices_services', $parent_id) ) {
while ( have_rows('prices_services', $parent_id) ) { the_row(); ?>
<li><?php the_sub_field('block_price'); ?></li>
<?php }
}
<?php }
echo "</ul>";
}
}
Вывод полей ACF из терминов таксономии
Если мы создадим произвольное поле для элемента таксономии рубрики.

Оно (поле) у нас благополучно появится в рубриках

Но когда мы захотим его вывести в шаблоне рубрики category.php, то у нас ничего не получится.
Необходимо использовать следующий код.
# Получаем текущий термин таксономии
$term = get_queried_object();
# Получаем и записываем значения произвольных полей в переменные
$var_main_title = get_field('главный_заголовок', $term);
$var_video1 = get_field('видео1', $term);
$var_video2 = get_field('видео2', $term);
# Выводим
<?php echo $var_main_title; ?>
<?php echo $var_video1; ?>
<?php echo $var_video2; ?>
Вывод полей ACF для профиля пользователя
Выведем ACF поля, созданные для вкладки профиль пользователя страницы «Пользователи».

Получение поля для текущего пользователя.
$user_id = get_the_ID();
$field = get_field('имя_поля', 'user_' . $user_id);
Вывод поля для пользователя с id = 8.
the_field('имя_поля', 'user_8');
Страница опций ACF
Для создания страницы опций ACF добавьте следующий код в functions.php:
if (function_exists('acf_add_options_page')) {
acf_add_options_page(array(
'page_title' => 'Настройки темы',
'menu_title' => 'Настройки темы',
'menu_slug' => 'theme_settings',
));
}
Теперь необходимо создать нужные поля. Переходим в «Группы полей». Выбираем «Отображать группу полей, если» - Формы - Страница с опциями равно Настройки темы. И добавляеете поля как обычно.
Вывод полей «Страницы опций»
Для вывода полей, заполненных на странице опций, используйте код:
<?php the_field('имя_поля', 'option'); ?>
Вложенные страницы с опциями
Более сложный пример с вложенными страницами:
if (function_exists('acf_add_options_page')) {
acf_add_options_page(array(
'page_title' => 'Настройки темы',
'menu_title' => 'Настройки темы',
'menu_slug' => 'theme_settings',
'redirect' => false
));
acf_add_options_sub_page(array(
'page_title' => 'Логотипы',
'menu_title' => 'Логотипы',
'parent_slug' => 'theme_settings',
'menu_slug' => 'theme_settings_logo',
));
acf_add_options_sub_page(array(
'page_title' => 'Социальные сети',
'menu_title' => 'Социальные сети',
'parent_slug' => 'theme_settings',
'menu_slug' => 'theme_settings_social',
));
}
Дополнительные плюшки
- Шпаргалка по работе с WordPress.
- Шпаргалка по работе с WooCommerce.
- Как скрыть пункты меню в админке WordPress, изменить их порядок - статья.
- Как установить свой логотип при входе в админку WordPress вместо стандартного.
- Подборка лучших плагинов для WordPress на 2021 год.
Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.
Статьи из данной категории:
Комментарии
- Комментариев пока нет.