我的网站允许客户购买订阅计划。它使用Woocommerce引导客户向Paypal付款。
一旦进入贝宝,“订阅详细信息”将列出如下:
订阅1524(订单1522)
如何从订阅详细信息中完全删除“ Subscription 1524(Order 1522)-”?
我一直在寻找woocommerce挂钩,以解决此问题。在here中有一个非常有用的woocommerce php钩子列表。在对所有的钩子进行排序之后,似乎最接近我想要的是woocommerce_paypal_get_order_item_name
。
我尝试在php中实现解决方案如下:
add_filter( 'woocommerce_paypal_get_order_item_name', $item_name, $order, $item );
function change_paypal_description( $item_name, $order, $item) {
return 'test';
}
但是,这似乎并不能解决问题。我认为很可能是我尝试使用错误的钩子?任何帮助将不胜感激!
最佳答案
您没有为woocommerce_paypal_get_order_item_name
使用正确的方法,因此您的代码无法按原样工作。尝试以下方法:
add_filter( 'woocommerce_paypal_get_order_item_name', 'change_paypal_item_name', 10, 3 );
function change_paypal_item_name( $item_name, $order, $item ) {
return 'test';
}
或定位“订阅”产品类型:
add_filter( 'woocommerce_paypal_get_order_item_name', 'change_paypal_item_name', 10, 3 );
function change_paypal_item_name( $item_name, $order, $item ) {
// get an instance of the WC_Product object
$product = $item->get_product();
// Target subscriptions type
if( $product->is_type( 'subscription' ) )
$item_name = 'test';
return $item_name;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。它应该工作。
还有另外两个过滤器挂钩,可以专门用于Paypal来更改发送的详细信息:
woocommerce_paypal_args
具有2个参数:$args
和$order
woocommerce_paypal_line_item
具有5个参数$ item,$ item_name,$ quantity,$ amount和$ item_number。第一个允许更改订单详细信息,第二个允许更改订单项目详细信息,然后再将数据发送到网关。
StackOverFlow上
woocommerce_paypal_args
的相关线程。