Php 未设置仅适用于可下载项目和特定装运国家/地区的付款方式
我的电子商务网站99%卖给南非人,我们使用“BACS”、“EFT”和信用卡作为支付选项Php 未设置仅适用于可下载项目和特定装运国家/地区的付款方式,php,wordpress,woocommerce,payment-gateway,shipping,Php,Wordpress,Woocommerce,Payment Gateway,Shipping,我的电子商务网站99%卖给南非人,我们使用“BACS”、“EFT”和信用卡作为支付选项 我们接受国际订单,但不能自动计算国际订单的运费 因此,当订单是国际(而不是南非)时,我们希望用户选择BACS/EFT支付选项。 我们要求他们在付款时挂十个,这样我们可以先确认运费 但是如果国际订单只包含可下载的产品(因此不需要运输),那么我们希望提供信用卡支付选项 我正在尝试在结帐页面上取消设置一个名为“mygate”的付款方法,如果这两个都是真的: 购物车仅包含可下载的产品 发货地址不是南非(ZA) 我马
我们接受国际订单,但不能自动计算国际订单的运费 因此,当订单是国际(而不是南非)时,我们希望用户选择BACS/EFT支付选项。 我们要求他们在付款时挂十个,这样我们可以先确认运费 但是如果国际订单只包含可下载的产品(因此不需要运输),那么我们希望提供信用卡支付选项 我正在尝试在结帐页面上取消设置一个名为“mygate”的付款方法,如果这两个都是真的:
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谢谢:)…这些小变化是什么?嗨,对不起,我正忙着编辑我的评论,但从来没有点击保存:)我不得不快速判断真假。