php - 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'
));
}
解决方案
您可以添加过滤器以检查 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
请求参数可用于获取许多其他请求参数,以针对不同情况修改响应。
推荐阅读
- python - python代码中的自调用函数错误
- curl - 需要将 Stripe cURL api 调用转换为 axios
- javascript - 在codeigniter中从ajax解析数组多维到控制器?
- android - 适用于 Android API 16 的 Glide 和 OkHttp 无法正常工作
- docker - 无法使用 docker 启动 kurento 媒体服务器
- php - 客户访问 Superglobals
- javascript - 仅在 Firefox 中滚动时具有固定位置凸起的元素
- doctrine-orm - Symfony4 存储在具有关系的会话实体中
- git - 是否有必要从我们的 CI 管道提交 DVC 文件?
- vue.js - Vue CLI 从项目模块动态导入