2011-04-26 32 views
5

我使用WP PageNavi插件進行分頁。當WP PageNavi被關閉時,這種特殊的問題在沒有獲得分類 - portflio-category.php頁面分頁時也是一個問題。Wordpress定製分類分頁不起作用

我有一段時間在主頁和頁面模板頁面上分頁工作,但我確實讓他們工作。下面是其代碼:

頁home.php(用作頁模板靜態頭版稱爲「家」)

$paged = 1; 
if (get_query_var('paged')) $paged = get_query_var('paged'); 
if (get_query_var('page')) $paged = get_query_var('page'); 
$i = 0; 
$loop = new WP_Query(array('post_type' => 'portfolio', 'paged' => $paged, 'posts_per_page' => 24)); 
while ($loop->have_posts()) : $loop->the_post(); 
// output 
$i++; endwhile; 
if (function_exists('wp_pagenavi')) { 
    wp_pagenavi(array('query' => $loop)); 
    wp_reset_postdata(); 
} 

分頁作品!

頁portfolio.php(用作頁模板頁面上的所謂的「工作」)

$i = 0; 
$loop = new WP_Query(array('post_type' => 'portfolio', 'paged' => get_query_var('paged'), 'posts_per_page' => 24)); 
while ($loop->have_posts()) : $loop->the_post(); 
// output 
$i++; endwhile; 
if (function_exists('wp_pagenavi')) { 
    wp_pagenavi(array('query' => $loop)); 
    wp_reset_postdata(); 
} 

分頁作品!

分類,組合,category.php(作爲的方式來顯示組合部分如印刷,攝影等)

$term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy')); 
global $wp_query; 
query_posts(array_merge($wp_query->query, array('posts_per_page' => 2))); 
if (have_posts()) : while (have_posts()) : the_post(); 
// output 
endwhile; endif; 
if (function_exists('wp_pagenavi')) { 
    wp_pagenavi(); 
} 

1(/組合/互動/)看起來不錯!它絕對只發布2個項目,並計算正確的分頁數。但是當你點擊頁面2或3或4(/ portfolio/interactive/page/2 /)時,站點默認爲index.php並顯示「找不到頁面」。分頁失敗!

希望我能儘快解決。我看到很多人在定製分類頁面上遇到這種分頁問題,​​但沒有可靠的解決方案。請幫忙!

回答

0

我遇到過類似的問題,花了我幾個小時的Google搜索!我終於找到了解決方案。 添加以下代碼在你的主題文件夾添加到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('portfolio-category')) { 
     return 2; 
    } else { 
     return $option_posts_per_page; 
    } 
} 

URL for the solution

2

你需要每頁的職位設置爲24在設置 - >在WP管理員閱讀頁面。希望這可以幫助某人。

0

可能需要啓用搜索,使分頁

雖然宣佈自定義分類,你應該禁用搜索排除。

exclude_from_search => false 

這解決了我的問題。

+0

請reme在將其包含在響應中時,用正確的方法格式化代碼。您要按的圖標是{}而不是「。 – mylogon 2015-12-28 19:18:44

0

我想和大家分享以下解決方案(在主題中添加此代碼functions.php):

function fix_taxonomy_pagination ($query) { 
    // not an admin page and it is the main query 
    if (!is_admin() && $query->is_main_query()){ 

    if(is_tax()){ 
     // where 24 is number of posts per page on custom taxonomy pages 
     $query->set('posts_per_page', 24); 

    } 
    } 
} 
add_action('pre_get_posts', 'fix_taxonomy_pagination'); 

source

1

我一直在使用WP-Pagenavi嘗試,但它從來沒有工作,所以我使用的分頁從Wordpress它自我,我使用了twentyfourteen_paging_nav()函數形式二十四個,因爲它有一個分類頁面,這裏是代碼:

if (! function_exists('twentyfourteen_paging_nav')) : 
function twentyfourteen_paging_nav() { 
global $wp_query, $wp_rewrite; 

// Don't print empty markup if there's only one page. 
if ($wp_query->max_num_pages < 2) { 
    return; 
} 

$paged  = get_query_var('paged') ? intval(get_query_var('paged')) : 1; 
$pagenum_link = html_entity_decode(get_pagenum_link()); 
$query_args = array(); 
$url_parts = explode('?', $pagenum_link); 

if (isset($url_parts[1])) { 
    wp_parse_str($url_parts[1], $query_args); 
} 

$pagenum_link = remove_query_arg(array_keys($query_args), $pagenum_link); 
$pagenum_link = trailingslashit($pagenum_link) . '%_%'; 

$format = $wp_rewrite->using_index_permalinks() && ! strpos($pagenum_link, 'index.php') ? 'index.php/' : ''; 
$format .= $wp_rewrite->using_permalinks() ? user_trailingslashit($wp_rewrite->pagination_base . '/%#%', 'paged') : '?paged=%#%'; 

// Set up paginated links. 
$links = paginate_links(array(
    'base'  => $pagenum_link, 
    'format' => $format, 
    'total' => $wp_query->max_num_pages, 
    'current' => $paged, 
    'mid_size' => 1, 
    'add_args' => array_map('urlencode', $query_args), 
    'prev_text' => __('&larr; Previous', 'twentyfourteen'), 
    'next_text' => __('Next &rarr;', 'twentyfourteen'), 
)); 

if ($links) : 

?> 

<nav class="pagination-contaner" role="navigation"> 
    <h1 class="screen-reader-text"><?php _e('Posts navigation', 'twentyfourteen'); ?></h1> 
    <ul class="pagination"> 
     <?php echo $links; ?> 
    </ul><!-- .pagination --> 
</nav><!-- .navigation --> 
<?php 
endif; 
} 
endif;