WordPress分页在搜索结果页面中不起作用

时间:2014-07-02 作者:Payal

我对搜索结果页面的分页有问题。页面链接出现了,但当我点击第2页时,它给了我一个404错误。

第1页:http://templategraphy.com/wp-demo/businessguru/?s=Blog+Image (第1页)

第2页:http://templategraphy.com/wp-demo/businessguru/page/2/?s=Blog+Image (找不到页面)

搜索php

<?php 

            $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
                    $args = array( \'paged\' => $paged );
                    $the_query= new WP_Query($args);

                ?>
        <div>

         <?php  if (have_posts()) : ?>

        <?php while (have_posts()) : the_post(); ?>

        <div id="post-<?php the_ID(); ?>" <?php post_class(\'item\'); ?>>

        <?php

       $featuredImage = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );


       if ( has_post_thumbnail() ) {


        echo \'<a class="single-image link-icon" href="\'.get_the_permalink().\'">\';

       echo \'<img src="\'.$featuredImage.\'" style="width:213px; height:110px;" />\';

        echo \'</a>\';

       }

       ?>


      </div>


    <?php  endwhile; ?>


    <?php
      next_posts_link( \'Older Entries\', $the_query->max_num_pages );
      previous_posts_link( \'Newer Entries\' );
    ?>

   <?php 
    // clean up after our query
    wp_reset_postdata(); 
    ?>
    </div>

    <?php  else : ?>

   <h1 class="title">Not Found</h1>

   <p>Sorry, but you are looking for something that isn\'t here.</p>

   <?php  endif; ?>

  </div>
请提出一些解决方案。

1 个回复
SO网友:Zammuuz

好的,很抱歉只提到链接作为回答。。如果第一个分页链接显示404错误,则应该是永久链接问题。但对u来说,它的第二页肯定是因为一些代码错误。请检查此代码。

/*Loop Pagination - A WordPress script for creating paginated links on archive-type pages.*/

function loop_pagination( $args = array() ) {
global $wp_rewrite, $wp_query;

/* If there\'s not more than one page, return nothing. */
if ( 1 >= $wp_query->max_num_pages )
    return;

/* Get the current page. */
$current = ( get_query_var( \'paged\' ) ? absint( get_query_var( \'paged\' ) ) : 1 );

/* Get the max number of pages. */
$max_num_pages = intval( $wp_query->max_num_pages );

/* Get the pagination base. */
$pagination_base = $wp_rewrite->pagination_base;

/* Set up some default arguments for the paginate_links() function. */
$defaults = array(
    \'base\'         => add_query_arg( \'paged\', \'%#%\' ),
    \'format\'       => \'\',
    \'total\'        => $max_num_pages,
    \'current\'      => $current,
    \'prev_next\'    => true,
    //\'prev_text\'  => __( \'&laquo; Previous\' ), // This is the WordPress default.
    //\'next_text\'  => __( \'Next &raquo;\' ), // This is the WordPress default.
    \'show_all\'     => false,
    \'end_size\'     => 1,
    \'mid_size\'     => 1,
    \'add_fragment\' => \'\',
    \'type\'         => \'plain\',

    // Begin loop_pagination() arguments.
    \'before\'       => \'<nav class="pagination loop-pagination">\',
    \'after\'        => \'</nav>\',
    \'echo\'         => true,
);

/* Add the $base argument to the array if the user is using permalinks. */
if ( $wp_rewrite->using_permalinks() && !is_search() )
    $defaults[\'base\'] = user_trailingslashit( trailingslashit( get_pagenum_link() ) . "{$pagination_base}/%#%" );

/* Allow developers to overwrite the arguments with a filter. */
$args = apply_filters( \'loop_pagination_args\', $args );

/* Merge the arguments input with the defaults. */
$args = wp_parse_args( $args, $defaults );

/* Don\'t allow the user to set this to an array. */
if ( \'array\' == $args[\'type\'] )
    $args[\'type\'] = \'plain\';

/* Get the paginated links. */
$page_links = paginate_links( $args );

/* Remove \'page/1\' from the entire output since it\'s not needed. */
$page_links = preg_replace( 
    array( 
        "#(href=[\'\\"].*?){$pagination_base}/1([\'\\"])#",  // \'page/1\'
        "#(href=[\'\\"].*?){$pagination_base}/1/([\'\\"])#", // \'page/1/\'
        "#(href=[\'\\"].*?)\\?paged=1([\'\\"])#",             // \'?paged=1\'
        "#(href=[\'\\"].*?)&\\#038;paged=1([\'\\"])#"         // \'&#038;paged=1\'
    ), 
    \'$1$2\', 
    $page_links 
);

/* Wrap the paginated links with the $before and $after elements. */
$page_links = $args[\'before\'] . $page_links . $args[\'after\'];

/* Allow devs to completely overwrite the output. */
$page_links = apply_filters( \'loop_pagination\', $page_links );

/* Return the paginated links for use in themes. */
if ( $args[\'echo\'] )
    echo $page_links;
else
    return $page_links;
 }

结束