我不知道为什么您更喜欢较长的方法而不是wp\\u get\\u archives()。我建议让Wordpress为你做这项工作。它更高效,更容易阅读。
However ... since you presented a particular preference:
似乎您正在使用一个数组作为post\\u类型,而不需要任何数组。尝试将WP\\U查询参数修改为:
$terms_year = array(
\'post_type\' => \'post\',
\'orderby\' => \'modified\',
\'order\' => \'DESC\',
\'post_status\' => \'publish\',
);
这将对您的条目进行预排序,以便某一特定年份的所有帖子同时显示。此外,添加post\\u状态可以确保不会出现公众永远看不到的修订、草稿或垃圾。
那么,为了可读性,我可以构建<li>
输出如下:
if (!array_key_exists($year, $years)) {
$years[$year] = \'<li><a href="\';
$years[$year] .= home_url();
$years[$year] .= \'/news-and-media/?year=\';
$years[$year] .= $year . \'">\';
$years[$year] .= $year;
$years[$year] .= \'</a></li>\';
echo $years[$year];
}
Echo语句的性能代价很高。因此,最好构建完整的字符串,然后进行回音。和这更容易阅读。
最后一次(主动)评论。。。您应该考虑使用“home\\u url()”或“get\\u site\\u url()”,而不是两者都使用。您已经在这个代码示例中混合了它们。这可能有用,但可能会给你带来麻烦。
希望这是有帮助的!