你似乎知道WP,所以我只给你提纲(This recent post 我的博客中包含了所有细节)。最好的方法是使用查询变量。从这些评论中,我想这就是凯撒所说的。
这个链接(比如2011年10月)可能会指出example.com/news/2011/10
首先添加一个“generate\\u rewrite\\u rules”过滤器来添加一个规则,所以WordPress将其读取为example.com/news/?year=2011&monthnum=10
,
其他过滤器,例如。post_where
, 修改查询,将返回的帖子限制为当年和当月的“新闻”项目。Note, 如果您的新闻页面在其模板页面内使用query\\u posts()或WP\\u query()获取相关帖子,则此方法将不起作用。如果使用该方法,则需要在模板中使用一些If语句来确定是否设置了年/月,然后更改输入到这些函数中的参数。
至于自动生成菜单,您可以使用phpDate()
函数检索当前月份和年份,然后通过while循环查看最近6个月的显示以及相关链接。例如,在<ul>
标记可以放置php代码
$i=0
while ($i<6){
$yearInt = intva(date("Y", strtotime("-".$i." months")));
$monInt = intva(date("n", strtotime("-".$i." months")));
$monStr = date("F", strtotime("-".$i." months"));
$yearStr = date("Y", strtotime("-".$i." months"));
echo "<li><a href=\'www.example.com/news/".$yearInt."/".$monInt."\'>".$monStr." ".$yearStr"</a></li>";
$i = $i +1;
}
希望这有帮助:D
如果您使用的是query\\u posts(),那么您可能有一些参数调用您的“新闻”帖子。您要做的是添加如下内容,检查是否还选择了年份和月份。您需要将月份和年份转换为整数yearInt
, monthInt
(请参见上文),并使用这些来调整query\\u posts()函数中的参数
global $wp_query;
if (isset( $wp_query->query_vars[\'monthnum\'] ) & isset( $wp_query->query_vars[\'year\'] )){
//add additional arguments to query_var(): \'&year=yearInt&monthnum=monthInt\'
}else{
//Normal query_vars() (i.e. what you had before)
}