douzai2562
2018-11-03 12:53
浏览 53
已采纳

根据Woocommerce中的延期交货项目显示隐藏支付网关

I'm need to hide paypal when there's any backordered item on cart or hide cod if there's not any item to be backordered. My problem here is if there's a item that's backorder together with one that is not, I end up whitout a payment processor

 add_filter( 'woocommerce_available_payment_gateways', 'backordered_items_hide_cod', 90, 1 );
function backordered_items_hide_cod( $available_gateways ) {
    // Only on front end
    if ( is_admin() )
        return;

    // Loop through cart items
    foreach( WC()->cart->get_cart() as $cart_item ){
        if( $cart_item['data']->is_on_backorder( $cart_item['quantity'] ) ) {
            // Hide payment gateway
            unset($available_gateways['paypal']);
            } else {
            unset($available_gateways['cod']);
            break; // Stop the loop
        }
    }

    return $available_gateways;
}

图片转代码服务由CSDN问答提供 功能建议

当购物车上有任何缺货商品或隐藏鳕鱼时,如果没有任何商品,我需要隐藏PayPal 延期交货。 我的问题在于,如果有一个项目与一个不合作的项目延期交货,我最终会出现支付处理器

  add_filter('woocommerce_available_payment_gateways','backordered_items_hide_cod',90,  1); 
 
函数backordered_items_hide_cod($ available_gateways){
 //仅在前端
 if(is_admin())
 return; 
 
 //循环购物车项目
 foreach(WC() - &gt  ; cart-> get_cart()为$ cart_item){
 if($ cart_item ['data']  - > is_on_backorder($ cart_item ['quantity'])){
 //隐藏支付网关
未设置(  $ available_gateways ['paypal']); 
} else {
 unset($ available_gateways ['cod']); 
 break;  //停止循环
} 
} 
 
返回$ available_gateways; 
} 
   
 
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题