WordPress如何设置年份为页面permalink且不追加-2、不加载年度归档
操作步骤
仅释放年份路径(保留其他归档功能)
你不需要完全禁用所有归档,只需移除年度归档对应的重写规则即可,操作如下:
- 将以下代码添加到当前主题的
functions.php文件,或通过自定义代码插件插入:
add_filter('rewrite_rules_array', 'remove_year_archive_rules'); function remove_year_archive_rules($rules) { foreach ($rules as $pattern => $val) { if (preg_match('/^\d{4}\/?$/', $pattern)) { unset($rules[$pattern]); } } return $rules; }
- 进入WordPress后台「设置」-「固定链接」页面,无需修改任何配置,直接点击保存更改,刷新重写规则缓存
- 编辑标题为2020的页面,手动将permalink修改为
2020后保存即可。此时访问https://www.example.com/2020/会直接加载对应页面,不会触发年度归档。
完全禁用所有归档功能
如果需要释放所有归档路径(包括年份、月份、分类、标签、作者页等),可使用以下方案:
- 在
functions.php中添加代码:
// 禁用归档页访问,直接返回404 add_action('template_redirect', 'disable_all_archives'); function disable_all_archives() { if (is_archive()) { global $wp_query; $wp_query->set_404(); status_header(404); } } // 移除所有归档相关的重写规则 add_filter('rewrite_rules_array', 'remove_all_archive_rules'); function remove_all_archive_rules($rules) { $archive_rules = []; // 匹配日期、分类、标签、自定义分类法、作者归档规则 foreach ($rules as $pattern => $rewrite) { if ( preg_match('/^\d{4}\/?$/', $pattern) || preg_match('/^\d{4}\/\d{1,2}\/?$/', $pattern) || preg_match('/^\d{4}\/\d{1,2}\/\d{1,2}\/?$/', $pattern) || preg_match('/^(category|tag|author)\/.+/', $pattern) || str_contains($rewrite, 'category_name=') || str_contains($rewrite, 'tag=') || str_contains($rewrite, 'author=') || str_contains($rewrite, 'year=') ) { continue; } $archive_rules[$pattern] = $rewrite; } return $archive_rules; }
- 同上述步骤,进入「设置」-「固定链接」保存刷新缓存即可。
注意:完全禁用归档后,需自行清理主题、菜单中已有的归档入口,避免用户点击后访问404页面。
内容的提问来源于stack exchange,提问作者Ricky
相关产品推荐
相关产品推荐

