WordPressにおいて、記事一覧を表示する際にget_posts
を利用することが多いです。
このget_posts
では、投稿タイプやカテゴリーで対象の記事を絞り込むことができるのはもちろんですが、投稿の内容でも絞り込みが可能です。
さらに、「Advanced Custom Fields(ACF)」というカスタムフィールド管理のプラグインで追加した入力欄の値でもフィルタリングできます。
フィールドタイプ「Group」のサブフィールドの値で絞り込み
get_posts
のパラメータである、meta_query
のkey
に『[グループ名]_[サブフィールド名]』で指定します。
例えば、「yearmonth」というグループの、「year」というサブフィールドがあった場合、以下で絞り込みが可能です。
$args = array( 'meta_query' => array( array( 'key' => 'yearmonth_year', 'value' => 2021, ), ), ); $myposts = get_posts( $args );
グループ名に「_(アンダースコア)」を含む場合も同様です。
この場合、単純に『year_month_year』のようになります。
さらに、同じグループのサブフィールド、「month」も条件に加えたい場合、以下のように指定可能です。
$args = array( 'meta_query' => array( array( 'key' => 'year_month_year', 'value' => 2021, ), array( 'key' => 'year_month_year', 'value' => 5, ), ), ); $myposts = get_posts( $args );
フィールドタイプ「Group」ではなく通常のフィールド入力値での絞り込み
meta_query
のkey
に『フィールド名』のみで指定します。
例えば、「ゲスト(guest)」というフィールドに、「ヤムチャ」と登録された投稿のみを絞り込む方法は以下の通りです。
$args = array( 'meta_query' => array( array( 'key' => 'guest', 'value' => 'ヤムチャ', ), ), ); $myposts = get_posts( $args );
これで天津飯やピッコロがゲストの投稿は表示されません。