将分页添加到wordpress中的自定义帖子类型

时间:2014-09-09 10:00:08

标签: php wordpress pagination custom-post-type wp-query

我在向Wordpress中创建的自定义帖子类型添加分页时遇到了一个小问题。分页链接出现在模板上,其中我列出了自定义帖子类型中的所有帖子,但是当我点击链接查看较旧的帖子时,它会打开第二页但显示第一页的相同帖子那里。此外,在第二页上,“旧帖子”链接不会更新为“../page/3”,而是保持“../page/2”。我按照此处指定的步骤(https://stackoverflow.com/a/18325002/2115001)并根据“选项2”下列出的信息修改了我的代码。这是我的代码目前的样子:

<?php

    $temp = $wp_query;

    $wp_query = null;

    $wp_query = new WP_Query();

    $wp_query->query('showposts=3&post_type=medals'.'&paged='.$paged);

    while ($wp_query->have_posts()) : $wp_query->the_post();

    // loops code here

    endwhile;

    echo '<nav>';

    echo previous_posts_link('&laquo; Newer');

    echo next_posts_link('Older &raquo;');

    echo '</nav>';

    $wp_query = null;

    $wp_query = $temp;  // Reset

?>

我是否需要在functions.php文件中添加一些代码才能使其正常运行或原始代码出错?感谢。

3 个答案:

答案 0 :(得分:2)

尝试以下代码

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

$args = array('posts_per_page' => 3,
'paged'=> $paged,
'post_type' => 'medals');

$wp_query = new WP_Query($args);

while ($wp_query->have_posts()) : $wp_query->the_post();

// loops code here

endwhile;

global $wp_query;

$big = 999999999;

echo 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,
'next_text' => __('Next »'),
));

答案 1 :(得分:0)

试试这个:

<?php
  $type = 'portfolio';
  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  $args=array(
    'post_type' => $type,
    'post_status' => 'publish',
    'paged' => $paged,
    'posts_per_page' => 1,
    'caller_get_posts'=> 1
  );
  $temp = $wp_query;  // assign original query to temp variable for later use
  $wp_query = null;
  $wp_query = new WP_Query();
  wp_query->query($args);
?>
然后将你的永久链接放到默认结构中,然后回到结构的结构。

答案 2 :(得分:0)

 <?php while ( $query->have_posts() ) : $query->the_post(); ?>              
 <article class="">
           <div class="">
            <h4><?php the_time( 'm' ); ?></h4>
            <h4><?php the_time( 'd' ); ?></h4>
        </div>
        <div class="">
            <h5><?php the_title(); ?></h5>
            <p><?php the_excerpt(); ?></p>
        </div>
      </div>
    </a>
</article>               

 <?php endwhile; // End the loop. Whew. ?>

<?php
  global $wp_query;

  $big = 999999999; // need an unlikely integer
//echo  esc_url( get_pagenum_link());
   echo paginate_links( array(
      'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $query->max_num_pages,
    'type'=>'list',
    'prev_text'    => __('<'),
    'next_text'    => __('>'),
  ) );
?>

希望它对你有用。