wordpress REST API 如何按post_type进行筛选过滤

2023-6-13|2023-6-13
夜火/xloong
夜火/xloong
type
Post
status
Published
date
Jun 13, 2023
slug
wordpress-rest-api-post-type
summary
wordpress rest api 如何按post_type进行筛选过滤
tags
wordpress
category
技术分享
icon
password
URL
Property
Jun 13, 2023 04:16 AM
最近有个需求,是将一个主题自带的侧栏插件,做成ajax加载,这样就需要API接口请求数据了。我知道wordpress有自带的REST API 可以调用,但是实际使用中,并不能实现我的需求,具体情况如下。

踩坑

侧栏的文章在数据库中的 post_type 为 custom ,通过wordpress自带的REST API请求数据
刚开始由于没开启伪静态,请求链接为 http://www.xxx.com/?rest_route=/wp/v2/posts,我心想,直接在后面加参数 &post_type=custom 不就搞定了,然而实际并不行。
然后以为是没有开启伪静态的原因,后来试了下 http://www.xxx.com/wp-json/wp/v2/posts?post_type=custom 也还是不行,始终只显示post_type 为 post 的普通文章。
由于对wordpress的不熟悉,试了各种方式都不行,搞的火大,都想完全自己写了。

解决

后经多方查找,看到一篇文章:https://www.mxp.tw/9292/,需要在定义 post_type 的地方进行修改。
于是找到主题中定义的地方 register_post_type() ,增加一个 show_in_rest ⇒ true, 就可以了。
根据我的使用需求,实测 rest_base 与 rest_controller_class 可以不用修改。
现在,http://www.xxx.com/wp-json/wp/v2/customhttp://www.xxx.com/?rest_route=/wp/v2/custom ,都可以获取对应post_type 为 custom 的文章了
 
参考:
PHP+JS 对接OpenAI chatGPT逐字逐句加载回答(SSE数据流)uniapp生成的android端 返回按钮如何控制webview内的网页后退