日付で検索投稿を探していました。スタックオーバーフローで適切な解決策を見つけることができませんでした。次に、wp_query オブジェクトを出力して、このことを整理しました。それは私のために働いた。私のシナリオでは、タイトルまたは日付で投稿を検索しています。これがフックのコードです。
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
// check if query is a date
$search_query = $query->query['s'];
$date_format = DateTime::createFromFormat('d/M/Y', $search_query);
if ($date_format)
{
$dte = date('j',$date_format->getTimestamp());
$month = date('n',$date_format->getTimestamp());
$year = date('Y',$date_format->getTimestamp());
}
if (isset($dte) && isset($month) && isset($year)) {
unset($query->query['s']);
unset($query->query_vars['s']);
$query->query['date_query'] = array(
array(
'year' => $year,
'month' => $month,
'day' => $dte,
)
);
$query->set('date_query', array(
array(
'year' => $year,
'month' => $month,
'day' => $dte,
)
)
);
}
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
お気づきのとおり、このフィルターは、渡されたパラメーターが文字列か日付かを自動的にチェックします。使用している
$query->set('post_type', 'post')
投稿のみの結果を取得するには、ページもフェッチします。各投稿の下に日付があり、その日付に href を追加できるとします。その日付のすべての投稿を href の最後に取得するには、 ?s=something のような検索パラメーターを追加します
http://my.blog?s=1/Jun/2015
などのテンプレートについては、次のようなデフォルトのテンプレート関数を使用するだけで、独自のカスタムを作成する必要はありませんhave_posts()