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