Soms wil je na de aankoop van een product een specifieke pagina tonen. Bijvoorbeeld in verband met een upsell zoals besproken in een eerder blogartikel.
Een belangrijk beslispunt om te nemen is, of je ook naar een andere pagina wilt redirecten, indien er meerdere producten in de winkelwagen zitten. In onderstaand voorbeeld ga ik ervan uit, dat je dit alleen wilt indien het beoogde product uitsluitend in de winkelwagen voorkomt. Mocht je anders willen, zal je de code wat aan moeten passen. Dat komt er in grote lijnen op neer op het verwijderen van alle referenties naar $others_found… of simpelweg de $others_found uit de laatste conditional te verwijderen.
<?php
add_action( 'template_redirect', 'wxp_custom_redirect_after_purchase' );
function wxp_custom_redirect_after_purchase($order_id) {
if ( ! is_wc_endpoint_url( 'order-received' ) )
return;
$order = wc_get_order( $order_id );
if ($order->has_status('failed')) return;
$targeted_found = $others_found = false;
$url_found = '';
foreach( $order->get_items() as $item ){
if( $item->get_product_id() == 11 ) {
$targeted_found = true;
$url_found = '/product-11/';
} elseif ( $item->get_product_id() == 12 ) {
if ($targeted_found) $others_found = true;
$targeted_found = true;
$url_found = '/product-12/';
} elseif ( $item->get_product_id() == 13 ) {
if ($targeted_found) $others_found = true;
$targeted_found = true;
$url_found = '/product-13/';
} else {
$others_found = true;
}
}
// Enable redirection when only targeted product(s) are exclusively in the order
if( $targeted_found && ! $others_found ){
wp_redirect( home_url( $url_found ) );
exit;
}
}
Vervang in de code hierboven de product ID’s door de product ID’s waar je een doorverwijzing voor wilt hebben, de URL’s door de bijbehorende URL’s en test het goed uit.
Succes!