2011-04-26 34 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;