W niedawno publikowanym artykuł „dodatkowy komunikat (np. tekst) w podziękowaniu za zamówienie w sklepie internetowym na WooCommerce (WordPress)” napisałem, że oprócz tego, że można do strony z podziękowaniem za zakupy dodać dodatkowe informacje, „można też przekierować na inną stronę”. Wtedy zapowiedziałem, że to temat na inny artykuł, i… niniejszym tę zapowiedź spełniam.
Przekierowanie po zamówieniu w WooCommerce
Bo choć komunikat taki ma sens, i w wielu przypadkach wystarczy, to mam na swoim koncie wdrożenia, gdzie po dokonaniu zakupu użytkownik musiał trafić na specjalną stronę, gdzie nie tylko znajdują się niezbędne informacje, ale… I tu można wstawić wiele, bo wiele jest tego typu potrzeb… ;-)
Ważne, że tego typu działanie – przekierowanie użytkownika po dokonaniu zakupu w sklepie internetowym na WooCommerce – można wykonać za pomocą kodu:
function webinsider_wp_woocommerce_thankyou_redirect(){
wp_redirect( 'https://webinsider.pl' );
exit;
}
add_action( 'woocommerce_thankyou', 'webinsider_wp_woocommerce_thankyou_redirect', 10 );
Powyższy kod – oczywiście po zmianie adresu przekierowania, o czym zapomina pewna firma, regularnie korzystająca z mojego kodu do przekierowywania po wysłaniu formularza w Divi – przekieruje klienta po zakupie na wybrany adres. Wystarczy dodać go np. do pliku functions.php motywu potomnego.
Oczywiście (powtórzenie, ale… ;-)) można powyższy kod uzupełnić o filtry, np. związane z typem płatności, produktami w koszyku czy – co być może najważniejsze – statusem płatności… Ciekawym pomysłem jest np. wstawienie tutaj kodu JavaScript, który wykona przekierowanie np. dopiero po kilku sekundach. Zależy, kto co potrzebuje.
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
Cześć,
potrzebuję przekierowania na konkretną stronę www, ale tylko dla jednego konkretnego produktu, który będzie w zamówieniu.
if($product_id == 174){
function dc_wp_woocommerce_thankyou_redirect(){
wp_redirect( 'https://prosty-biznes.pl/kontakt’ );
exit;
}
add_action( 'woocommerce_thankyou’, 'dc_wp_woocommerce_thankyou_redirect’, 10 );
}
w którym momencie robię błąd? Dzięki za podpowiedź.
Zacznij od wstawienia warunku do funkcji dc_wp_woocommerce_thankyou_redirect.
function dc_wp_woocommerce_thankyou_redirect(){
if($product_id == 174){
wp_redirect( 'https://prosty-biznes.pl/kontakt’ );
exit;
}
add_action( 'woocommerce_thankyou’, 'dc_wp_woocommerce_thankyou_redirect’, 10 );
}
W ten sposób przekierowuje wszystkie zamówienia do zakładki kontakt😕. Nie tylko kiedy jest zakupiony produkt o id 174.
Dzięki za pomoc… Czy warunek jest dobrze napisany? $product_id == 174
pozdrawiam
Ustawienie specyficznej strony podziękowania dla produktu o id = 174. Inne produkty mają standardową stronę podziękowania Woocommerce.
Działający kod – jeśli ktoś by potrzebował:
add_action( 'woocommerce_thankyou’, 'your_function_name’, 10);
function your_function_name($order_id)
{
$order = wc_get_order($order_id);
foreach($order->get_items() as $order_key => $order_value)
{
$product_id = $order_value->get_data()[’product_id’];
if($product_id == '174′)
{
wp_redirect( 'https://specyficznaStronaPodziekowania.pl’ );
exit;
}
}
}
Pozdrawiam, polecam szukać na https://stackoverflow.com/
Ogólnie Stackoverflow jest kopalnią wiedzy wszelakiej, choć czasem trzeba wiedzieć czego szukać i jak ze znalezionej informacji skorzystać, by nie wpakować się w problemy. Jak już widzisz, Twój pierwotny warunek był troszkę „za prosty”, choć w drugiej wersji pojawił się już w odpowiednim miejscu. Nie odpisałem wcześniej, ale można powiedzieć, że w sezonie letnim mam coś w stylu wakacji, czyli więcej czasu poświęcam na zwierzęta, ogródek, świeże powietrze, a mniej zaglądam do kompa… Przynajmniej jeśli nie dzieje się nic awaryjnego lub nie ma jakiegoś zlecenia do realizacji. Ale to co mogę, redukuję ;-)