カスタムフィールドをキーにして投稿を取得する処理をする必要があったのですが、いろんな方に助けられたのと、まだまだ使いそうなので、メモです。
カスタムフィールドをキーにして投稿を取得
カスタムフィールドのキーや値をキーにしてget_posts()で投稿(post)を取得する
$args = array( 'post_type' => 'post', 'meta_key' => 'subtitle', 'meta_value' => '(キーワード)' ); $post_list = get_posts( $args );
複数のカスタムフィールドをキーにしてget_posts()で投稿(post)を取得する
$args = array( ‘post_type’ => ‘news’, ‘meta_query’ => array( array( ‘key’ => ‘url’, ‘value’ => ‘www.sandalot.com’ ), array( ‘key’ => ‘area’, ‘value’ => null, ‘compare’ => ‘!=’ ) ) ); $post_list = get_posts( $args );
カスタムフィールドの値を取得する際には、meta_compareを使う。
meta_compare には、『>=』『>』『<』『<=』『LIKE』などが使用可能。
LIKEは、SQLで使うのと同じで、前後方一致で指定の値を取得できる。LIKE %hoge% の意味。
参考)
get_postsで、複数のカスタムフィールドをキーにして検索・取得する方法 | sand a lot Web & Music Create [札幌]
カスタムフィールドの値(meta_value)でソート
orderby=meta_valueを指定する
$args = array( 'post_type' => 'post', 'meta_key' => 'subtitle', 'meta_value' => '(キーワード)', 'orderby' => 'meta_value' ); $post_list = get_posts( $args );
参考)
【wordpress】カスタムフィールドの値(meta_value)でソート |制作現場のコードストック||つながるねっと
複数の投稿タイプを取得する
複数の投稿タイプから投稿を取得する場合。
post_typeに指定する内容をカスタムポストの配列にする
$my_posts= get_posts(array( 'post_type' => array('post','item'), 'numberposts' => 10 ));
参考)
“get_posts()で複数の投稿タイプが混在した記事一覧を作る | NeGiMeMo.net”
指定のカスタムフィールドでソート
指定のカスタムフィールドでソートしたい場合は、meta_query を使って検索条件にカスタムフィールドを指定すればできる模様。
$args = array( 'post_type' => '投稿タイプ' , 'orderby' => 'meta_value' , 'meta_key' => 'ソートさせたいカスタムフィールドのキー' , 'order' => 'ASC' , 'meta_query' => array( array( 'key'=>'検索条件に入れたいカスタムフィールドのキー1', 'value'=>'値1', 'compare'=>'=', ), array( 'key'=>'検索条件に入れたいカスタムフィールドのキー2', 'value'=>'値2', 'compare'=>'=', ), 'relation'=>'AND' ) ); query_posts( $args );
参考)
複数のカスタムフィールドを条件にして、かつカスタムフィールドでソート | げんげんブログ
ソートキーを複数のカスタムフィールドに設定する方法
データベースから取得する際に、複数のカスタムフィールドをキーにソートしたいということもあるかと思いますが、その方法です。
$args = array( 'meta_query' => array( 'relation' => 'AND' ,'meta_price' => array( 'key' => 'price' ,'value' => '1000' ,'type' => 'numeric' ,'compare' => '>' ) ,'meta_release' => array( 'key' => 'release' ,'value' => '2013-01-01' ,'type' => 'date' ,'compare' => '>' ) ) ,'orderby' => 'meta_release meta_price date' ); $query = new WP_Query( $args );
参考)
WordPress 4.2 から可能になった、カスタムフィールドの複数ソート
みなさん、すごいすね、情報ありがとうございますm(_ _)m