如果 WooCommerce 中没有特定类别的产品,则自定义感谢重定向

问题描述 投票:0回答:1

我有一个功能,可以将 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;
}

我该如何处理这个问题?

php woocommerce product orders taxonomy-terms
1个回答
0
投票

以下内容将允许您检查是否没有来自“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 文件中(或插件中)。应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.