Изменение адреса PayPal на основе общей суммы заказа в WooCommerce

#php #wordpress #woocommerce #paypal

#php #wordpress #woocommerce #paypal

Вопрос:

Я ищу решение своей проблемы. Я хотел бы изменить адрес электронной почты PayPal на основе общего количества заказов WooCommerce.

Итак, если общая сумма заказа составляет <10$

  • Получатель PayPal = paypalemail1@domain.com

Ещё

  • Получатель PayPal = paypalemail2@domain.com

Я попытался выполнить поиск здесь, и единственным кодом, который я нашел, был этот:

 add_filter( 'woocommerce_paypal_args', 'woocommerce_paypal_args', 10, 2 );
    function woocommerce_paypal_args( $paypal_args, $order ) {

    //Get the customer ID
    $user_id = $order->get_user_id();

    // Get the user data
    $user_data = get_userdata( $customer_id );

    // Adding an additional recipient for a custom user role

    if ( in_array( 'wholesale_customer', $user_data->roles )  )
        $paypal_args['business'] = 'email@email.com';

    return $paypal_args;
}
 

Но здесь все зависит не от общего количества заказов WooCommerce, а от роли пользователя. Есть ли какой-нибудь способ персонализировать его?

Ответ №1:

woocommerce_paypal_args имеет два аргумента: настройки и $order объект. Таким образом, на основе заказа мы можем получить общую сумму и на основе этого изменить адрес электронной почты

 function filter_woocommerce_paypal_args( $paypal_args, $order ) {
    // Get total
    $order_total = $order->get_total();
    
    // Less then 10
    if ( $order_total < 10 ) {
        $paypal_args['business'] = 'paypalemail1@domain.com';
    } else {
        $paypal_args['business'] = 'paypalemail2@domain.com';       
    }

    return $paypal_args;
}
add_filter( 'woocommerce_paypal_args', 'filter_woocommerce_paypal_args', 10, 2 );