[WordPress] カスタムフィールドの値で条件を絞り込み、ループで記事一覧を表示する

 2017.08.10  2017.11.02

カスタムフィールドの値で条件を絞り込み、該当記事を表示させる方法です。

「news」というカテゴリーの、カスタムフィールドのチェックボックスにチェックを入れた記事だけ、TOPページに最新記事のタイトルを5件表示する

という場合のコードを考えてみます。

「show_index」というチェックボックスのカスタムフィールドを作成し、 選択肢は「show : TOPページにこの記事を表示する」とします。「show」が値で「TOPページにこの記事を表示する」がラベルになります。以下の画像はプラグイン「Advanced custom fields」を使っています。

カスタムフィールドの値で条件を絞り込み

Advanced custom fieldsで上記のようにカスタムフィールドを作成すると、投稿画面に「TOPページにこの記事を表示する」というチェックボックスが出現するので、TOPページに表示させたい記事にはチェックボックスにチェックを入れます。

カスタムフィールドの値で条件を絞り込み

サンプルコード

カスタムフィールドのパラメーター

meta_key
カスタムフィールドのキー
meta_value
カスタムフィールドの値(文字列として比較)
meta_compare
‘meta_value’のテスト演算子。使える値は ‘!=’, ‘>’, ‘>=’, ‘<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'NOT EXISTS', 'REGEXP', 'NOT REGEXP' および 'RLIKE' で、デフォルトは '=' 。

サンプルコードでは、meta_keyが「show_index」、meta_valueが「show」、meta_compareが「LIKE」となっています。
チェックボックスにチェックを入れると、カスタムフィールドの値が「show」になるので、「show_index」と「show」が一致した記事が出力されます。

meta_query」を使うと、配列をひとつまたは複数入れることができるので、複数のカスタムフィールドを組み合わせて検索することも可能です。 配列の「relation」パラメータで、複数のカスタムフィールドの関係を指定します。使える値は ‘AND’と’OR’です。デフォルトは’AND’です。

meta_queryのパラメーター

meta_query
(配列)カスタムフィールドの複雑なパラメータ
relation
(文字列)meta_query の中に2つ以上の配列を入れたときの関係を指定します。使える値は’AND’と’OR’です(デフォルト:’AND’)。ひとつだけ配列を入れるときは使用不可。
key
(文字列)カスタムフィールドのキー
value
(文字列|配列)カスタムフィールドの値
compare
(文字列)テスト演算子。使える値は ‘=’, ‘!=’, ‘>’, ‘>=’, ‘<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS'および'NOT EXISTS'で、デフォルトは'='。
type
(文字列)カスタムフィールドの値のタイプ。使える値は’NUMERIC’, ‘BINARY’, ‘CHAR’, ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNSIGNED’で、デフォルトは’CHAR’。

カスタムフィールドのパラメーターは以下のリンク先に詳しく書かれています。

ACFを更に使いやすくするACF Pro

ACF Proは、次世代バージョンのACFとACFを更にパワーアップさせた高機能なアドオン(The Repeater Field、The Gallery Field、The Flexible Content Field、Clone field、Options Pages)がパッケージ化された有料プラグインです。便利な機能が多く搭載されているのでオススメです!

参考記事Advanced Custom Fieldsを更に使いやすく!ACF Proを選ぶ理由と機能紹介