如何在Woocommerce中动态更改PayPal地址


How to dynamically change the PayPal address in Woocommerce?

我正在尝试更改Woocommerce使用的PayPal地址,具体取决于它们所在的页面。我目前只有 5 种产品,所有 5 种都需要使用不同的PayPal地址。

我发现这个钩子可以更改PayPal地址,尽管不太确定如何准确添加它(代码显然已有 3 年的历史)。

$paypal_args = apply_filters( 'woocommerce_paypal_args', $paypal_args );
add_filter( 'woocommerce_paypal_args' , 'custom_override_paypal_email' );
function custom_override_paypal_email( $paypal_args ) {
    $paypal_args['business'] = 'paypalemail@domain.com';
    print_r( $paypal_args['business'] );
    return $paypal_args;
}

如何使用此钩子根据用户所在的页面/产品更改PayPal地址?

我检查过并发现woocommerce_paypal_args有两个参数,设置和顺序。因此,根据订单,我们可以检查它拥有的产品并使用适当的电子邮件。

add_filter( 'woocommerce_paypal_args' , 'custom_override_paypal_email', 10, 2 );
function custom_override_paypal_email( $paypal_args, $order ) {
    foreach ( $order->get_items() as $item ) {
       switch( $item['product_id'] ) {
           case 561:
             $paypal_args['business'] = 'paypalemail1@domain.com';
             break;
           case 562:
             $paypal_args['business'] = 'paypalemail2@domain.com';
             break;
       }
    }
    return $paypal_args;
}

请注意,您必须确保购物车上只能有一件商品。如果购物车中有 1 个以上的产品,这将使用foreach循环中最后找到的产品。以上代码仅供参考,请相应更改。