如何在发布文章时自动将自定义分类法追加到固定链接末尾?
解决方案:将自定义分类法追加到文章固定链接末尾
嘿,我之前刚好碰到过一模一样的需求,折腾了会儿终于找到靠谱的方法——用WordPress的钩子直接修改固定链接生成逻辑,完全能控制把自定义分类法放在标题后面,具体步骤如下:
1. 设置基础固定链接结构
先去WordPress后台的「设置」→「固定链接」,选择「自定义结构」,输入 /%postname%/ 作为基础结构,保存设置。这一步是为后续修改打基础。
2. 添加自定义代码实现追加逻辑
把下面的代码添加到你的主题 functions.php 文件里,或者创建一个简单的自定义插件来放这段代码(推荐插件方式,避免主题更新丢失代码):
function append_year_to_post_permalink($permalink, $post, $leavename) { // 仅处理普通文章类型,如果是自定义文章类型,替换成对应的类型名即可 if ($post->post_type !== 'post') { return $permalink; } // 获取当前文章关联的「years」自定义分类法术语(取slug值) $terms = wp_get_post_terms($post->ID, 'years', array('fields' => 'slugs')); // 如果存在关联的年份术语,就追加到链接末尾 if (!empty($terms)) { // 取第一个关联的年份(如果一篇文章对应多个年份,可调整这里的逻辑) $year_slug = $terms[0]; // 确保链接末尾有斜杠,避免替换出错 $permalink = trailingslashit($permalink); // 将原链接中的文章名部分替换为「文章名-年份」的形式 $permalink = str_replace($post->post_name . '/', $post->post_name . '-' . $year_slug . '/', $permalink); } return $permalink; } add_filter('post_type_link', 'append_year_to_post_permalink', 10, 3);
3. 刷新固定链接规则
代码添加完成后,回到后台的「固定链接」设置页面,不需要修改任何内容,直接点击「保存更改」按钮。这一步是让WordPress刷新重写规则,确保新的链接格式生效。
额外说明:
- 如果你的文章可能关联多个「years」分类法术语,代码里默认取第一个,你可以根据需求修改成取最后一个或者拼接多个(比如用
implode('-', $terms)把所有年份连起来)。 - 如果想使用分类法的名称而不是slug,把代码里的
'fields' => 'slugs'改成'fields' => 'names'即可,但slug通常更适合出现在URL里(无特殊字符、全小写)。 - 如果你需要对自定义文章类型生效,把代码里的
$post->post_type !== 'post'改成你的自定义文章类型名称,比如$post->post_type !== 'product'(假设你的自定义类型是product)。
这样设置后,你的文章固定链接就会变成https://example.com/mysamplepost-2018这种形式啦,完全符合你的需求~
内容的提问来源于stack exchange,提问作者juicebyah
相关产品推荐
相关产品推荐

