Вывод произвольных полей ACF

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

Типы полей - текст, число, область текста, файл, медиа

Чтобы вывести текст, область текста, число, файл или медиа, воспользуйтесь кодом ниже.

<?php the_field('имя_поля'); ?>

Вывод поля ACF только при условии, что оно заполнено

Для выполнения проверки заполнено ли поле, используйте get_field().

<?php if ( get_field('имя_поля') ) { ?>
    <?php the_field('имя_поля'); ?>
<?php } ?>

Тип поля - «Изображение»

Ссылка на изображение (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 } ?>
  • esc_url($image_array['url']) - вывод URL изображения (полный размер);
  • esc_url($image_array['sizes']['thumbnail']) - вывод URL изображения (thumbnail, medium, large или кастомный);
  • esc_attr($image_array['alt']) - вывод alt изображения;
  • esc_attr($image_array['title']) - вывод заголовка изображения;
  • 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 {
    // строки не найдены

}
?>

Вывод полей 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; ?>
admin
19/03/2020 16:38