По умолчанию после оформления заказа / оплаты пользователя перенаправляет на стандартную страницу WooCommerce «Заказ принят». Но что, если вам полностью хочется передалать станицу «Спасибо»?
Сделать полноценный лендос – добавить туда предложения партнёров например. В таком случае не очень удобно будет всё это менять в шаблоне WooCommerce, проще редиректнуть на какую-то произольную страницу.
Прежде чем мы начнём, хочу порекомендовать вам свой видеокурс по WooCommerce 🚀
Когда мы говорим о редиректах в WordPress, мы всегда имеем ввиду экшн-хук template_redirect
. И данная ситуация не исключение.
Код из этого урока можете вставлять в файл functions.php
вашей текущей темы, хорошо бы, если это дочерняя тема или ваша кастомная.
add_action( 'template_redirect', 'truemisha_redirect_to_thank_you' ); function truemisha_redirect_to_thank_you() { // если не страница "Заказ принят", то ничего не делаем if( ! is_order_received_page() ) { return; } // неплохо бы проверить статус заказа, не редиректим зафейленные заказы if( isset( $_GET[ 'key' ] ) ) { $order_id = wc_get_order_id_by_order_key( $_GET[ 'key' ] ); $order = wc_get_order( $order_id ); if( $order->has_status( 'failed' ) ) { return; } } wp_redirect( site_url( 'new-thank-you' ) ); exit; }
Тут мы по сути экономим на одном редиректе. А ещё взгляните, как сильно упростился наш код.
add_action( 'woocommerce_get_return_url', 'truemisha_redirect_to_thank_you_2', 90, 2 ); function truemisha_redirect_to_thank_you_2( $thank_you_url, $order ) { // неплохо бы проверить статус заказа, не редиректим зафейленные заказы if( $order->has_status( 'failed' ) ) { return $thank_you_url; } return site_url( 'new-thank-you' ); }
Выбирайте тот способ, который вы считаете более правильным или удобным для себя.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Спасибо за статью. Подскажите пожалуйста, ищу правильное решение. После оформления заказа многие клиенты не закрывают на браузере страницу спасибо. При открытии браузера страница автоматически обновляется тем самым повторно меняет статус обратно «в обработке», даже если заказ уже выполнен. Первый вариант с редиректом исправит это?
Добрый день!
Да.
Здравствуйте! Такой Вопрос, А как мне в страницу "заказ принят" просто впихнуть свой код php(а вернее мне надо воткнуть ссылку на скачку PDF файла со счетом, для тех кто не вводил e-mail и не сможет получить счет)
Добрый день!
Можете начать с этого урока :)
Также там из объекта заказа вы можете получить данные, был ли введён email или нет.
Доброго времени суток!
У меня возникла проблема, после нажатия на подтверждение заказа ничего не происходит, нет редиректа даже на стандартную страницу woo thankyou, как добраться хотя бы до стандартной?
Здравствуйте, а в консоли браузера есть ошибки?
Здравствуйте! Подскажите, а можно ли вообще миновать переход на подобную страницу (Заказ принят)? Т.е., чтобы после нажатия кнопки "Подтвердить заказ" сразу открывалась страница оплаты? Мы используем модуль от Робокассы и в этом есть сложность - только на странице "Заказ принят" формируется код для кнопки оплатить (номер заказа, сам заказ, сумма и т.п.). А самостоятельно что-то написать для формирования подобного кода нет знаний.
Здравствуйте, да конечно! Не помню, возможно я упоминал это в гайде про платёжные шлюзы.
Здравствуйте! Подскажите решение. У меня добавляется товар в корзину, потом человек нажимает оплатить, идет переход на страницу оплаты платежной системы, оплата происходит на стороне платежной системы, не на моем сайте, после успешной оплаты идет переход на мой сайт в БЛОГ, а должно идти на страницу Спасибо за заказ. В настройках платежной системы можно указать куда переводить клиента после успешной оплаты, но я не понимаю какую страницу указывать? И из за этого чя так понимаю переход идет в Блог. Подскажите какую страницу нужно указать для перенаправления после успешной оплаты на стороне платежной системы? И возможно подскажете еще момент, нужно добавить тег отслеживания конверсии на эту страницу Спасибо за покупку.
Здравствуйте,
Если вы указываете страницу именно на стороне платёжной системы, то предполагаю, будет проще создать отдельную страницу "Спасибо" у вас на сайте и указать ссылку на неё.