いきさつ
ある商品を投稿した際に、その商品を使った例を別のカスタム投稿で作った時
その商品が使われているカスタム投稿一覧を表示させたかった
投稿オブジェクト選択が1つのみのとき
ACFのガイドどおりにすすめていきます
single-post-object
<?php
$args = array(
'post_type' => 'cpt_courses',
'posts_per_page' => -1,
'meta_key' => 'course_tutors',
'meta_value' => '86'
);
// query
$wp_query = new WP_Query( $args );
// loop
while( $wp_query->have_posts() )
{
$wp_query->the_post();
the_title();
// ...
}?>
投稿オブジェクトが複数選択可能な時
どうやらメタデータの参照元が配列になっているせいで、上記の方法だと抽出できないようだ
下記のように**'compare' => 'LIKE'
を使う**と抽出できるようになりました
multi-post-object
$args = array(
'post_type' => 'cpt_courses',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'course_tutors',
'value' => '86',
'compare' => 'LIKE'
))
);
またsingleページのとき、その投稿が選んだカスタム投稿を抽出する場合
multi-post-object-selected
$args = array(
'post_type' => 'cpt_courses',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'course_tutors',
'value' => '"' . get_the_ID() . '"',
'compare' => 'LIKE'
))
);
とすれば抽出されます。
まとめ
wp_queryのmeta_queryでフィルターする際に、値が配列だったときは'compare' => 'LIKE'
で解決できるかもしれません
思ったように絞れないときに試してみてはいかがでしょうか
参照元:https://www.advancedcustomfields.com/resources/querying-relationship-fields/