タックスクエリ
メタクエリ
に続き
発見しましたよ
date_query
クエリポストや
イズメインクエリなどで
重宝しそう
今回の目的は
ソールドアウトと更新した記事は
30日間はループに表示させるが
30日以降は表示させない
という設定で仕様予定
date_query
//投稿日が一年以上前で、一ヶ月以内に更新された記事を取得 $args = array( 'date_query' => array( array( 'column' => 'post_date_gmt', 'before' => '1 year ago', ), array( 'column' => 'post_modified_gmt', 'after' => '1 month ago', ), ), 'posts_per_page' => -1, ); $query = new WP_Query( $args );
省略時は投稿日時(’post_date’)となっている。’column’には’post_date’、’post_date_gmt’、’post_modified’、’post_modified_gmt’、’comment_date’、’comment_date_gmt’が指定できる。
$query = new WP_Query( array( ‘date_query’=>array( array( ‘inclusive’=>ture, ‘after’=>date(‘Y/m/d’, strtotime(‘-14 days’))) ) ) );
http://www.mspace.info/wordpress-4-251.html
くわしくは
http://codex.wordpress.org/Class_Reference/WP_Query
参考
http://elearn.jp/wpman/column/c20131030_01.html
以下
コードの参照になればとコピペ
//サイトを閲覧している日時に更新されたpostを取得
$today = getdate();
$args = array(
'date_query' => array(
array(
'year' => $today["year"],
'month' => $today["mon"],
'day' => $today["mday"],
),
),
);
$query = new WP_Query( $args );
//今週の記事を取得
$week = date('W');
$year = date('Y');
$query = new WP_Query( 'year=' . $year . '&w=' . $week );
//今週の記事を取得
$args = array(
'date_query' => array(
array(
'year' => date('Y'),
'week' => date('W'),
),
),
);
$query = new WP_Query( $args );
日〜土が1〜7に割り当てられています。
日 = 1
月 = 2
火 = 3
水 = 4
木 = 5
金 = 6
土 = 7
//平日(月〜金)9時〜17時に投稿された記事を取得
$args = array(
'date_query' => array(
array(
'hour' => 9,
'compare' => '>=',
),
array(
'hour' => 17,
'compare' => '<=',
),
array(
'dayofweek' => array( 2, 6 ),
'compare' => 'BETWEEN',
),
),
'posts_per_page' => -1,
);
$query = new WP_Query( $args );
ソースを見ているとcompareには下記の値が使えそうです。BETWEEN、NOT BETWEENあたりは特に便利そうですね。
'=', '!=', '>', '>=', '<', '<=', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'
続いてもう一つ。afterのように英語表記で年月日指定もできますが、beforeのような指定のほうがわかりやすいと思います。
inclusiveはafter, beforeのみに適用されるtrue/falseの値を取るパラメータで、trueであればafterやbefore自体のマッチした投稿を含む、falseであれば含まない、というパラメータになっています。
//2013/1/1〜2013/2/28に投稿された記事を取得
$args = array(
'date_query' => array(
array(
'after' => 'January 1st, 2013',
'before' => array(
'year' => 2013,
'month' => 2,
'day' => 28,
),
'inclusive' => true,
),
),
'posts_per_page' => -1,
);
$query = new WP_Query( $args );
http://makeityourself.org/howto/date_query/