我们的自定义重写规则适用于顶级服务,但不适用于子服务。
您的重写规则或查询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).