Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未设置仅适用于可下载项目和特定装运国家/地区的付款方式_Php_Wordpress_Woocommerce_Payment Gateway_Shipping - Fatal编程技术网

Php 未设置仅适用于可下载项目和特定装运国家/地区的付款方式

Php 未设置仅适用于可下载项目和特定装运国家/地区的付款方式,php,wordpress,woocommerce,payment-gateway,shipping,Php,Wordpress,Woocommerce,Payment Gateway,Shipping,我的电子商务网站99%卖给南非人,我们使用“BACS”、“EFT”和信用卡作为支付选项 我们接受国际订单,但不能自动计算国际订单的运费 因此,当订单是国际(而不是南非)时,我们希望用户选择BACS/EFT支付选项。 我们要求他们在付款时挂十个,这样我们可以先确认运费 但是如果国际订单只包含可下载的产品(因此不需要运输),那么我们希望提供信用卡支付选项 我正在尝试在结帐页面上取消设置一个名为“mygate”的付款方法,如果这两个都是真的: 购物车仅包含可下载的产品 发货地址不是南非(ZA) 我马

我的电子商务网站99%卖给南非人,我们使用“BACS”、“EFT”和信用卡作为支付选项
我们接受国际订单,但不能自动计算国际订单的运费

因此,当订单是国际(而不是南非)时,我们希望用户选择BACS/EFT支付选项。 我们要求他们在付款时挂十个,这样我们可以先确认运费

但是如果国际订单只包含可下载的产品(因此不需要运输),那么我们希望提供信用卡支付选项

我正在尝试在结帐页面上取消设置一个名为“mygate”的付款方法,如果这两个都是真的:

  • 购物车仅包含可下载的产品
  • 发货地址不是南非(ZA)
  • 我马上就到,但需要一些帮助

    禁用除南非以外所有国家/地区的支付网关:

    function payment_gateway_disable_country( $available_gateways ) {
        global $woocommerce;
        if ( isset( $available_gateways['mygate'] ) && $woocommerce->customer->get_country() <> 'ZA' ) {
            unset(  $available_gateways['mygate'] );
        } 
        return $available_gateways;
    }
    add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_country' );
    
    if( ! $product->is_downloadable() )
    

    这可以通过foreach循环来完成,我们将检查是否所有产品都可以下载。在这种情况下,更新的
    get\u country()
    需要替换为
    get\u shipping\u country()
    方法

    这是您重新访问的代码:

    add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_country', 20, 1 );
    function payment_gateway_disable_country( $available_gateways ) {
        // Not in backend (admin)
        if( is_admin() ) 
            return $available_gateways;
    
        $only_downloadable_products = true;
    
        // Loop through cart items looking for non downloadable products
        foreach( WC()->cart->get_cart() as $cart_item ){
            if( ! $cart_item['data']->is_downloadable() ){
                $only_downloadable_products = false; // Non downloadable found
                break; // Stop the loop
            }
        }
    
        if( isset( $available_gateways['mygate'] ) 
        && WC()->customer->get_shipping_country() != 'ZA' // <= Changed
        && $only_downloadable_products ) { // <= Added
            unset( $available_gateways['mygate'] );
        } 
        return $available_gateways;
    }
    
    add_filter('woocmerce_available_payment_gateways'、'payment_gateway_disable_country',20,1);
    功能支付\网关\禁用\国家(可用\网关){
    //不在后端(管理)
    if(is_admin())
    返回$available\u网关;
    $only_downloadable_products=true;
    //在购物车项目中循环查找不可下载的产品
    foreach(WC()->cart->get_cart()作为$cart_项目){
    如果(!$cart\u项目['data']->可下载()){
    $only_downloadable_products=false;//找到不可下载的
    break;//停止循环
    }
    }
    如果(isset($available_gateways['mygate']))
    
    &&WC()->customer->get_shipping_country()!='ZA'//请描述预期行为与实际行为。您在问什么?很抱歉,我编辑了我的问题;希望它更有意义。不过,我确实从@LoicTheAztec得到了答案谢谢。再次感谢。这很完美,除了两个小改动。@user1664798谢谢:)…这些小变化是什么?嗨,对不起,我正忙着编辑我的评论,但从来没有点击保存:)我不得不快速判断真假。