2017-01-25 25 views
0

先週からこの問題を修正しようとしていましたが、完了できませんでした。問題はそれ自体非常にシンプルに聞こえますが、WordPressのページネーションはタクソノミーを扱っていないときにはうまくいきます。例えばwww.example.com/post_type/2ですが、タクソノミーを使用しようとするとページ1を通過できません(www.example.com/taxonomy/term/2)。カスタム投稿の種類と分類とのページネゲーション404

カスタム投稿タイプ= noticiasと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

[OK]をので、私はそれが行われました。私はこれが問題を解決する最良の方法であるかどうかはわかりませんが、私が見つけた唯一の方法でした。この答えはjcarroll780の答えのいくつかの変更を伴う同じ問題の「フォーク」です。

$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(); 
} 

それが働いた

は、最初に私は私のfunctions.phpに、これらの機能を追加しました私のためにかなりよく、私はこれがまたあなたの質問に答えることを願っています。

関連する問題