【WordPress】投稿に設定されているカスタムフィールドの値をすべて取得する【wpdb】
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、WordPressのwpdbを使って、投稿に設定されているカスタムフィールド値のすべて取得する方法をご紹介しています。公開済みの投稿を対象とし、カスタムフィールドのキー(meta_key)を指定して取得する方法になります。
WordPressのwpdbで公開済みの投稿に設定されているカスタムフィールドの値をすべて取得したいんだけど、良い方法ないかな?
上記の疑問にお答えします。
では、解説していきます。実装内容詳細
タイトルと冒頭の説明では何となく伝わらない気が塩田の出、今回実現したいことを簡単にまとめてみます。箇条書きにすると下記の内容となります。
- 公開済みの全投稿に設定されているカスタムフィールドの値を所得する
- カスタムフィールドの指定にはキー
meta_key
を使用する
上記の内容を実現するために、本記事では$wpdb
を使用します。$wpdb
はWordPressのテーブルにある情報をSQL文で取得することができるオブジェクトです。WordPressの関数でも実現できるかもしれませんが、少し思案して上手い方法が思いつかなかったので、素直に$wpdb
を使用することにします。
サンプルソース
下記が今回作成したスクリプトです。使い方は簡単で、上から4行目にあるmeta_keys
の配列にwp_postmeta
テーブルから取得したいmeta_key
を追加するだけです。実行結果は連想配列で受け取るようにしています。SQL文の中にpost_type
を指定する箇所があるので、カスタム投稿の場合は変更してご利用ください。
<?php //meta_key $meta_keys = array( 'meta_key1', 'meta_key2', ); //SQL $query = " SELECT meta_value FROM $wpdb->posts, $wpdb->postmeta WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id AND $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' AND $wpdb->postmeta.meta_key = %s "; //DB問い合わせ foreach($meta_keys as $meta_key){ $result[$meta_key] = $wpdb->get_results($wpdb->prepare($query, $meta_key), ARRAY_A); } var_dump($result);
上記のサンプルソールで本記事で実現したいことは達成できます。取得した値は$result
に代入されますので、必要な値を抽出するなどしてご利用ください。
最後に
$wpdb
はSQL文でWordPressのDBが持っている情報を好きなように取得することができます。SQL文を覚えるための学習コストは必要ですが、今後もWordPressの開発に携わるのであれば覚えておいても良いかもしれません。もし興味がある方は下記の参考書から始められてみてください。
以上、WordPressのwpdbで投稿に設定されているカスタムフィールド値をすべて取得する方法のご紹介でした!