为什么has_term不能与AND运算符一起使用?

时间:2019-07-17 02:04:19

标签: php wordpress woocommerce

我正在WooCommerce中使用多个条件,根据购物车中的现有类别执行特定操作:

if( (has_term( 'prestamos-empresa', 'product_cat', get_post( $product_id ))) && (has_term( 'productos-de-ahorro', 'product_cat', get_post( $product_id ))) ){            
               unset($fields['billing']['info_financiera']);
               unset($fields['billing']['billing_iban']); 
               unset($fields['billing']['billing_titularcuenta']); 
               unset($fields['billing']['billing_sinmoroso']);
               unset($fields['billing']['billing_cargorol']);
               unset($fields['billing']['billing_ingreso']);
               unset($fields['billing']['billing_tipocontrato']);
               unset($fields['billing']['billing_antiguedad']);
               unset($fields['billing']['billing_fechasueldo']);
            }

如果我使用OR运算符(如果可以),也尝试&&,什么也没有。我将保留另一段代码:

    function campos_checkout_condicional( $fields ){        

    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {        
        $product_id   = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );        

            // Si esta Micro Prestamos o Prestamos Personales en carrito devolver todos los campos.
            if( has_term( array('micro-prestamos','prestamos-personales'), 'product_cat', get_post( $product_id ) ) ){
                return $fields;
            }

            // Solo prestamos empresas y productos de ahorro en carrito.
            if( (has_term( 'prestamos-empresa', 'product_cat', get_post( $product_id ))) && (has_term( 'productos-de-ahorro', 'product_cat', get_post( $product_id ))) ){            
               unset($fields['billing']['info_financiera']);
               unset($fields['billing']['billing_iban']); 
               unset($fields['billing']['billing_titularcuenta']); 
               unset($fields['billing']['billing_sinmoroso']);
               unset($fields['billing']['billing_cargorol']);
               unset($fields['billing']['billing_ingreso']);
               unset($fields['billing']['billing_tipocontrato']);
               unset($fields['billing']['billing_antiguedad']);
               unset($fields['billing']['billing_fechasueldo']);
            }

            // Solo prestamos empresa e inversion // Solo productos de ahorro y inversion
            if( ((has_term( 'prestamos-empresa', 'product_cat', get_post( $product_id ))) && (has_term( 'inversion', 'product_cat', get_post( $product_id )))) || ((has_term( 'productos-de-ahorro', 'product_cat', get_post( $product_id ))) && (has_term( 'inversion', 'product_cat', get_post( $product_id )))) ){            
               unset($fields['billing']['info_financiera']);
               unset($fields['billing']['billing_iban']); 
               unset($fields['billing']['billing_titularcuenta']); 
               unset($fields['billing']['billing_sinmoroso']);
               unset($fields['billing']['billing_fechasueldo']);
            }
    }
}

编辑:实现完整的功能,使用&&,并且不能按预期工作。例如:我希望只有两个特定类别时才能执行此操作(如果category1 && category2)...

它如何工作?为什么不起作用?谢谢

1 个答案:

答案 0 :(得分:0)

使用&&代替AND布尔运算符。

使用||代替OR布尔运算符。