One of my products requires a specific thank you page.
Here's the code I have. The Product ID is 1813 and the category is gimnasio-mental. I don't really need, nor want to include the category in this code, so if it can be simplified, even better!
add_action( 'template_redirect', 'wc_custom_redirect_after_purchase' );
function wc_custom_redirect_after_purchase() {
if ( ! is_wc_endpoint_url( 'order-received' ) ) return;
// Define the product IDs in this array
$product_ids = array( 1813 ); // or an empty array if not used
// Define the product categories (can be IDs, slugs or names)
$product_categories = array( 'gimnasio-mental' ); // or an empty array if not used
$redirection = false;
global $wp;
$order_id = intval( str_replace( 'checkout/order-received/', '', $wp->request ) ); // Order ID
$order = wc_get_order( $order_id ); // Get an instance of the WC_Order Object
// Iterating through order items and finding targeted products
foreach( $order->get_items() as $item ){
if( in_array( $item->get_product_id(), $product_ids ) || has_term( $product_categories, 'product_cat', $item->get_product_id() ) ) {
$redirection = true;
break;
}
}
// Make the custom redirection when a targeted product has been found in the order
if( $redirection ){
wp_redirect( home_url( '/gracias-gimnasio-mental/' ) );
exit;
}
}