我的网站允许客户购买订阅计划。它使用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的相关线程。

07-24 09:47
查看更多