LoginSignup
1
2

More than 5 years have passed since last update.

ACFでTaxonomyの返り値オブジェクトに設定してしまった際に、meta_queryで一覧を出したい

Posted at

ACFのオブジェクトの返り値を使って一覧を出したい

アドバンスドカスタムフィールドを使って、記事と別のタクソノミーを連携した際にの記事一覧の出し方について、当たった問題と解決策を書いてきます。

フィールド設定をタームIDにした時

タームIDを使用した際の記事一覧は、

$args = array(
  'meta_query' => array(
    array(
      'compare' => 'LIKE',
      'key'     => "acf_taxonomy" // 設定したキー
      'value'   => 41 // 取得したい値
    )
  )
);

で取得できます。

フィールド設定をオブジェクトにした時

タームIDをオブジェクトにした際、設定したのフィールド名をacf_taxonomyとすると、
ここに入っている値はWP_Termsというオブジェクトが配列で入っています。

ですので、タームIDと同じようにはいきません。

オブジェクトで入っていると説明をしましたが、
記事に入っている情報acf_taxonomyの中身をみてみると

'a:6:{i:0;s:2:"41";i:1;s:2:"56";i:2;s:2:"74";i:3;s:1:"2";i:4;s:1:"4";i:5;s:1:"3";}'

みたいな感じで入っています。

このダブルコーテーションで囲まれてる"41"などが、オブジェクトのterm_idになります。
なので、この文字列に「取得したいIDが、ダブルコーテーションで囲まれて入っていれば取得」という形を取ります。

$args = array(
  'meta_query' => array(
    array(
      'compare' => 'LIKE',
      'key'     => "acf_taxonomy"
      'value'   => '"41"' // "41"という文字列を探す
    )
  )
);

これで特定の値をもった記事を探す事ができます。

もしかしたらタクソノミーだけでなく、投稿とかでもつかえるかも・・・(要検証)

ACFでつまったら

たまに検索しても解決策が見つからない場合があります。
その際、

var_dump( get_post_meta($post->ID,) );

を記事が出力される箇所にいれて、
どのフィールドがどのように入っているのかをみてみると、もしかしたら解決できるかも・・・!

1
2
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
1
2