【メモ】WPでカスタムフィールドをキーにしてget_posts()でカスタムポストを取得する方法

カスタムフィールドをキーにして投稿を取得する処理をする必要があったのですが、いろんな方に助けられたのと、まだまだ使いそうなので、メモです。

カスタムフィールドをキーにして投稿を取得

カスタムフィールドのキーや値をキーにして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
 
 

↓拡散のお手伝いお願いします