3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ACFの投稿オブジェクト(post object)を複数選択にしたときの抽出

Posted at

いきさつ

ある商品を投稿した際に、その商品を使った例を別のカスタム投稿で作った時
その商品が使われているカスタム投稿一覧を表示させたかった

投稿オブジェクト選択が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/

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?