Ниже представлены примеры реализации кода с использованием плагине Advanced Custom Fields: Вывести поле, Вернуть поле в переменную, Использование условных выражений, Работа с Массивами, Работа с Изображениями, Работа с Повторителем и т.д.
Вывести поле
<p><?php the_field('field_name'); ?></p>
Вернуть поле в переменную
<?php $variable = get_field('field_name'); // сделать что-то с переменной $variable ?>
Использование условных выражений
get_field вернет false, если (value == “” || value == null || value == false)
<?php if(get_field('field_name')) { echo '<p>' . get_field('field_name') . '</p>'; } ?>
Работа с Массивами
для типов полей: чекбокс, выбор, взаимоотношение, повторитель
<?php $values = get_field('field_name'); if($values) { echo '<ul>'; foreach($values as $value) { echo '<li>' . $value . '</li>'; } echo '</ul>'; } // смотрим, что внутри массива var_dump($values); ?>
Работа с Изображениями – Ссылка
<img src="<?php the_field('image_test'); ?>" alt="" />
Работа с Изображениями – ID
При помощи ID вы можете получить нужный размер изображения и даже имя файла!
<?php $image = wp_get_attachment_image_src(get_field('image_test'), 'full'); ?> <img src="<?php echo $image[0]; ?>" alt="<?php echo get_the_title(get_field('image_test')) ?>" />
Работа с Повторителем
Повторитель может получить get_field или the_repeater_field / the_sub_field
<?php if( have_rows('repeater_field_name') ): ?> <ul> <?php while( have_rows('repeater_field_name') ): the_row(); ?> <li>sub_field_1 = <?php the_sub_field('sub_field_1'); ?>, sub_field_2 = <?php the_sub_field('sub_field_2'); ?>, etc</li> <?php $sub_field_3 = get_sub_field('sub_field_3'); // сделать что-то с переменной $sub_field_3 ?> <?php endwhile; ?> </ul> <?php endif; ?>
Выбор случайных значений из Повторителя
<?php $rows = get_field('repeater_field_name'); $row_count = count($rows); $i = rand(0, $row_count - 1); echo $rows[ $i ]['sub_field_name']; ?>
Получение значения с другой страницы
<?php $other_page = 12; ?> <p><?php the_field('field_name', $other_page); ?></p> <?php // вернуть в переменную $variable = get_field('field_name', $other_page); // повторитель: обратите внимение, что для the_sub_field и get_sub_field не нужен параметр post_id if( have_rows('repeater_field_name', $other_page) ): ?> <ul> <?php while( have_rows('repeater_field_name', $other_page) ): the_row(); ?> <li>sub_field_1 = <?php the_sub_field('sub_field_1'); ?>, sub_field_2 = <?php the_sub_field('sub_field_2'); ?>, etc</li> <?php $sub_field_3 = get_sub_field('sub_field_3'); // сделать что-то с переменной $sub_field_3 ?> <?php endwhile; ?> </ul> <?php endif; ?>
Query posts со значениями ACF
Для примера, найдем Events (тип записи) в котором находиться location (произвольное поле — выбор) равное Melbourne (значение поля).
Больше информации тут (англ.): codex.wordpress.org/Template_Tags/get_posts.
<?php $posts = get_posts(array( 'numberposts' => -1, 'post_type' => 'event', 'meta_key' => 'location', 'meta_value' => 'melbourne' )); if($posts) { echo '<ul>' foreach($posts as $post) { echo '<li><a href="' . get_permalink($post->ID) . '">' . get_the_title($post->ID) . '</a></li>'; } echo '</ul>'; } ?>
Вывод значений на сайте
Это базовый пример использования.
<?php /** * Template Name: Home Page */ get_header(); ?> <div id="primary"> <div id="content" role="main"> <?php while ( have_posts() ) : the_post(); ?> <h1><?php the_field('custom_title'); ?></h1> <img src="<?php the_field('hero_image'); ?>" /> <p><?php the_content(); ?></p> <?php endwhile; ?> </div><!-- #content --> </div><!-- #primary --> <?php get_footer(); ?>
Есть ли у ACF шорткоды?
Да, Вы, можете использовать шорткоды. Например, выведем the_field() с помощью шорткода:
Вы можете также передать $post_id для получения значения из определенной записи.
Страница настроек ACF (acf_add_options_page())
//https://www.advancedcustomfields.com/resources/acf_add_options_page/ add_action('acf/init', 'my_acf_op_init'); function my_acf_op_init() { // Check function exists. if( function_exists('acf_add_options_page') ) { // Add parent. $parent = acf_add_options_page(array( 'page_title' => __('Theme General Settings'), 'menu_title' => __('Theme Settings'), 'redirect' => false, )); // Add sub page. $child = acf_add_options_page(array( 'page_title' => __('Social Settings'), 'menu_title' => __('Social'), 'parent_slug' => $parent['menu_slug'], )); } }