CSSのキャッシュが残ってしまい、レイアウトが崩れてしまう問題を解決する(MT&WP)

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. 匿名希望
      2017/05/23(火) 23:44:06

      ???「虫のこともお前のこともフィールド上で当たり判定があるオブジェクトとしてしか見てない」

    2. 匿名希望
      2017/05/23(火) 23:44:06

      [ #FileMaker 小ネタ] リスト形式表示のレイアウトの場合、Tabキーによるフィールド(オブジェクト)移動はパート間をまたげない。スクリプトトリガ「OnObjectKeystroke」でTabキー入力でフィールド移動させる必要あり。

    3. 匿名希望
      2017/05/23(火) 23:44:06

      お兄ちゃん,そのcloneの定義だとフィールドの参照先まではコピーされないから,一方のオブジェクト経由でフィールドの参照先を操作したら他方のオブジェクトにも影響があるよね?浅くていいのはお兄ちゃんの知恵だけだよ?

    4. 匿名希望
      2017/05/23(火) 23:44:06

      オブジェクトのフィールドに[]でアクセスしようとしたときもAutoComplete

      この機能は、もうためせるよー

      #io17jp

    5. 匿名希望
      2017/05/23(火) 23:44:06

      フィールドオブジェクト調べてキャラが反応するのはキャラゲーとして信じられる

    記事に戻る

関連記事