您可以通过过滤器和操作强制WP的手在此。这样做并没有给我带来温暖的模糊感——我还没有真正测试过它,所以它可能会产生意想不到的副作用。也许有更好的方法。
第一步(将permalinks设置为/%monthnum%/%day%/
) 是挂钩parse_query
并测试请求,其中monthnum
和day
已设置。如果这是真的,我们会取消设置一些内容并设置一些其他内容,以诱使WP认为这是一个单一的post请求。也许这会破坏其他日期档案,我没有测试过!
function wpd_parse_query( $query ){
if( isset( $query->query_vars[\'monthnum\'] )
&& isset( $query->query_vars[\'day\'] )
&& 0 != $query->query_vars[\'monthnum\'] ){
unset($query->is_archive);
unset($query->is_date);
unset($query->is_day);
$query->is_single = 1;
$query->is_singular = 1;
}
}
add_action( \'parse_query\', \'wpd_parse_query\' );
下一步是过滤
post_limits
, 并测试它是一个非零的单数桩的异常情况
monthnum
. 在本例中,我们将其设置为返回第一个帖子,如果有多个帖子。
function wpd_post_limits( $limit, $query ) {
if( $query->is_main_query()
&& $query->is_singular()
&& isset( $query->query_vars[\'monthnum\'] )
&& 0 != $query->query_vars[\'monthnum\'] ){
return \'LIMIT 1\';
}
return $limit;
}
add_filter( \'post_limits\', \'wpd_post_limits\', 10, 2 );
如果您不关心这种情况,可以省略该部分-如果模板使用循环,它只会为每个帖子重复包含的标记,尽管循环之外的所有其他数据都会引用第一篇帖子的标题、短链接、正文类等。。
现在,这些请求应该被解释为单发帖子,模板标记应该相应地进行操作,并且将加载单个模板。