Wordpress REST API:如何检查 id 是不是存在于 url

Posted

技术标签:

【中文标题】Wordpress REST API:如何检查 id 是不是存在于 url【英文标题】:Wordpres REST API: How to check id if exist on urlWordpress REST API:如何检查 id 是否存在于 url 【发布时间】:2020-04-01 12:38:41 【问题描述】:

我正在使用 Wordpress REST API 来构建移动应用程序,并在(帖子类型)wooCommerce 上进行了大量自定义功能,具体而言,这使得请求时响应时间变长,例如,像这样的端点/wp-json/wc/v3/products

我的自定义是在产品帖子类型上注册新字段。

我需要检查它是否是这样的单个记录?

/wp-json/wc/v3/products/123456

或者像这样获取所有产品?

/wp-json/wc/v3/products

我的注册新字段的php代码:

add_action('rest_api_init','get_custom_field');

function get_custom_field() 

    register_rest_field('product', 'custom_variations', array(

       'get_callback' => 'custom_variations'

       ));

    register_rest_field('product', 'components', array(

       'get_callback' => 'product_components'

    ));


【问题讨论】:

我不太清楚你在问什么......还有,你的永久链接结构是什么? 我只需要在单个记录休息 API with id 路由中注册其余字段,所以这里在示例中 wp-json/wc/v3/product/54897 不是到处都有帖子类型产品 你找到什么了吗? @heshamshawky 【参考方案1】:

您可以添加过滤器以检查 url 中是否提供了 id。

add_filter('rest_prepare_product', 'prepareProductData', 10, 3);

function prepareProductData($response, $post, $request)

  $params = $request->get_params();
  $product_id_from_url = $params["id"];
  $should_append_extra_data = !empty( $product_id_from_url);

  //append extra data only when there's an id provided.
  if($should_append_extra_data == true) 
    //append here
  

所以在这种情况下,$product_id_from_url 将有 123456 对应于 /wp-json/wc/v3/products/123456

请求参数可用于获取许多其他请求参数,以针对不同情况修改响应。

【讨论】:

以上是关于Wordpress REST API:如何检查 id 是不是存在于 url的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress Rest Api 在自定义端点上使用 POST 更新内容

如何使用 REST_API wordpress 创建用户?

Wordpress REST API:如何在 WP REST API JSON 文件中获取“纯文字”内容?

如何使用 Wordpress Rest Api 获取当前登录用户?

如何在 Wordpress rest_api_init 回调函数中传递参数

如何使用 WordPress REST API v2 搜索帖子?