WooCommerce перенаправление полученных заказов в зависимости от способа оплаты

Обычно в WooCommerce отправленные заказы перенаправляются на /order-received/ после оплаты

Можно ли перенаправить клиента на пользовательскую страницу для определенного способа оплаты?

Например:

Payment method 1 -> /order-received/
Payment method 2 -> /custom-page/
Payment method 3 -> /order-received/

2

Решение

С пользовательской функцией подключен template_redirect действие ловушка с помощью условной функции is_wc_endpoint_url() и таргетинг на желаемый способ оплаты, чтобы перенаправить клиента на определенную страницу:

add_action( 'template_redirect', 'thankyou_custom_payment_redirect');
function thankyou_custom_payment_redirect(){
if ( is_wc_endpoint_url( 'order-received' ) ) {
global $wp;

// Get the order ID
$order_id =  intval( str_replace( 'checkout/order-received/', '', $wp->request ) );

// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// Set HERE your Payment Gateway ID
if( $order->get_payment_method() == 'cheque' ){

// Set HERE your custom URL path
wp_redirect( home_url( '/custom-page/' ) );
}
}
exit(); // always exit
}

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Этот код протестирован и работает.

Как получить идентификатор платежного шлюза (настройки WC> Оформить заказ табуляция):

введите описание изображения здесь

2

Другие решения

Небольшая коррекция.

«выход» должен быть в последнем условии

add_action( 'template_redirect', 'thankyou_custom_payment_redirect');
function thankyou_custom_payment_redirect(){
if ( is_wc_endpoint_url( 'order-received' ) ) {
global $wp;

// Get the order ID
$order_id =  intval( str_replace( 'checkout/order-received/', '', $wp->request ) );

// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );

// Set HERE your Payment Gateway ID
if( $order->get_payment_method() == 'cheque' ){

// Set HERE your custom URL path
wp_redirect( home_url( '/custom-page/' ) );
exit(); // always exit
}
}
}
-1

По вопросам рекламы [email protected]