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 更新内容
Wordpress REST API:如何在 WP REST API JSON 文件中获取“纯文字”内容?
如何使用 Wordpress Rest Api 获取当前登录用户?