0

我正在尝试使用 WP REST API 从多种帖子类型中检索帖子。book通过这样做,我可以毫无问题地从一种帖子类型中获取提要:

http://example.com/wp-json/posts?type=book&filter[posts_per_page]=10

现在我想扩展提要以获取bookmovie. 这只会给我最后指定的类型:

http://example.com/wp-json/posts?type=book&type=movie&filter[posts_per_page]=10

这给了我一个错误:

http://example.com/wp-json/posts?type[]=book&type[]=movie&filter[posts_per_page]=10

我应该如何处理这个?

谢谢!

编辑:修正语法以匹配我实际拥有的。以下是使用此语法时出现的错误http://example.com/wp-json/posts?type[]=book&type[]=movie&filter[posts_per_page]=10

警告:urlencode() 期望参数 1 是字符串,数组在 /home/newbreak/public_html/wp-includes/formatting.php 第 4128 行给出

警告:无法修改标头信息 - 标头已由 /home/newbreak/public_html/wp-content/plugins/json-rest- 中的(输出开始于 /home/newbreak/public_html/wp-includes/formatting.php:4128)发送第 587 行的 api/lib/class-wp-json-server.php

警告:无法修改标头信息 - 标头已由 /home/newbreak/public_html/wp-content/plugins/json-rest- 中的(输出开始于 /home/newbreak/public_html/wp-includes/formatting.php:4128)发送第 587 行的 api/lib/class-wp-json-server.php

警告:无法修改标头信息 - 标头已由 /home/newbreak/public_html/wp-content/plugins/json-rest- 中的(输出开始于 /home/newbreak/public_html/wp-includes/formatting.php:4128)发送第 587 行的 api/lib/class-wp-json-server.php

警告:无法修改标头信息 - 标头已由 /home/newbreak/public_html/wp-content/plugins/json-rest- 中的(输出开始于 /home/newbreak/public_html/wp-includes/formatting.php:4128)发送第 587 行的 api/lib/class-wp-json-server.php

警告:无法修改标头信息 - 标头已由 /home/newbreak/public_html/wp-content/plugins/json-rest- 中的(输出开始于 /home/newbreak/public_html/wp-includes/formatting.php:4128)发送第 587 行的 api/lib/class-wp-json-server.php

警告:无法修改标头信息 - 标头已由 /home/newbreak/public_html/wp-content/plugins/json-rest- 中的(输出开始于 /home/newbreak/public_html/wp-includes/formatting.php:4128)发送第 587 行的 api/lib/class-wp-json-server.php

当我将类型作为数组发送时,我只会收到错误type[]

4

2 回答 2

4

您也可以尝试注册一个额外的端点,因此您不必在每个请求中添加尽可能多的查询参数。我正在使用最新版本的 WP REST API 插件。

因此,对于称为“电影”的自定义内容类型,您可以有一个类似的端点wp-json/wp/v2/movies

add_action('rest_api_init', 'register_movies');

function register_movies() {
  $movies_custom_fields = array(
    'director',
    'genre'
  );
  foreach ($movies_custom_fields as $key) {
     register_rest_field('movies', $key, array(
     'schema'          => null,
     'get_callback'    => 'get_movies_data',
   ));
  }
}

function get_movies_data( $object, $field_name, $request ) {
   return get_post_meta( $object[ 'id' ], $field_name, true );
}

有关为不同内容类型添加自定义端点的更多文档,请访问WP REST API V2 文档站点。

于 2016-04-12T17:05:26.647 回答
2

我们有一个类似的需求,我们只有一个 slug 并且需要查询/查找帖子/页面/文章数据。

我们构建了一个 wordpress api v2 插件来查询多种帖子类型。

这是插件代码https://github.com/elevati/wp-api-multiple-posttype

于 2017-02-27T13:38:44.027 回答