Перенаправление на другой 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 оно не перенаправляется на выбранную мной конкретную страницу (пользовательскую страницу благодарности).

я пытался реализовать код вашего ответа, но не получилось: drive.google.com/file/d/1Bgyv-FWbZrQA4ibimt8JIGBZrLqSg2Ju/…

ank 29.08.2024 10:20

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

ank 29.08.2024 19:23

Я нашел какое-то решение, которое я нашел, перенаправляя кнопку включения/отключения перенаправления в плагине Tutor lms, поэтому, если я включу эту опцию, она будет работать правильно, перенаправляясь на страницу панели управления зарегистрированного курса, если отключить ее, она ничего не делает, только показывает страницу полученного заказа после завершения оплаты. но я не могу понять, как эта функция у них это получается, какой код они написали.drive.google.com/file/d/1hAOMQlpNymSWROeQ07pKD6dE-Ltw‌​XZGS/…

ank 29.08.2024 22:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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

Другие вопросы по теме