在Woocommerce中隐藏基于产品元的付款方式

时间:2017-10-05 10:45:14

标签: php wordpress plugins woocommerce payment-gateway

我们正在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');

有人可以帮助我吗?

3 个答案:

答案 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

}