При работе с WordPress для простых решений я часто не заморачиваюсь, ставлю плагины для создания произвольного типа записей Custom Post Type UI (CPTUI)и всеми известный Advanced Custom Field(ACF). Так вот понадобилось мне как то в шаблоне вывести такой тип записей с отбором по полю ACF содержащий объект записи.
Дело простое:
- Гуглим
- Читаем гайд из официальной документации. Если конкретнее раздел 1. Single custom field value
- Убеждаемся что не работаем.
- Пишем свой костыль
Вот своим костылем их хотелось бы поделиться, ибо на поиск верного решения я потратил неприлично много времени, для такой простой задачки. Ниже мой код, думаю и без комментариев все понятно
<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.