我有一个功能,可以将 WooCommerce 结账页面重定向到自定义网站。
此代码运行良好,但我只想在产品类别不是“egyeb”时启用该代码。
这是我尝试过的,但需要一些适合我的情况的代码:
add_action( 'template_redirect', 'jupiterx_redirect_woocommerce_thankyou_page' );
function jupiterx_redirect_woocommerce_thankyou_page() {
// Make sure we are on the thank you page.
if( ! is_wc_endpoint_url( 'order-received' ) || empty( $_GET[ 'key' ] ) ) {
return;
}
// Our custom URL address.
$custom_url = site_url( '/idopont-regisztracio' );
// Redirect client.
wp_safe_redirect( $custom_url );
// Exit to prevent an infinite loop.
exit;
}
我该如何处理这个问题?
以下内容将允许您检查是否没有来自“egyeb”类别的订单商品,从而启用从订单接收端点到自定义页面的重定向:
add_action( 'template_redirect', 'jupiterx_thankyou_custom_redirect' );
function jupiterx_thankyou_custom_redirect() {
global $wp;
// Only for thankyou page
if ( is_wc_endpoint_url('order-received') && ! empty($_GET['key']) && isset($wp->query_vars['order-received']) ) {
$order_id = absint($wp->query_vars['order-received']); // The order ID
$order = wc_get_order( $order_id ); // The WC_Order object
$egyeb_found = false; // Initializing
// loop through order items
foreach( $order->get_items() as $item ) {
// Check for "egyeb" category
if ( has_term( 'egyeb', 'product_cat', $item->get_product_id() ) ) {
$egyeb_found = true;
break; // Stop the loop
}
}
if ( ! $egyeb_found ) {
wp_safe_redirect( site_url( '/idopont-regisztracio' )); // Redirect customer
exit(); // Exit to prevent an infinite loop.
}
}
}
代码位于子主题的functions.php 文件中(或插件中)。应该可以。