Paginate tags page

时间:2013-06-02 作者:Ruriko

如果我单击一个随机标记,我希望标记页面只列出20篇与该标记相关的文章并分页。

<?php
/**
 * The template for displaying Tag Archive pages.
 */

get_header(); ?>

        <div id="container">
            <div id="content" role="main">

                <h1 class="page-title"><?php
                    printf( __( \'Tag Archives: %s\', \'twentyten\' ), \'<span>\' . single_tag_title( \'\', false ) . \'</span>\' );
                ?></h1>

<?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$args = array( \'orderby\' => \'title\', \'order\' => \'ASC\', \'post_type\' => \'post\', \'posts_per_page\' => 20, \'paged\' => $paged );
$wp_query = new WP_Query($args);
while ( have_posts() ) : the_post(); ?>

        <div <?php post_class() ?>>
                <ul><li id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
                <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" ><?php the_post_thumbnail(thumbnail); ?></a></ul>

            </div>

        <?php endwhile; ?>
      <?php if (function_exists("pagination")) {
    pagination($additional_loop->max_num_pages);
} ?>


            </div><!-- #content -->

<?php get_sidebar(); ?>
</div>
<?php get_footer(); ?>
这段代码的问题是它列出了所有与该标记相关的帖子,而不是帖子。有人能帮我修理吗?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您正在使用一个新查询覆盖主查询,其中您没有指定任何标记参数,这就是为什么您看到的是所有帖子,而不是特定于您所查看的标记的帖子。答案是-

Do not modify the main query in the template.

几乎没有任何合理的理由必须以这种方式修改主查询。从以下位置拆下3条线$paged = 并以结尾$wp_query = new WP_Query($args);.

使用pre_get_posts 在运行主查询之前修改任何查询参数的操作。

在主题的functions.php:

function wpa101549_tag_query( $query ) {
    if ( $query->is_tag() && $query->is_main_query() ) {
        $query->set( \'posts_per_page\', 20 );
    }
}
add_action( \'pre_get_posts\', \'wpa101549_tag_query\' );
如果正在查看标记页,并且它是主查询,则此操作将在查询数据库之前运行。

此外,还必须更正分页函数调用。这是:

pagination($additional_loop->max_num_pages);
正在调用pagination 功能和传递$additional_loop->max_num_pages, 但是没有$additional_loop 在模板中的任意位置定义。它应该是:

pagination($wp_query->max_num_pages);

结束

相关推荐

Categorize wordpress tags

我对wordpress标签的分类有问题,以我的语言为例。例如:postA: englishtag1、englishtag2、englishtag3、chinesetag1、chinesetag2、,postB: 英语AG2、英语AG5、英语AG4、汉语AG1、汉语AG3、,我想显示基于“语言”的标记云:english tag cloud: englishtag1、englishtag2、englishtag4、englishtag5Chinese tag cloud: chinesetag1、chines