我们正在Woocommerce电子商店使用这个WooCommerce Custom Fields商业插件进行个性化定制,我正试图找到一种方法来隐藏付款方式,如果关键' wccf'在产品元中。
我正在尝试升级以下代码,我想取代发货国家/地区检查,但我不知道如何获取和检查' 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 :(得分: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');
答案 1 :(得分: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');
答案 2 :(得分: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
}