2017-10-05 94 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

相关问题