如何解决Woocommerce REST API add_filter 不起作用
我创建了一个 API 来使用 API 添加新的购物车项目数据。我认为过滤器在代码中不起作用。
注册路线:
register_rest_route(
'ecm-api','/setGiftMessage/',array(
'methods' => 'POST','callback' => array($this,'setGiftMessage')
)
);
函数定义:
public function setGiftMessage($request){
global $woocommerce,$sitepress;
$woocommerce->frontend_includes();
$lang = $request['lang'];
$user_id = $request['user_id'];
$product_id = $request['product_id'];
$written_message = $request['written_message'];
if(empty($user_id)){
$response['status'] = 0;
$response['message'] = __('User id is required',self::domainText);
$response['data'] = new stdClass();
return new WP_REST_Response($response,200);
}
wp_set_current_user( $user_id );
$woocommerce->session = new WC_Session_Handler();
$woocommerce->session->init();
$woocommerce->customer = new WC_Customer( get_current_user_id(),true );
$woocommerce->cart = new WC_Cart();
$items = $woocommerce->cart->get_cart();
add_filter( 'woocommerce_add_cart_item_data',function($cart_item_data,$product_id,$variation_id) use($request) {
$cart_item_data['msg_on_gift']='wish you happy birthday';
return $cart_item_data;
},10,3 );
$woocommerce->cart->persistent_cart_update();
$response['status'] = $cart_item_data;
$response['message'] = __("Gift Message to saved",self::domainText);
return new WP_REST_Response($response,200);
}
我也尝试将过滤器注册为一个单独的函数:
add_filter('woocommerce_add_cart_item_data',array($this,'add_gift_message_to_cart'),3 );
public function add_gift_message_to_cart($cart_item_data,$variation_id)
{
$cart_item_data['msg_on_gift']='wish you happy birthday';
return $cart_item_data;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。