有两种方法可以做到这一点。
1. You can modify the WordPress main query 要强制WordPress在存档页面和博客页面上显示超过30天的帖子,请在30天之前显示帖子。您可以通过以下帮助限制帖子date_query
.
将此函数粘贴到函数中。php文件。这应该行得通。我对它进行了简单的测试。
function my_custom_get_posts( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
if ( $query->is_archive ) {
$date_query = array(
array(
\'column\' => \'post_date_gmt\',
\'before\' => \'30 days ago\',
),
);
} else {
$date_query = array(
array(
\'column\' => \'post_date_gmt\',
\'after\' => \'30 days ago\',
),
);
}
$query->set( \'date_query\', $date_query );
}
}
add_action( \'pre_get_posts\', \'my_custom_get_posts\', 1 );
请注意,此方法修改了WordPress主查询,但您将获得所需的效果。唯一的缺点是,此功能将更改您在网站上的查询。如果你有一个简单的博客,那么它应该不会是一个问题,你可以使用它没有任何问题。尽管在现场网站上申请之前要进行测试。
2. Use 2 custom page templates to run custom WP_Query
for each. Recommended way.
您可以应用相同的
date_query
网站各部分的限制。为主页和归档页面分别创建两个页面模板。
对于主页,您可以运行自定义WP_Query
像这样。
$args = array(
\'post_type\' => \'post\',
\'date_query\' => array(
array(
\'column\' => \'post_date_gmt\',
\'after\' => \'30 days ago\'
),
),
\'paged\' => $paged,
);
$homepage_query = new WP_Query( $args );
对于存档页面,您可以定义另一个
WP_Query
像这样。
$args = array(
\'post_type\' => \'post\',
\'date_query\' => array(
array(
\'column\' => \'post_date_gmt\',
\'before\' => \'30 days ago\'
),
),
\'paged\' => $paged,
);
$archive_query = new WP_Query( $args );
这是一种更好的方法,因为它不会对其他WordPress查询进行任何修改。