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