Pagination on custom taxonomy

时间:2011-11-28 作者:criticerz

我很难做到这一点。这不是我第一次遇到分页问题,或者说是WPs URL系统的问题。

基本上我有这个URL:

http://example.com/location/dc 
并加载taxonomy-location.php 样板

现在,我将为主题添加分页功能。所以我有一个URL:

http://example.com/location/dc/page/2
它不会加载taxonomy-location.php 模板,它实际上加载404 样板

这是调试栏显示的内容:

http://cl.ly/1u0F470k062o1Q121u15

看起来它得到了正确的值,WP只是没有加载正确的模板。

<小时>EDIT (从评论链接移到)

functions.php

/* LOCATION */
add_rewrite_rule( \'location/([^/]+)/page/([0-9]{1,})/?$\', \'index.php?location=$matches[1]&paged=$matches[2]\', \'top\' );

taxonomy-location.php

  <?php 
  $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
  query_posts($query_string.\'&posts_per_page=2&paged=\'.$paged);
  ?>

  <h2>"<?= ucwords(get_query_var(\'location\')); ?>" Venues</h2>

  <?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

  <article>
    <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
    <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(\'venue_thumb\'); ?></a>
  </article>

  <?php endwhile; ?>

    <?php wp_pagenavi(); ?>

  <?php else : ?>

    <article>
      <h1>No posts found</h1>
    </article>

<?php endif; ?>

3 个回复
SO网友:Joshua Abenazer

尝试添加\'paged\' => get_query_var( \'page\' ) 到您的查询。

编辑:要使分页正常工作,每页的帖子数应大于WordPress管理的“设置->阅读”部分下的“博客页面最多显示”。所以有两种方法可以解决这个问题。

您可以将“博客页面最多显示”设置为1。这将在所有博客页面中显示1篇文章,除非您专门为每个查询指定post\\u per\\u页面pre_get_posts 过滤器pre\\u get\\u post筛选器示例,用于将位置分类法归档页面上的帖子数量限制为每页2篇。

function location_posts( $query ) {
    if( is_tax( \'location\' ) ) {
        $query->set(\'posts_per_page\', \'2\');
    }
    return $query;
}
add_filter(\'pre_get_posts\', \'location_posts\');

SO网友:Jigs P
register_post_type( \'lifestyle\',
                array( 
                \'label\' => __(\'Lifestyle\', \'tmi\'), 
                \'public\' => true, 
                \'show_ui\' => true,
                \'show_in_nav_menus\' => true,
                \'rewrite\' => true,
                \'hierarchical\' => true,
                \'menu_position\' => 5,
                \'exclude_from_search\' =>false,
                \'supports\' => array(
                                     \'title\',
                                     \'editor\',
                                     \'thumbnail\',
                                     \'excerpt\',
                                     \'revisions\')
                    ) 
                );

    register_taxonomy(\'lifestylecat\', __(\'lifestyle\', \'tmi\'),array(\'hierarchical\' => true, \'label\' =>  __(\'Categories\', \'tmi\'), \'singular_name\' => __(\'Category\', \'tmi\'))
    );
SO网友:ggedde

我遇到了同样的问题。

下面是我在函数中添加的内容。php解决此问题。

add_action(
    \'pre_get_posts\',
    function( $query ) {
        // When creating custom Rewrites we lose the paged number so we need to set it here.
        if ( preg_match( \'/\\/page\\/([0-9]+)\\/?/\', ( ! empty( $_SERVER[\'REQUEST_URI\'] ) ? sanitize_text_field( wp_unslash( $_SERVER[\'REQUEST_URI\'] ) ) : \'\' ), $matches ) ) {
            if ( ! empty( $matches[1] ) && is_numeric( $matches[1] ) ) {
                set_query_var( \'paged\', $matches[1] );
            }
        }
        return $query;
    }
);

add_action(
    \'init\',
    function() {
        add_rewrite_rule(
            \'location/(.*)/page/([0-9]+)/?\',
            \'index.php?page=$matches[2]&taxonomy=location&location=$matches[1]\',
            \'top\'
        );
    }
);
请注意,在重写中必须使用page= 而不是paged=. 不知道为什么不能在那里使用paged。

确保之后刷新重写规则。(重新保存永久链接)

结束

相关推荐

Multiple Page Templates & CSS

在使用多个页面模板的主题上处理CSS的最佳实践是什么?例如:我将有一个全宽页面模板和一个两列页面模板。最好只在单个CSS中调用容器(#fullWidthContainer vs.#twoColumnContainer)还是为每个页面模板提供单独的CSS文件更好?