php - 为什么 has_term 不适用于 AND 运算符?
问题描述
我正在根据购物车中的现有类别在 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)......
它怎么可能起作用?为什么它不起作用?谢谢
解决方案
使用&&
而不是AND
布尔运算符。
使用||
而不是OR
布尔运算符。
推荐阅读
- javascript - 在另一个函数中调用一个函数并传递它 id,react + redux
- android - Kotiln Generic 类型的 Android Gradle Plugin 3.5.1 数据绑定错误
- .net - 如何检查是否安装了 .Net 4.7.2 的开发人员包?
- google-sheets - Counta(filter()) 公式未按预期工作
- automated-tests - 执行 TestNG 测试用例时出现 NoSuchMethodError
- docker - Gitlab 免费的 docker 注册表
- json - 如何序列化地图
> 使用 gson? - javascript - 采用数组并将所有零移动到末尾的方法,保留其他元素的顺序
- javascript - 如何在 TypeScript 中按类型顺序获取值或对象?
- c - 为什么我们在“cc ex1.c -o ex1”编译“exe1.c”文件中的代码时使用“make”命令