Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Woocommerce REST API v2:向订单添加自定义数据的问题_Woocommerce_Hook Woocommerce_Woocommerce Rest Api - Fatal编程技术网

Woocommerce REST API v2:向订单添加自定义数据的问题

Woocommerce REST API v2:向订单添加自定义数据的问题,woocommerce,hook-woocommerce,woocommerce-rest-api,Woocommerce,Hook Woocommerce,Woocommerce Rest Api,我有一个网站运行旧版本的Woo v2.5.5,使用旧版本的v3作为API。我能够使用ActionWooCommerce\uAPI\uOrder\u响应向订单添加数据 比如: add_action( 'woocommerce_api_order_response', 'add_testing_api_function', 10, 1 ); function add_testing_api_function( $order_data ) { $order_data['foo'] = "tes

我有一个网站运行旧版本的Woo v2.5.5,使用旧版本的v3作为API。我能够使用ActionWooCommerce\uAPI\uOrder\u响应向订单添加数据

比如:

add_action( 'woocommerce_api_order_response', 'add_testing_api_function', 10, 1 );
function add_testing_api_function( $order_data ) {
    $order_data['foo'] = "testing";
    return $order_data;
}
这在较旧的API链接上运行良好:

但是,我需要更新到Woo v3.3+,REST API的服务器设置如下:


我的自定义数据不再显示,挂钩也不起作用。还有其他我可以使用的工具吗?

WC API确实是一个很棒的工具。在WooCommerce 3.x中将您自己的自定义数据添加到WC API shop order的响应中仍然可以像使用旧版API一样轻松地实现

WooCommerce为大多数API响应准备了这些过滤器。注意,它们的格式是woocommerce_rest_prepare_uu{$post_type},其中$post_type是一个post类型或分类名称,如shop_orders或product_cat。在WooCommerce 2.7+中,其中一些过滤器还具有_对象后缀

只要我们的目的是向订单中添加自定义数据,正确的过滤器将使用woocommerce\u rest\u prepare\u shop\u order\u object,其中shop\u order是我们的{$post\u type},后跟上述的_object后缀

下面的函数有条件地获取用户meta并返回用户的社交配置文件的头像url(如果可用)

/** *向WC API车间订单响应添加自定义数据 *在此处使用$order覆盖$object,以便更容易访问其属性 */ 函数my_wc_rest_prepare_order$response、$order、$request{ 如果$response为空->数据 返回$response; $order\u id=$order->get\u id; //获取WC_Order对象的实例 $order=wc\U get\U order$order\U id; //从WC_Order方法获取用户ID $user\u id=$order->get\u customer\u id;//$order->get\u user\u id;//或$order->get\u customer\u id; //检查WooCommerce社交登录用户头像 如果类_存在“WC_社会_登录”{ $fb\u avatar=get\u user\u meta$user\u id,“\u wc\u social\u login\u facebook\u profile\u image”,true; $gplus\u avatar=get\u user\u meta$user\u id,“\u wc\u social\u login\u google\u profile\u image”,true; } $social_data=数组; $avatar_url=数组; $customer\u picture=数组 “默认设置”=>获取\u头像\u url$user\u id, “facebook”=>$fb\U头像?esc\U url$fb\U头像:, “谷歌”=>$gplus\u化身?esc\u url$gplus\u化身: ; $response->data['social_data']['avatar_url']=$customer_picture; 返回$response; } 添加过滤器“woocommerce\u rest\u prepare\u shop\u order\u object”、“my\u wc\u rest\u prepare\u order”,10,3; 结果: [{ 社会数据:{ 阿凡达网址:{ 违约:https://secure.gravatar.com/avatar/6e27402273b47316097247a2057492f8?s=96&d=mm&r=g, 脸谱网:https://graph.facebook.com/2028542057604385/picture?width=150&038;高度=150, 谷歌: } }, }]
你好。我希望到那时你已经克服了这个问题。。。无论如何,您的问题符合我几个月前升级到WooCommerce 3.x时提出的相同要求。我正在详细阐述一个可能对其他人有帮助的答案。和平