WordPress分页重复第一页

时间:2018-10-12 02:56:28

标签: php wordpress

此功能一直有效,直到更新了wordpress,现在自定义页面上的分页重复了第一页。例如,第2页只会显示第1页的内容。

我一直在寻找,没有任何帮助。

我正在使用以下方法在wordpress安装之外调用wordpress函数

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

然后wordpress循环是(它可能已经过时且有问题,但这是当时唯一可行的循环)

    $paged = ( get_query_var( 'page' ) ) ? absint( get_query_var( 'page' ) ) : 1;
       $args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 20,
           //'showposts' => 20,
'orderby'=> 'menu_order',
    'paged' => $paged,
     'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock',
            'compare' => '=',
        )
    )      

);

query_posts( $args); ?>

  <?php
   $path = $_SERVER['DOCUMENT_ROOT'];
   $path .= "/includes/producttemplate.php";
   include_once($path);
?>

</div>
<br class="clear" />
<div class="wrapper">
<div class="pagination">
<p><br /><?php pagination_bar($args); if(!$_GET['viewall']){ ?>

<br />
<a class="all" href="<?php  echo add_query_arg( array( 'view' => 'all' ), get_pagenum_link(1) ); ?>">Show All</a><br /></p>
<?php } }?>
<?php wp_reset_query(); ?>

然后我的自定义分页功能是

//Pagenation
function pagination_bar() {
    global $wp_query;

    $total_pages = $wp_query->max_num_pages;

    if ($total_pages > 1){
        $current_page = max(1, get_query_var('paged'));
 $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
        echo paginate_links(array(
            'base' => @add_query_arg('paged','%#%'),
            'format' => '?paged=%#%',
            'current' => $paged,
            'total' => $total_pages,
        ));
    }
}

谢谢

3 个答案:

答案 0 :(得分:0)

以下是从第二个代码转储中复制的两行:

$current_page = max(1, get_query_var('paged'));
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;

注意query_var是paged吗?
现在,从第一个转储的第一行看一下此副本:

$paged = ( get_query_var( 'page' ) ) ? absint( get_query_var( 'page' ) ) : 1;

注意区别吗? page,而不是paged

答案 1 :(得分:0)

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array(
    'post_type' => 'charters',
    'cat'=> $cat,
    'post_per_page'=> 6, 
    'paged' => $paged 
    );

    $my_query = new WP_Query( $args );

    if( $my_query->have_posts() ) {
        while ($my_query->have_posts()) : $my_query->the_post(); ?>
            <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p><?php
        endwhile;
    }

    wp_reset_query();

?>

<?php echo pnavigation( $query ); ?>

然后您需要在function.php中添加以下代码:

function pnavigation( $wp_query ) {

  $big = 999999999; // need an unlikely integer
  $pages = paginate_links( array(
  'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
  'format' => '?paged=%#%',
  'current' => max( 1, get_query_var('paged') ),
  'total' => $wp_query->max_num_pages,
  'prev_next' => false,
  'type'  => 'array',
  'prev_next'   => TRUE,
  'prev_text'    => '&larr;',
  'next_text'    => '&rarr;',
  ) );
  if( is_array( $pages ) ) {
    $paged = ( get_query_var('paged') == 0 ) ? 1 : get_query_var('paged');
    echo '<ul class="pagination pagination-lg">';
    foreach ( $pages as $page ) {
      echo "<li>$page</li>";
    }
    echo '</ul>';
  }
}

还将此代码添加到function.php中,您只需要用页面url替换url(客户端推荐)

function pagination_rewrite() {
  add_rewrite_rule('client-testimonials/page/?([0-9]{1,})/?$', 'index.php?pagename=client-testimonials&paged=$matches[1]', 'top');
}
add_action('init', 'pagination_rewrite');

答案 2 :(得分:0)

将头发上剩下的东西拉出来后,我解决了。就是这个部分

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

需要成为

require $_SERVER['DOCUMENT_ROOT'] . '/wp-blog-header.php';

我目前正在将两者都用作备用。我不知道是否只需要合而为一。如果有人有更多信息,可以安全使用两者吗?