Управление выводом глобальных acf-блоков в шаблоне страницы

blue and red cargo containers

В прошлой части мы отредактировали шаблон page.php, чтобы вывести на странице 3 acf-блока помимо основного контента. Данные блоки будут выводится автоматически на всех страницах, которые используют page.php. В этой части мы добавим настройки, которые позволят управлять какие блоки показывать на странице, а какие скрывать.

Создаем группу полей для управления выводом блоков

Чтобы добавить системе гибкости и выбирать какой блок показывать на странице, а какой нет — нам понадобится отдельная группа полей. Для начала сделаем простой вариант, в котором у нас будут 3 «галочки» (acf-поля типа true/false): Показать блок 1, Показать блок 2, Показать форму.

Обратите внимание, что в условиях отображения я указал Шаблон страницы по умолчанию, а расположение группы полей — на боковой панели.

Теперь опции Показать блок 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(); ?>

One Reply

  • С Новым годом! Тоже хотел сегодня что-то опубликовать 🙂 Но там уже расписание до апреля.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *