您收到错误是因为URL格式无效-这&
因为没有?
在URL中:wp-json/w1/unica/posts/unica-12-1&interact
, 但即使您实际上添加了?
, 这不是向API传递多个段塞的方法。
那么,如何将多个slug传递给自定义端点呢
register_rest_route( \'w1/page_name/\', \'posts/(?P<slug>[a-z0-9]+(?:-[a-z0-9]+)*)\', ... );
这是您的代码,这意味着路由使用的路径变量的形式为
/(?P<parameter name><regular expression pattern>)
在您的情况下,参数名称是
slug
它接受由字母数字和破折号组成的单个slug值(
-
) 只有个字符,因此您应该只通过一个slug。
但实际上可以发送多个弹头,例如。/wp-json/w1/page_name/posts/some-string?slug[]=unica-12-1&slug[]=interact
或/wp-json/w1/page_name/posts/some-string?slug=unica-12-1,interact
, 其中第一个使用数组格式(即。slug[]
).
但是some-string
必须存在,因为路径变量的形式必须为posts/<slug here>
, 因此,您可以删除path变量,或者更改RegEx模式,使其允许使用逗号分隔多个段塞,然后在主回调中(在page_name_get_posts_by_tag()
函数),您可以使用explode()
将段塞字符串转换为段塞数组。
例如(?P<slug>[a-z0-9]+(?:-[a-z0-9]+)*)
, 你可以试试(?P<slug>([\\w\\-],?)+)
然后向/wp-json/w1/page_name/posts/unica-12-1,interact
, 然后查看是否仍出现相同的错误(“未找到与URL和请求方法匹配的路由”。)。