You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress自定义文章类型URL重写slug未替换问题求助

解决WordPress自定义文章类型链接中%author%占位符未替换的问题

问题分析

你注册的Book自定义文章类型将rewrite slug设为/%author%/books,但WordPress默认不会自动把自定义分类法的占位符替换为实际分类slug,导致get_permalink()返回带占位符的不完整链接。

解决方案

添加post_type_link过滤器,手动把链接中的%author%占位符替换为当前书籍对应的Author分类slug。

完整修改代码

将以下代码添加到主题的functions.php文件中:

function replace_book_author_permalink( $post_link, $post ) {
    // 仅处理book类型的文章
    if ( 'book' !== $post->post_type ) {
        return $post_link;
    }

    // 获取当前书籍关联的author分类slug
    $authors = wp_get_post_terms( $post->ID, 'author', array( 'fields' => 'slugs' ) );
    
    // 存在关联作者时替换占位符
    if ( ! empty( $authors ) ) {
        $post_link = str_replace( '%author%', $authors[0], $post_link );
    }

    return $post_link;
}
add_filter( 'post_type_link', 'replace_book_author_permalink', 10, 2 );

代码说明

  • 通过post_type_link钩子拦截自定义文章类型的链接生成流程
  • 仅对book类型的文章做处理,不影响其他内容类型
  • 用wp_get_post_terms()获取当前书籍绑定的Author分类slug
  • 将链接中的%author%占位符替换为实际分类slug,默认取第一个关联的作者分类(若需支持多作者可自行调整逻辑)

注意事项

  1. 代码保存后,务必再次访问WordPress后台「设置-固定链接」页面并点击保存,确保重写规则刷新生效
  2. 若你的业务场景允许书籍关联多个作者分类,可根据需求修改代码逻辑(比如拼接多个slug、指定优先级等)

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:32:28