2017-10-05 81 views
0

我們在我們的Woocommerce電子商店中使用這個WooCommerce Custom Fields商業插件來個性化定製我們的產品,並且我試圖找到一種方法如果關鍵'wccf'是隱藏付款方式在產品元。在Woocommerce中隱藏基於產品元的付款方式

我想升級下面的代碼,我想替換送貨國家檢查,但我不知道如何獲取並檢查'wccf'鍵。

function payment_gateway_disable_country($available_gateways){ 
    global $woocommerce; 

    if (isset($available_gateways['cod']) && $woocommerce->customer->get_shipping_country() <> 'IT'){ 
     unset($available_gateways['cod']); 
    } 
    return $available_gateways; 
} 
add_filter('woocommerce_available_payment_gateways', 'payment_gateway_disable_country'); 

有人能幫我嗎?

+0

item meta = product meta我讓你知道嗎? –

+0

我的意思是[this](https://ctrlv.cz/jGxr)(這是來自插件的文檔) – mchtrnk

+0

請注意,這個插件是一個真正的噩夢(與Woocommerce很多人都沒有解決它的問題,這裏在StackOverFlow中) ...相反,您應該更好地使用[高級自定義字段](https://wordpress.org/plugins/advanced-custom-fields/)免費和非常有據可查的插件,或者最好的方法是使用自定義代碼製作自己的自定義字段。 ** Answerers無法猜測如何使用您的實際插件獲取數據...... ** – LoicTheAztec

回答

0

謝謝大家的支持和幫助!最後,插件開發人員向我發送了一個解決了我的問題的代碼。

$cart = WC()->cart->get_cart(); 
$wccf_is_set = false; 

foreach ($cart as $cart_item) { 

if (isset($cart_item['wccf'])) { 

    // mark that there's data set 
    $wccf_is_set = true; 
    } 
} 

if ($wccf_is_set === true) { 
// do what you need if the data is set 

} 
0

請嘗試使用以下代碼。將代碼放在functions.php的

function payment_gateway_disable_country($available_gateways){ 
    global $woocommerce; 
    if (isset($available_gateways['cod']) && $woocommerce->customer->get_shipping_country() <> 'IT'){ 
     //fetching the cart 
     $session_data = WC()->session->get('wccf'); 
     if(!empty($session_data)){ 
      unset($available_gateways['cod']); 
     } 
    } 
    return $available_gateways; 
} 
add_filter('woocommerce_available_payment_gateways', 'payment_gateway_disable_country'); 
+0

謝謝你的幫助!不幸的是,它並沒有解決我的問題:(雖然我已經添加了定製,但我仍然可以在付款方式中看到COD。) _這裏是我剛纔獲得的插件開發人員的建議「您只需要遍歷所有購物車項目,檢查是否有['wccf']鍵設置,如果是 - 刪除運輸方法。「_ – mchtrnk

0

喜歡的東西在你的過濾器應該這樣做以下,假設產品在其元數據的wccf條目。

function payment_gateway_disable_wccf($available_gateways){ 

    $cart = WC()->cart; 

    if($cart){ 

     foreach($cart->get_cart() as $currItem){ 

      if(get_post_meta($currItem['product_id'], 'wccf', true)) 
       unset($available_gateways['cod']); 
     } 
    } 

    return $available_gateways; 
} 

add_filter('woocommerce_available_payment_gateways', 'payment_gateway_disable_wccf'); 
+0

謝謝你的幫助!不幸的是,我仍然可以看到COD在支付方式,所以這段代碼不起作用。我添加了一個自定義,它會添加類似[this](https://ctrlv.cz/y0dE)。我還有一個想法。是否可以檢查單詞**Gravírovat**是否在購物車頁面上? – mchtrnk