マルチサイト全体を検索対象としたときページ送りがうまくいかない
-
お世話になります。
親サイト、子サイトのすべてを検索対象にする作業をしています。【WordPressのマルチサイト全体で検索できるようにする】
http://kazu69.net/blog/memo/1749上のサイトを参考に、全体を検索できるようになりました。
ただ、検索結果が「1ページに表示する最大投稿数」を超えた場合に正しい件数が表示できなかったので、以下のコードをsearch.phpに追加し、すべての検索結果を表示できるようになりました。
function search_multisite($query_string) {
add_action( ‘pre_get_posts’, ‘my_pre_get_posts’ );
function my_pre_get_posts( $query ) {
$query->set( ‘posts_per_page’, -1 );
}しかし、たとえば22件の検索結果があったとき、1ページにすべての検索結果が表示されてしまいます。
1ページの表示数は10件にして、ページ送りで次のページを表示させたいのですが、うまくいきません。
うまくページ送りができる方法はありますでしょうか。現在のsearch.phpのコードは以下のようなものになります。よろしくお願いいたします。
<?php // 検索クエリを取得 $search_result = get_search_query(); // マルチサイト内を検索 $search_results = search_multisite($search_result); function search_multisite($query_string) { add_action( 'pre_get_posts', 'my_pre_get_posts' ); function my_pre_get_posts( $query ) { $query->set( 'posts_per_page', -1 ); } // 文字列エンコード $query_string = esc_attr($query_string); $search_result = array(); // ネットワーク上のブログを取得 $blogs = get_blogs_of_user( 1, true); foreach ( $blogs as $blog ): // ブログを切り替える switch_to_blog($blog->userblog_id); // 切り替えたブログでqueryを実行 $search = new WP_Query( array( 's' => $query_string ) ); if ($search->found_posts > 0): foreach ( $search->posts as $post ): // 投稿記事に関連するグローバル変数を設定する setup_postdata($post); array_push($search_result, $post); endforeach; endif; endforeach; return $search_result; restore_current_blog(); } ?> <h2>検索結果</h2> <p>“<?php the_search_query(); ?>”に関連する検索の結果 (<?php echo count($search_results); ?> 件)</p> <?php foreach ( $search_results as $post ) : ?> <!--検索結果のループ--> <div class="searchList"> <div class="article"> <h3><a href="<?php echo $post->guid; ?>"><?php the_title(); ?></a></h3> <p><?php global $post; $con = strip_tags( $post->post_content ); $con = mb_substr( $con, 0, 100 ); echo $con . '...';?></p> <p class="detail"><a href="<?php echo $post->guid; ?>">詳細はこちら</a></p> </div> </div> <!--/検索結果のループ--> <?php endforeach;wp_reset_query();?>
3件の返信を表示中 - 1 - 3件目 (全3件中)
3件の返信を表示中 - 1 - 3件目 (全3件中)
- トピック「マルチサイト全体を検索対象としたときページ送りがうまくいかない」には新たに返信することはできません。