Примеры кода ACF

Ниже представлены примеры реализации кода с использованием плагине 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'],
        ));
    }
}
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии