サポート » 使い方全般 » 検索結果画面にページャーを設置したい

  • yunyun yunko

    (@ryuunosuke1018)


    現在、search.phpの検索結果画面にページャーを設置したいのですが、方法がしりたいです。

    現状の検索結果のコードは以下になります。

    <?php
        global $wp_query;
        $total_results = $wp_query->found_posts;
        $search_query = get_search_query();
    ?>
    <h2><?php echo $search_query; ?>の検索結果<span>(<?php echo $total_results; ?>件)</span></h2>
    <?php query_posts('posts_per_page=3'); ?>
    
    <?php
    	
    if( $total_results >0 ):
    if(have_posts()):
    while(have_posts()): the_post();
    ?>
    	
    	<!-- imgTextBox -->
    <div class="imgTextBox">
    <?php
      $category = get_the_category();
      $cat_id   = $category[0]->cat_ID;
      $cat_name = $category[0]->cat_name;
      $cat_slug = $category[0]->category_nicename;
    ?>
    <p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span>
    
    <p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
    
    	</div>
    		<!-- imgTextBox -->
    <?php endwhile; endif; else: ?>
     
    <?php echo $search_query; ?> に一致する情報は見つかりませんでした。
     
    <?php endif; ?>

    そして下記のコードは固定ページに設置した新着情報一覧とページャーです。

    <?php
    
    $paged = (int) get_query_var('paged');
    $args = array(
    'posts_per_page' => 14,
    'paged' => $paged,
    'post_type' => array('post','カスタム投稿01','カスタム投稿02'),
    'post_status' => 'publish',
    );
    $the_query = new WP_Query($args);
    if ( $the_query->have_posts() ) :
    while ( $the_query->have_posts() ) : $the_query->the_post();
    ?>
    	
    	<!-- imgTextBox -->
    <div class="imgTextBox">
    <?php
      $category = get_the_category();
      $cat_id   = $category[0]->cat_ID;
      $cat_name = $category[0]->cat_name;
      $cat_slug = $category[0]->category_nicename;
    ?>
    <p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span>
    
    <p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
    
    </div>
    <!-- imgTextBox -->	
    
    <?php endwhile; ?>
    <?php else: ?>
    <?php endif; ?>
    </div>
    
    <div class="pagination">
    <?php
    if ($the_query->max_num_pages > 1) {
    echo paginate_links(array(
    'base' => get_pagenum_link(1) . '%_%',
    'format' => 'page/%#%/',
    'current' => max(1, $paged),
    'total' => $the_query->max_num_pages,
    ));
    }
    ?>

    上記のコードを使ってページャーを検索結果に設置しようと色々とコードをいじったのですが、
    全く表示されませんでした。

    下記はfunctionに記述したページャー用のコードです。

    <?php
    //Pagenation
    function pagination($pages = '', $range = 2)
    {
         $showitems = ($range * 2)+1;//表示するページ数(5ページを表示)
     
         global $paged;//現在のページ値
         if(empty($paged)) $paged = 1;//デフォルトのページ
     
         if($pages == '')
         {
             global $wp_query;
             $pages = $wp_query->max_num_pages;//全ページ数を取得
             if(!$pages)//全ページ数が空の場合は、1とする
             {
                 $pages = 1;
             }
         }
     
         if(1 != $pages)//全ページが1でない場合はページネーションを表示する
         {
     echo "<div class=\"pagenation\">\n";
     echo "<ul>\n";
     //Prev:現在のページ値が1より大きい場合は表示
             if($paged > 1) echo "<li class=\"prev\"><a href='".get_pagenum_link($paged - 1)."'>Prev</a></li>\n";
     
             for ($i=1; $i <= $pages; $i++)
             {
                 if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
                 {
                    //三項演算子での条件分岐
                    echo ($paged == $i)? "<li class=\"active\">".$i."</li>\n":"<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>\n";
                 }
             }
     //Next:総ページ数より現在のページ値が小さい場合は表示
     if ($paged < $pages) echo "<li class=\"next\"><a href=\"".get_pagenum_link($paged + 1)."\">Next</a></li>\n";
     echo "</ul>\n";
     echo "</div>\n";
         }
    }
    ?>
  • トピック「検索結果画面にページャーを設置したい」には新たに返信することはできません。