我们的自定义重写规则适用于顶级服务,但不适用于子服务。
您的重写规则或查询second 的参数add_rewrite_rule()) 只是缺少一个service 查询:
add_rewrite_rule( // wrapped for brevity
    \'^consultancy/(.*)/?\',
    // Here, add the &service=$matches[1]
    \'index.php?post_type=service&name=$matches[1]&service=$matches[1]\',
    \'top\'
);
但是,你为什么不使用
consultancy 作为重写
slug 何时注册帖子类型?
register_post_type( \'service\', [
    \'public\'       => true,
    \'rewrite\'      => [ \'slug\' => \'consultancy\' ],
    \'hierarchical\' => true,
    // .. other args here.
] );
这样,您就不需要自定义重写规则,因为
\'slug\' => \'consultancy\' 将为您的;“服务”;发布到
consultancy/<post name/slug>.
有人能提出修改建议,从URL的末尾获取帖子名称吗?
您可以使用:
- get_query_var( \'service\' )或- get_query_var( \'name\' )从当前URL获取完整的帖子名/slug路径。- 所以如果URL是- https://example.com/consultancy/test-service/test-service-child, 你会得到- test-service/test-service-child.
 
- get_queried_object()->post_name获取所查询帖子的实际帖子名/slug,即没有父路径。- 所以如果URL是- https://example.com/consultancy/test-service/test-service-child,- get_queried_object()->post_name将返回- test-service-child(请注意- child).