在 Woocommerce 中隐藏基于产品元的支付方式
Hide payment method based on product meta in Woocommerce
我们在我们的 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');
有人能帮帮我吗?
试试下面的代码。将代码放在 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');
假设产品在其元数据中有一个 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');
感谢大家的支持和帮助!最后,插件开发人员给我发了一个代码,解决了我的问题。
$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
}
我们在我们的 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');
有人能帮帮我吗?
试试下面的代码。将代码放在 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');
假设产品在其元数据中有一个 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');
感谢大家的支持和帮助!最后,插件开发人员给我发了一个代码,解决了我的问题。
$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
}