Обычно в WooCommerce отправленные заказы перенаправляются на /order-received/
после оплаты
Можно ли перенаправить клиента на пользовательскую страницу для определенного способа оплаты?
Например:
Payment method 1 -> /order-received/
Payment method 2 -> /custom-page/
Payment method 3 -> /order-received/
С пользовательской функцией подключен 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> Оформить заказ табуляция):
Небольшая коррекция.
«выход» должен быть в последнем условии
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
}
}
}