在为CPT设置排除标记查询后,页面导航无法正常工作

时间:2016-02-29 20:56:33

标签: wordpress pagination custom-post-type

我创建了一个自定义帖子类型来设置我网站上的小说+文档库。 然后我想通过一个小问题隐藏帖子列表中的文档类型,以从我的CPT存档页面中排除slug“document”。

        <?php 
        /*exclude slug "document" from CPT*/
        $args = array(
            'post_type' => array( 'stfic' ),
            'tax_query' => array(
                array(
                'taxonomy' => 'stfic-genre',
                'field'    => 'slug',
                'terms'    => 'document',
                'operator' => 'NOT IN' 
                )
            )
        );

        $extquery = new WP_Query( $args );
        /*exclude slug "document" from CPT*/

        while( $extquery->have_posts() ): $extquery->the_post(); ?>
             //Do The stuff
        <?php endwhile; ?>
        <?php umica_pagi() ?>

但在此之后,我的分页不起作用(在functions.php中添加):

/*------------------Them Pagination-----------------*/
function umica_pagi() {

  if( is_singular() )
    return;

  global $wp_query;

  /** Stop execution if there's only 1 page */
  if( $wp_query->max_num_pages <= 1 )
    return;

  $paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
  $max   = intval( $wp_query->max_num_pages );

  /** Add current page to the array */
  if ( $paged >= 1 )
    $links[] = $paged;

  /** Add the pages around the current page to the array */
  if ( $paged >= 3 ) {
    $links[] = $paged - 1;
    $links[] = $paged - 2;
  }

  if ( ( $paged + 2 ) <= $max ) {
    $links[] = $paged + 2;
    $links[] = $paged + 1;
  }

  echo '<div class="st3-pagi"><ul>' . "\n";

  /** Previous Post Link */
  if ( get_previous_posts_link() )
    printf( '<li>%s</li>' . "\n", get_previous_posts_link('<i class="fa fa-arrow-left"></i> Trang trước') );

  /** Link to first page, plus ellipses if necessary */
  if ( ! in_array( 1, $links ) ) {
    $class = 1 == $paged ? ' class="active"' : '';

    printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );

    if ( ! in_array( 2, $links ) )
      echo '<li>…</li>';
  }

  /** Link to current page, plus 2 pages in either direction if necessary */
  sort( $links );
  foreach ( (array) $links as $link ) {
    $class = $paged == $link ? ' class="active"' : '';
    printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
  }

  /** Link to last page, plus ellipses if necessary */
  if ( ! in_array( $max, $links ) ) {
    if ( ! in_array( $max - 1, $links ) )
      echo '<li>…</li>' . "\n";

    $class = $paged == $max ? ' class="active"' : '';
    printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
  }

  /** Next Post Link */
  if ( get_next_posts_link() )
    printf( '<li>%s</li>' . "\n", get_next_posts_link('Trang Sau <i class="fa fa-arrow-right"></i>') );

  echo '</ul></div>' . "\n";

}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在您的分页功能中,您使用global $wp_query对象来抓取max_num_pages以进行分页,但如果您要对自定义查询进行分页,那么这个数字可能错了吗?

如果您想要对自定义查询进行分页,我建议您修改分页功能,以获取一个max参数:

function umica_pagi( $max = false ) {
   ...
   if ( ! $max ) {
      $max = intval( $wp_query->max_num_pages );
   }
   ...  
}

你可以这样称呼它:

<?php umica_pagi( $extquery->max_num_pages ) ?>

我有类似的问题,这对我有帮助。

但是如果你想在这里分页而不是你的自定义查询,而是主查询,你必须在调用分页函数之前调用wp_reset_postdata()来恢复全局对象。