避免使用query_posts()
请不要使用
query_posts(\'posts_per_page=10\');
在您的
date.php
模板文件
override the main query instance 从而影响主回路。这真的会毁了这一天!
如果需要修改,例如posts_per_page
对于主日期查询,请使用pre_get_posts
在发出数据库请求之前修改查询变量的操作。
有一个严厉的警告query_posts()
中的用法manual.
所以remove 那部分和wp_reset_query()
它应该会再次起作用!
年度日期存档:修改帖子数量,下面是一个如何更改年度日期存档每页帖子的示例:
add_action( \'pre_get_posts\', function( $query ) {
if ( is_admin() || ! $query->is_main_query() || ! $query->is_year() ) {
return;
}
$query->set( \'posts_per_page\', 10 ); // Adjust the number to your needs!
} );
这里我们使用
is_year()
以年度归档查询和
is_main_query()
仅以主查询为目标。
年度日期存档:支持date-year.php
模板文件
我们还可以添加对
date-year.php
模板文件,通过修改模板过滤器
example 从手册中:
/**
* Add a support for date-year.php template files.
*/
add_filter( \'date_template\', function( $templates ) {
if ( ! is_year() ) {
return $templates;
}
if ( ! is_array( $templates ) && ! empty( $templates ) ) {
$templates = locate_template( [ "date-year.php", $templates ], false );
} elseif ( empty( $templates ) ) {
$templates = locate_template( "date-year.php", false );
} else {
$new_template = locate_template( [ "date-year.php" ] );
if ( ! empty( $new_template ) ) {
array_unshift( $templates, $new_template );
}
}
return $templates;
} );
这样,我们只处理年度日期存档,而不处理其他日期存档,如使用
date.php
模板文件。
注意,将代码片段添加到functions.php
文件或创建插件。切勿将某些代码片段从internet直接复制/粘贴到实时站点。始终先在开发人员/本地安装上进行测试。