2017-10-05 9 views
0

私たちはこの商品を個別にカスタマイズするためにこのWooCommerce Custom Fields商用プラグインを使用しています。製品メタ内にある。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

私は[これ](https://ctrlv.cz/jGxr)を意味しています(プラグインのドキュメントからです) – mchtrnk

+0

親切ですが、このプラグインは本当の悪夢です(Woocommerceの多くの人々が未解決の問題をStackOverFlowで持っていました) ...代わりに、[高度なカスタムフィールド](https://wordpress.org/plugins/advanced-custom-fields/)を使い、プラグインを文書化しておくか、またはカスタムコードで独自のカスタムフィールドを作成することをお勧めします。 **回答者はあなたの実際のプラグインでデータを取得する方法を推測することはできません... ** – 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

以下のコードを試してください。製品は、そのメタデータでwccfエントリを持っていると仮定すると、あなたのフィルタで次のようなものは、それを行う必要があります

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

ご協力いただきありがとうございます! Unforunately、それは私の問題を解決しません:(私はまだ支払方法で代金を見ることができますが、私はカスタマイズを追加することができます _これは私が一瞬前に取得するプラグインの開発者からアドバイスです "あなたはすべてのあなたのカート[wccf]キーがセットされているかどうかを確認し、そうであれば配送方法を削除してください "_ – mchtrnk

0

のfunctions.phpにコードを入れてください。

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

助けてくれてありがとうございます!決してお支払い方法で代金が見えるので、このコードは機能しません。私はカスタマイズを追加すると、[this](https://ctrlv.cz/y0dE)のようなものが追加されます。別のアイデアがあります。**Gravírovat**の単語がカートページにあるかどうか確認できますか? – mchtrnk

関連する問題