json - 如何访问 /posts WordPress JSON REST API 并按 post_type 过滤?
问题描述
我在 wp_3_posts 表中有许多帖子,post_type 为“人”。这个 post_type 是使用 Admin Columns 插件创建的。
我如何检索这些?
Posts 的文档提供按类别或标签进行过滤,但 post_type 都不是。
https://developer.wordpress.org/rest-api/reference/posts/
谢谢 :]
解决方案
如果我以正确的方式解决了您的问题,您希望使用 REST API 获取自定义帖子类型的帖子。
在 wordpress 中创建自定义帖子类型时,您必须在参数中设置show_in_rest
和。public
add_action( 'init', 'my_cpt' );
function my_cpt() {
$args = array(
'public' => true,
'show_in_rest' => true,
'label' => 'My Custom Post'
);
register_post_type( 'mycustompost', $args );
}
设置好之后,您可以使用 url 中的正确参数获取帖子类型的帖子。
因此,如果您只想获取帖子,可以使用:
https://yoursite.com/wp-json/wp/v2/mycustompost?per_page=10
per_page
如果您收到很多帖子,我建议将 设置为拥有控制权。
您还可以使用以下方式访问更多数据而无需额外的 HTTP 请求_embed
https://yoursite.com/wp-json/wp/v2/mycustompost?per_page=10&_embed=wp:term,wp:featuredmedia
例如,通过这个,您可以获得不同特色图像大小的分类术语和 url。
因此,您不需要获取您网站的所有帖子(和帖子类型),然后按帖子类型进行过滤,而只需获取此帖子类型的帖子即可。您可以使用全局参数进行更多过滤:
https://developer.wordpress.org/rest-api/using-the-rest-api/global-parameters/
使用 VueJS(在我看来更好的性能)这看起来像:
fetch("https://yoursite.com/wp-json/wp/v2/mycustompost?per_page=10")
.then(response => response.json())
.then((data => {
this.mycustompost = data;
}))
或者,如果使用标准 javascript,例如:
let state = {
posts: [],
baseUrl: 'https://yoursite.com/wp-json/wp/v2/mycustompost',
perPage: '?per_page=10',
wpFetchHeaders: {
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Expose-Headers': 'x-wp-total'
}
}
}
推荐阅读
- react-native - 玩笑测试失败“无法从 SignInOrRegister.js 中找到模块 'images/myimage.png'”,图像大小类为 @1x、@2x、@3x、@4x
- google-app-engine - 谷歌语音 + 自然语言管道
- php - Yii2 ajax 移除自定义 jquery 验证
- c# - 将属性序列化为新元素中的 Xml 属性
- java - 将数据从第二个活动移动到第一个活动
- laravel - 不允许自定义方法,404
- python - 轴超出数组范围
- c++ - 带有标记调度的 const 成员构造函数中的内存泄漏
- ruby-on-rails - JSON 字段转换为 CSV
- python - Matplotlib pandas 绘制日期时间