php - 是否可以扩展 woocommerce 产品休息端点?
问题描述
有没有办法以非破坏性方式扩展 woocommerce rest api 中的产品对象/wp-json/wc/v3/products
,因此使用该端点的插件不会中断。
我目前已经尝试创建自己的休息端点来复制对象,但现在缺少很多数据。
我也尝试过类似的方法,但似乎没有用。
add_filter( 'woocommerce_rest_prepare_product', 'wc_rest_api_add_custom_data_to_product', 90, 2 );
function wc_rest_api_add_custom_data_to_product( $response, $post ) {
// retrieve a custom field and add it to API response
$response->data['your_new_key'] = get_post_meta( $post->ID, '_your_custom_filed_key', true );
return $response;
}
资料来源:https ://francescocarlucci.com/woocommerce/woocommerce-api-custom-data-default-endpoints/
在这方面的任何帮助将不胜感激。
解决方案
我找到了一种使用 register_rest_field 扩展端点的方法。
这样我就可以扩展(添加)和/或覆盖(更新)一个对象。
function register_images_field() {
register_rest_field(
'product',
'images',
array(
'get_callback' => function ( $object ) {
$medium_large = wp_get_attachment_image_src( get_post_thumbnail_id( $object['id'] ), 'medium_large' );
$medium_large_url = $medium_large['0'];
$large = wp_get_attachment_image_src( get_post_thumbnail_id( $object['id'] ), 'large' );
$large_url = $large['0'];
return array(
'medium_large' => $medium_large_url,
'large' => $large_url,
);
},
'update_callback' => null,
'schema' => null,
)
);
}
来源:https ://developer.wordpress.org/reference/functions/register_rest_field/
推荐阅读
- reactjs - 'redirect_uri' 对于 Microsoft 登录 MSAL 身份验证 Azure 无效
- powershell - 获取原始脚本名称,包括脚本名称和可能的其他名称
- git - 带有私有子模块的 github 操作的 ssh 问题
- python - 如何使用字典来实现“switch/case”,其中评估值可能会失败?
- terraform - terraform null_resource 频繁触发变更
- flutter - Helvetica 没有 Unicode 支持 Flutter 使用 Pdf 包
- python - Plotly 折线图未正确显示
- r - 如何使 selectInput 和 renderPlotly 的可折叠树输出反应?出现错误:参数的“类型”(列表)无效
- ios - SwiftUI:支持粗体和斜体的自定义字体
- c - C struct内存存储顺序