代码之家  ›  专栏  ›  技术社区  ›  Radu

是否基于产品或类别收到有条件WooCommerce订单文本?

  •  1
  • Radu  · 技术社区  · 6 年前

    对于Woocommerce,我找到了这段代码,但我需要将其设置为以产品id为条件:

    add_action( 'woocommerce_thankyou', 'custom_thankyou_text', 1, 0);
    function custom_thankyou_text(){
        echo '<p class="thankyou-custom-text">If you do not see the download button(s) below, please refresh the page. Processing can take a few minutes.</p>';
    }
    

    如何根据购买的产品显示特定的WooCommerce感谢页面文本?

    我还发现这个条件示例非常适合(没有重定向,我不需要重定向):

    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;
        }
    }
    

    有没有办法将两者结合起来以获得所需的结果?

    1 回复  |  直到 6 年前
        1
  •  1
  •   LoicTheAztec    6 年前

    这可以在下面的示例中轻松完成,您必须定义目标产品ID和产品类别(用于测试)。因此,此示例将显示一条自定义消息:

    • 对于特定产品ID
    • 针对特定产品类别
    • 对于所有其他情况

    代码:

    add_action( 'woocommerce_thankyou', 'custom_thankyou_text', 1, 1);
    function custom_thankyou_text( $order_id ){
        // HERE Define Your product IDs below
        $product_id1 = 30;
        $product_id2 = 40;
    
        // HERE Define Your product category (ID, slug or name)
        $category = array('clothing');
    
        // Get the WC_Order object (an instance)
        $order = wc_get_order( $order_id );
        $product_ids = array();
        $has_category = false;
    
        // Loop through the order items
        foreach( $order->get_items() as $item ){
            // PRODUCT ID: Store the product ID in an array
            $product_ids[] = $item->get_product_id(); 
    
            // PRODUCT CATEGORY
            if( has_term( $category, 'product_cat', $item->get_product_id() ) )
                $has_category = true;
        }
        // For first product ID 
        if( in_array( $product_id1, $product_ids ) ){
            echo '<p class="thankyou-custom-text">Custom message for Product ID .'.$product_id1.'</p>';
        }
        // For Second product ID 
        elseif( in_array( $product_id2, $product_ids ) ){
            echo '<p class="thankyou-custom-text">Custom message for Product ID .'.$product_id1.'</p>';
        }
        // For product category 
        elseif( $has_category ){
            echo '<p class="thankyou-custom-text">Custom message for Product Category.</p>';
        } 
        // For all other cases
        else {
            echo '<p class="thankyou-custom-text">If you do not see the download button(s) below, please refresh the page. Processing can take a few minutes.</p>';
        }
    }
    

    代码进入功能。活动子主题(或活动主题)的php文件。

    测试和工作