上記の件について、解決までいけてないのですが、
わかったことがあります。
大きな原因としては、
archive-seminar.php内で、
<?php $query = new WP_Query(array(
'post_type' => 'seminar', /* イベント投稿タイプ */
'posts_per_page' => 8,/* 1ページに表示する記事数 */
'post_status' => 'publish', /* 公開している */
'meta_value' => date('Y/m/d H:i'), /* 現在の日付を基準 */
'meta_key' => 'seminar_start', /* 比較するmeta_key */
'meta_compare' =>'>=', /* meta_keyがvalueより大いものだけ */
'orderby' => 'meta_value', /* ソートはmeta_valueを基準に */
'order' => 'ASC', /* 昇順に並び替え */
'paged' => get_query_var('paged')/* ページネーションできるように */
));
?>
↑と、現在の日付よりも未来日のみを表示させるために、新しい$queryを定義して、
<?php if ( have_posts() ) : ?>
<?php while (have_posts() ) : the_post();?>
だったものを、
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post();?>
に書き換えて、記事として吐き出す内容を変更したことによって、
検索が機能しなくなるようでした。
恐らくですが、この定義よりも上にある検索バーはこの$queryの内容が読めておりません。
archive-○○.phpで定義した新しい$queryからキーワード検索できるような方法がありましたら、教えていただけると助かりますm(__)m
(でも、そうなると過去セミナーは除外されますかね??汗)
調べてもなかなかでてきませんでした。。`
jmani007さん、こんにちは。
WP_Query
の定義の中に検索文字列がある場合に検索パラメータを読み込むようにしてみるなどはいかがでしょうか(未検証)。
参考) Search Parameters
ご参考になれば。
shokun0803さん、ありがとうございます!
試してみたんですが、
<?php $query = new WP_Query(array(
'post_type' => 'seminar', /* イベント投稿タイプ */
'posts_per_page' => 8,/* 1ページに表示する記事数 */
'post_status' => 'publish', /* 公開している */
'meta_value' => date('Y/m/d H:i'), /* 現在の日付を基準 */
'meta_key' => 'seminar_start', /* 比較するmeta_key */
'meta_compare' =>'>=', /* meta_keyがvalueより大いものだけ */
'orderby' => 'meta_value', /* ソートはmeta_valueを基準に */
'order' => 'ASC', /* 昇順に並び替え */
's' => 'keyword',
'paged' => get_query_var('paged')/* ページネーションできるように */
));
?>
これだと、記事の読込み自体がされなくなるようでした。
教えて頂いたのに、申し訳ありません。
もうちょっとやり方がないか自分でも考えてみます。
jmani007さん、こんにちは。
これは…このまま記述されてますか?
's' => 'keyword',
検索した時の URL を見てみれば分かると思いますが、パラメーターにs=
の後に検索文字列が入っていると思います。もしご提示のコードのまま記載したのだとすれば、毎回「 keyword 」という文字列で検索された結果がWP_Query
に入ってくることになるので、記事内に「 keyword 」の文言が使われていなければヒット数 0 で当然ですね…
この'keyword',
の部分に検索文字列があったらその検索文字列を入れるという処理を行わなければ正しい結果にはならないかと思われます。試しにこの'keyword',
の部分に実際に記事内で使われている文言を記載してしてみたら結果が変わるのか試してみてはいかがでしょうか。
WordPress の場合、パラメーターに付加されてきた文字列を取得する関数もありますので、取得した文字列を適切にエスケープして's' => $keyword,
のように指定されるとよろしいかと思います(未検証:注)エスケープは必須です)。
ご参考になれば。