Вывести записи произвольного типа с отбором по ACF-field

Вывести записи произвольного типа с отбором по ACF-field

При работе с WordPress для простых решений я часто не заморачиваюсь, ставлю плагины для создания произвольного типа записей Custom Post Type UI (CPTUI)и всеми известный Advanced Custom Field(ACF). Так вот понадобилось мне как то в шаблоне вывести такой тип записей с отбором по полю ACF содержащий объект записи.

Дело простое:

  1. Гуглим
  2. Читаем гайд из официальной документации. Если конкретнее раздел 1. Single custom field value
  3. Убеждаемся что не работаем.
  4. Пишем свой костыль

Вот своим костылем их хотелось бы поделиться, ибо на поиск верного решения я потратил неприлично много времени, для такой простой задачки. Ниже мой код, думаю и без комментариев все понятно

<div class="row">

			
				<?php 
				// args
				$args = array(
					'post_type'		=> 'doctor',
					'meta_query' => array(
						array(
							'key' => 'filial_doctor',
							'value' => $post_filial->ID,
							'compare' => 'LIKE'
						)
					 )
				);
				$doctors = new WP_Query( $args ); 
				var_dump($post_filial->ID);
				?>
				
				<?php if ( $doctors->have_posts() ): ?>
					<h3 class="hestia-title text-center">Врачи клиники</h3>
					<?php while ( $doctors->have_posts() ) : $doctors->the_post(); ?>
						<div class="col-md-4">
							<div class="card card-blog">
								<div class="card-image">

									<?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $doctors->ID ), 'single-post-thumbnail' ); ?>
									<a href="<?php echo $image[0]; ?>">	
										<img class="attachment-hestia-blog size-hestia-blog wp-post-image" src="<?php echo $image[0]; ?>" alt="<?php get_the_title() ?>" title="<?php get_the_title() ?>">										
									</a>
								</div>

								<div class="content">
									<a href="<?php echo(get_permalink()); ?>">
									<h4 class="card-title text-center"><?php the_title(); ?> </h4>
									</a>
									<hr>
									
									<h6 class="category text-info text-center"> 
										<?php  
											$args = array(
												'before' => '',
												'sep'    => ',',
												'after'  => '',
												'template' => '% %l.',
												'term_template' => '<a href="%1$s">%2$s</a>',
											);
											$specialization = the_taxonomies($args);
								
											echo $specialization;
										?>
									</h6>
								</div>

							</div>
						</div>
					<?php endwhile; ?>
				<?php endif; ?>
				<?php wp_reset_query();	 // Restore global post data stomped by the_post(). ?>
			</div>

Особо обращу внимание на следующий момент

					'meta_query' => array(
						array(
							'key' => 'filial_doctor',
							'value' => $post_filial->ID,
							'compare' => 'LIKE'
						)
					 )

‘compare’ => ‘LIKE’ должен быть именно LIKE а не «==» или «=», как я тщетно старался.

Надеюсь кому то поможет решить проблему, ну и себе на заметку на будущее, ибо и дальше намерен использовать ACF.

Вам также может понравиться

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

Ваш адрес email не будет опубликован.

Яндекс.Метрика