我正在开发一个网站(http://he.leavingworkbehind.com/) 其特点是在主页上显示一篇文章,由设置>阅读中的“博客页面最多显示”选项决定。
但是,我创建了一个标记。php页面中,我想显示一个完整的帖子列表(相关标签)。我已经找到了可以创建该列表的代码:
<?php
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<ul class="post-tag-list">
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
</ul>
<?php endwhile; endif; ?>
不过,该列表只返回一个结果——可能是因为前面提到的“博客页面最多显示”设置。
所以我的问题是:如何覆盖这个设置?更具体地说,what exact code should I insert on tag.php?
我有一种感觉,我可能已经在Stack Exchange上看到了答案,但我对PHP编码太无知,无法成功实现它。非常感谢您的帮助!
干杯
汤姆
最合适的回答,由SO网友:Milo 整理而成
我应该在标签上插入什么确切的代码。php?
Nothing
更改
main query, 使用
pre_get_posts
操作,该操作在主查询之前运行,并在加载模板之前运行。如果修改模板中的查询,则会运行额外的查询,这是对资源的浪费。
这将符合你的主题functions.php
, 或a plugin.
function wpa_tag_posts_per_page( $query ) {
if( ! is_admin()
&& $query->is_tag()
&& $query->is_main_query() ) {
$query->set( \'posts_per_page\', 10 );
}
}
add_action( \'pre_get_posts\', \'wpa_tag_posts_per_page\' );