はONLYクエリ文字列パラメータを使用しては不可能です。ただし、たとえば、start_date
およびend_date
パラメータの存在をチェックし、クエリを適切に変更するプラグインやテーマで関数を作成することができます。
これらの関数を 'pre_get_posts'のフィルタとして追加し、作成する2つの新しいパラメータが存在するかどうかを確認します。このような何か、それを行う必要があり、あなたのテーマののfunctions.phpファイルに追加:どのようになります。今
//Add in our new custom query vars first
function add_query_vars_filter($vars){
$vars[] = "end_date";
$vars[] = "start_date";
return $vars;
}
add_filter('query_vars', 'add_query_vars_filter');
function parse_date_range_query_string($query){
$start_date = get_query_var('start_date', 1900);
$end_date = get_query_var('end_date', date("Y"));
if (!is_admin()) {
$query->set('date_query', array(
array(
'after' => array(
'year' => $start_date,
'month' => 1,
'day' => 1
),
'before' => array(
'year' => $end_date,
'month' => 12,
'day' => 31
),
'inclusive' => true
),
)
);
}
}
add_filter('pre_get_posts', 'parse_date_range_query_string');
、example.com/?start_date=2014 & END_DATE = 2016のようなURLが
UPDATEを動作するはずですがこれはYYYY-MM-DD形式の文字列で動作しますか? Date_queryのbeforeとafterパラメータは、私が上記で使用した年、月、日の配列の代わりにタイムスタンプ文字列を取ることができるので、わずかな変更です。次のような機能に変更するだけです:
function parse_date_range_query_string($query){
$start_date = get_query_var('start_date', '1900-01-01');
$end_date = get_query_var('end_date', date("Y-m-d"));
if (!is_admin()) {
$query->set('date_query', array(
array(
'after' => $start_date,
'before' => $end_date,
'inclusive' => true
),
)
);
}
}
すごい、どうもありがとうございました。これはすべてのPHPの時刻形式で動作しますか(たとえば、YYYY-MM-DD形式を反映するように日付(「Y」)ビットを変更した場合)? – MultiformeIngegno
年、月、日を別々の変数に解析しなければならないので、私の正確な例はうまくいかないでしょう。 YYYY-MM-DD形式の日付でどのように動作するかを示すために私の答えを更新します –