2017-01-25 139 views
0

自上周以来我一直在试图解决这个问题,但我无法完成它。这个问题本身听起来很简单,我的WordPress分页工作很好,当它不处理分类时,例如:www.example.com/post_type/2但如果我尝试使用分类,我不能通过第1页(www.example.com/taxonomy/term/2)。分页与自定义帖子类型和分类返回404

Custom Post Type = noticias and Taxonomy = assunto,所以我不认为这个名字在这里是一个冲突因素。

$custom_query_args['paged'] = get_query_var('paged') ? get_query_var('paged') : 1; 
$args = array('post_type' => 'noticias', 'paged' => $custom_query_args['paged'], 'posts_per_page' => 5); 
$loop = new WP_Query($args); 

$temp_query = $wp_query; 
$wp_query = NULL; 
$wp_query = $loop; 

while ($loop->have_posts()) : $loop->the_post(); 
    <!-- Content here --> 
endwhile; 

wp_reset_postdata(); 

if (function_exists("pagination")) { 
    pagination($wp_query->max_num_pages); 
} 

$wp_query = $temp_query; 

,我使用ATM的功能:

function pagination($pages = '', $range = 4) { 
     $showitems = ($range * 2)+1; 

     global $paged; 
     if(empty($paged)) $paged = 1; 

     if($pages == '') { 
      global $wp_query; 
      $pages = $wp_query->max_num_pages; 

      if(!$pages) { 
       $pages = 1; 
      } 
     } 

     if(1 != $pages) { 
      echo "<div class=\"pagination\"><span>Página ".$paged." de ".$pages."</span>"; 
      if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo; Primeira</a>"; 
      if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo; Anterior</a>"; 

      for ($i=1; $i <= $pages; $i++) { 
       if (1 != $pages &&(!($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems)) { 
        echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"<a href='".get_pagenum_link($i)."' class=\"inactive\">".$i."</a>"; 
       } 
      } 

      if ($paged < $pages && $showitems < $pages) echo "<a href=\"".get_pagenum_link($paged + 1)."\">Próxima &rsaquo;</a>"; 
      if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>Última &raquo;</a>"; 
      echo "</div>\n"; 
     } 
    } 

回答

1

好了,我得到了它完成。我不知道这是否是解决问题的最佳方法,但它是我发现的唯一方法。这个答案是jcarroll780在一些修改的同一问题上的答案的“分支”。

首先,我添加了这些功能整合到我的functions.php:

$option_posts_per_page = get_option('posts_per_page'); 
add_action('init', 'my_modify_posts_per_page', 0); 

function my_modify_posts_per_page() { 
    add_filter('option_posts_per_page', 'my_option_posts_per_page'); 
} 

function my_option_posts_per_page($value) { 
    global $option_posts_per_page; 
    if (is_tax('assunto')) { 
     return 5; 
    } else { 
     return $option_posts_per_page; 
    } 
} 

然后我用下面的循环,以显示正确的分页(分类学assunto.php):

$term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy')); 
$paged = get_query_var('paged') ? get_query_var('paged') : 1; 
query_posts(array_merge($wp_query->query, array('post_type'=>'noticias', 'posts_per_page' => 5, 'paged'=>$paged))); 

if (have_posts()) : while (have_posts()) : the_post(); 
    // Content Here 
endwhile; endif; 

if (function_exists('wp_pagenavi')) { 
    wp_pagenavi(); 
} 

它的工作对我来说很好,我希望这也能回答你的问题。

相关问题