Перенаправление на другой URL-адрес после получения заказа или/перенаправление на пользовательскую страницу благодарности после оплаты заказов WooCommerce

После успешной оплаты через платежный шлюз Razorpay мне нужно перенаправить на мою специально созданную страницу благодарности вместо URL-адреса перенаправления по умолчанию для плагина платежного шлюза Razorpay.

Моя проблема проиллюстрирована: записанное на экране видео

Вот что я пробовал в файле function.php:

/* Redirect WooCommerce to a custom page after checkout */
add_action( 'woocommerce_thankyou', 're_redirect_woo_checkout');
function re_redirect_woo_checkout( $order_id ){
    $order = wc_get_order( $order_id );
    $url = 'custom thankyou page url here';
    if ( ! $order->has_status( 'failed' ) ) {
        wp_safe_redirect( $url );
        exit;
    }
}

Он работает с продуктом с нулевой оплатой, которому не требуется шлюз razorpay для всплывающего окна для оплаты, он автоматически перенаправляется мгновенно при нажатии кнопки «Перейти к оформлению заказа». Но при нажатии кнопки «Перейти к оформлению платежа выше нулевой стоимости» всплывающее окно шлюза razorpay требуется для оплаты через другую платежную систему. После успешной оплаты через платежный шлюз razorpay оно не перенаправляется на выбранную мной конкретную страницу (пользовательскую страницу благодарности).

🤔 А знаете ли вы, что...
PHP является интерпретируемым языком программирования.


87
1

Ответ:

Решено

наконец-то я придумал этот код, и он сработал

add_action( 'template_redirect', 'wc_thank_you_redirect' );
function wc_thank_you_redirect(){ 
  if ( isset( $_GET['key'] ) && is_wc_endpoint_url( 'order-received' ) ) { //change order-received to your endpoint if you will change it in the future 
    $order_id = wc_get_order_id_by_order_key( $_GET['key'] );
    if ( ! empty( $order_id ) ) {
      $order = wc_get_order( $order_id );
      $order_status = $order->get_status();
        
        if ('failed' == $order_status ) {  //failed order status
          wp_redirect( 'your custom failed page url here' ); //change url here
          exit;
        } else {
          wp_redirect( 'your custom thank you page url here' ); //change url here for other statuses redirect
          exit;
        }
      }
    }
  }
//code end for redirect after order received