如何根据他们购买的产品将WooCommerce客户重定向到特定的感谢页面?我有一个产品需要填写表格以获取更多信息,我想将该表格放在感谢页面上。我到目前为止的代码如下所示,但这仅适用于所有产品的通用感谢页。
add_action( 'template_redirect', 'wc_custom_redirect_after_purchase' );
function wc_custom_redirect_after_purchase() {
global $wp;
if ( is_checkout() && ! empty( $wp->query_vars['order-received'] ) ) {
wp_redirect( 'http://www.yoururl.com/your-page/' );
exit;
}
}
答案 0 :(得分:2)
在该功能中,您必须设置目标产品ID或产品类别,以便在订购时对这些商品进行自定义重定向:
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( 37, 25, 50 ); // or an empty array if not used
// Define the product categories (can be IDs, slugs or names)
$product_categories = array( 'clothing' ); // 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( '/your-page/' ) );
exit;
}
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
在WooCommerce 3上测试并正常工作。
答案 1 :(得分:1)
以下是简单页面重定向的示例:
add_action( 'template_redirect', 'wc_custom_redirect_after_purchase');
function bbloomer_redirectcustom( $order_id ){
$order = new WC_Order( $order_id );
$url = 'http://yoursite.com/custom-url';
if ( $order->status != 'failed' ) {
wp_redirect($url);
exit;
}
}