您收到错误是因为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和请求方法匹配的路由”。)。