0

来自 ASP.NET 方面的 WP 新手。将 WP 3.8.1 与来自 woocommerce 的 USPS 和 FEDEX 扩展一起使用,我试图排除除 FEDEX 地面费率以外的所有易燃且无法通过航空运输的产品的结帐页面。我已经编写了一个函数并将其放在我的主题 functions.php 文件中。我不工作。也许我在 add_filter 中使用了错误的标签。

想出了这个。所以我为那些需要它的人编辑了我的原始代码。

产品 ID 是硬编码的,需要进一步开发。可用的方法字符串很困难,直到我认为我需要做一个 print_r 来公开它们。取消注释该行以公开它们。它们特定于 woocommerce USPS 和 FEDEX 扩展,可能没有记录。

    // Hide USPS shipping methods when flammable items in cart 
    add_filter( 'woocommerce_available_shipping_methods', 'hide_usps_when_flammable_in_cart' , 1 );

    /** Hide usps shipping when flammable items in cart
        @param array $available_methods 
    */ 
    function hide_usps_when_flammable_in_cart( $available_methods ) {
         // printing the methods so I know the available methods to exclude
         // echo "<pre>" . print_r( $available_methods, true ) . "</pre>";
        global $woocommerce;
         // Get all products in cart
        $products = $woocommerce->cart->get_cart();
        //store product id's in array
        $volitile = array(170,191,192,194,196,199,201,204,206,208,209,210,212,214,217,262);

        // loop through the items looking for one in the ineligible array
        foreach ( $products as $key => $item ) {
            if( in_array( $item['product_id'], $volitile ) ) {
                unset($available_methods['usps:flat_rate_box_priority']);
                unset($available_methods['usps:flat_rate_box_express']);
                unset($available_methods['usps:D_PRIORITY_MAIL']);
                unset($available_methods['usps:D_STANDARD_POST']);
                unset($available_methods['fedex:FEDEX_EXPRESS_SAVER']);
                unset($available_methods['fedex:FEDEX_2_DAY_AM']);
                unset($available_methods['fedex:FIRST_OVERNIGHT']);
                unset($available_methods['fedex:PRIORITY_OVERNIGHT']);
                unset($available_methods['fedex:FEDEX_2_DAY']);
                unset($available_methods['fedex:STANDARD_OVERNIGHT']);
                break;
            }
        }

        return $available_methods;
    } 
4

0 回答 0