2016-02-29 22 views
0

我创建了一个自定义帖子类型来设置我的网站上的小说+文档库。 然后我想通过一些查询从帖子列表中隐藏文档流派,以从我的CPT存档页面中排除“文档”。页面导航不起作用设置CPT排除标签查询

 <?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"; 

} 

我做了什么错?

+0

请勿使用自定义查询。使用'pre_get_posts'去除已取消的术语 –

回答

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()来恢复全局对象。