В прошлой части мы отредактировали шаблон page.php, чтобы вывести на странице 3 acf-блока помимо основного контента. Данные блоки будут выводится автоматически на всех страницах, которые используют page.php. В этой части мы добавим настройки, которые позволят управлять какие блоки показывать на странице, а какие скрывать.
Создаем группу полей для управления выводом блоков
Чтобы добавить системе гибкости и выбирать какой блок показывать на странице, а какой нет — нам понадобится отдельная группа полей. Для начала сделаем простой вариант, в котором у нас будут 3 «галочки» (acf-поля типа true/false): Показать блок 1, Показать блок 2, Показать форму.
Обратите внимание, что в условиях отображения я указал Шаблон страницы по умолчанию, а расположение группы полей — на боковой панели.
На данном этапе включение и выключение галочек не приведет ни к какому результату, так как эти опции никак не связаны с файлами темы. Мы это исправим на следующем шаге.
Продолжим редактировать шаблон страницы
Давайте познакомимся с условным оператором if, языка php, который позволит выполнять код, только если выполнено условие. Для этого используется следующий синтаксис:
<?php
if (<условие>) {
<код, который выполнится, только если условие выполняется>
}
?>
В нашем случае условием будет включенная/выключенная галочка, а код, который должен выполниться — вывод acf-поля, который мы написали в прошлом уроке.
Чтобы проверить, включена ли галочка воспользуемся уже известной функцией get_field(). Если в первом аргументе задать имя поля типа true/false то функция вернет 0 или 1, в зависимости от состояния галочки, что отлично подходит в качестве условия оператора if.
Получаем:
<?php
if ( get_field('page_show_1') ) {
the_field('global_block_1',34);
}
?>
И код для всей страницы:
<?php get_header(); ?>
<?php while ( have_posts() ) : the_post(); ?>
<div class="pageContent">
<div class="container">
<div class="row">
<div class="col-sm-12">
<h1 class="pageTitle"><?php the_title(); ?></h1>
</div>
</div><!-- row -->
<div class="row">
<div class="col-sm-8">
<?php
the_content();
if ( get_field('page_show_1') ) {
the_field('global_block_1',34);
}
if ( get_field('page_show_2') ) {
the_field('global_block_2',34);
}
?>
</div><!-- col-sm-8 -->
<div class="col-sm-4">
<?php
get_sidebar();
if ( get_field('page_show_form') ) {
$shortcode = get_field('global_subscribe',34);
echo do_shortcode($shortcode);
}
?>
</div><!-- col-sm-4 -->
</div><!-- row -->
</div><!-- container -->
</div><!-- pageContent -->
<?php endwhile; // end of the loop. ?>
<?php get_footer(); ?>
С Новым годом! Тоже хотел сегодня что-то опубликовать 🙂 Но там уже расписание до апреля.