首页 > 解决方案 > Wordpres REST API:如何检查 url 上是否存在 id

问题描述

我正在使用 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'

    ));
}

标签: phpwordpresswordpress-rest-api

解决方案


您可以添加过滤器以检查 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_url123456/wp-json/wc/v3/products/123456

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


推荐阅读