如何无需插件移除特定分类下文章URL中的日期?
仅移除特定分类文章URL日期的WordPress实现方案
本次方案同时覆盖链接生成、URL解析、旧链接跳转三个核心环节,可实现仅category-x分类下文章URL去掉日期、其余分类保留原有带日期结构的需求。
1. 修改目标分类文章的链接生成规则
通过post_link过滤器拦截文章链接生成逻辑,当文章属于目标分类时,直接生成不带日期的格式。
将以下代码添加到主题的functions.php文件中:
add_filter('post_link', 'custom_category_remove_date_permalink', 10, 3); function custom_category_remove_date_permalink($permalink, $post, $leavename) { // 替换为你实际需要处理的分类别名 $target_category = 'category-x'; if (has_term($target_category, 'category', $post->ID)) { $new_permalink = home_url('/' . $target_category . '/' . $post->post_name . '/'); return $new_permalink; } return $permalink; }
2. 新增重写规则适配新URL格式
通过rewrite_rules_array添加自定义重写规则,让WordPress可以正确识别不带日期的目标分类文章URL,映射到对应文章内容。
继续添加以下代码到functions.php:
add_filter('rewrite_rules_array', 'custom_category_add_rewrite_rules'); function custom_category_add_rewrite_rules($rules) { // 替换为实际的分类别名,和上一段代码保持一致 $target_category = 'category-x'; $new_rules = [ $target_category . '/([^/]+)/?$' => 'index.php?category_name=' . $target_category . '&name=$matches[1]' ]; // 新规则优先匹配 return $new_rules + $rules; }
3. 旧链接301跳转(可选,推荐添加)
避免原有带日期的旧链接出现404,自动跳转至新格式URL,同时保留SEO权重,代码如下:
add_action('template_redirect', 'custom_category_old_url_301_redirect'); function custom_category_old_url_301_redirect() { // 替换为实际的分类别名,和前面保持一致 $target_category = 'category-x'; if (is_singular('post') && has_term($target_category, 'category', get_queried_object_id())) { $current_url = home_url($_SERVER['REQUEST_URI']); $correct_url = get_permalink(get_queried_object_id()); if ($current_url !== $correct_url) { wp_redirect($correct_url, 301); exit; } } }
操作注意事项
- 将所有代码中的
category-x替换为你实际需要处理的分类别名 - 代码添加完成后,进入WordPress后台→设置→固定链接,直接点击「保存更改」即可刷新重写规则,不需要修改原有固定链接配置
- 测试前清理浏览器缓存和站点缓存,避免旧的链接缓存影响测试结果
- 如果目标分类存在子分类,可调整重写规则的正则匹配逻辑适配多级分类结构
内容的提问来源于stack exchange,提问作者mnsaints
相关产品推荐
相关产品推荐

