Advanced Custom Fieldsで選択肢が複数のフィールドをWP_Queryで取り出す

Advanced Custom Fields のフィールドタイプ WordPress

Advanced Custom Fields を使って、カスタムフィールドを活用することが多いのですが、フィールドタイプに「関連」を使うと、ある投稿に関連する、別の投稿を登録することができます。

Advanced Custom Fields のフィールドタイプ

で、その値は、get_field()で取り出すことができます。

戻り値は、配列なので、
Array ( [0] => 12130 )
となります。

WP_Queryで関連元を取り出す

これはこれでOKなのですが、今度は逆に、関連とされた投稿から、関連元を取り出す必要がある場合。

WP_Queryでmeta_keyとmeta_valueに値を入れて取り出すことになるのですが、

これでは取り出せません。
そもそも、get_field()で取り出した値が配列な時点で、無理だろうなー、と思うのですが案の定ですね。

では、そもそも、「関連」フィールドで保存されたmeta_valueはどんな形なのかというと、

と直接SELECTをたたいてみるとこんな感じで、meta_valueには、シリアライズされたデータで保存されてることがわかります。

Array ( [0] => Array ( [post_id] => 16534 [meta_value] => a:1:{i:0;s:5:”12130″;} ) )

なので、普通に、meta_valueで検索しても引っかかりません。
ではどうすればいいかというと、meta_valueそのものは文字列なので、LIKEで見つければいいのではと。

これで関連元のページ一覧を取得できます。

ちなみに、

‘”‘ . $shop_id . ‘”‘

と、わざわざダブルクォーテーションで囲っているのは、たとえば12130 は 121、1213、2130なんかでも引っかかってしまうからです。

タイトルとURLをコピーしました