WooCommerce - 删除不需要的结帐字段的条件语句
WooCommerce - Conditional Statement to Remove unwanted checkout fields
我发现这个要点可以隐藏不需要的虚拟产品结帐字段。如果同时存在虚拟产品和实体产品,如何调整它不隐藏字段?我擅长写 WordPress 条件语句,但我很难理解如何编写这个条件语句。
如有任何帮助,我将不胜感激。
<?php
add_filter( 'woocommerce_checkout_fields' , 'woo_remove_billing_checkout_fields' );
/**
* Remove unwanted checkout fields
*
* @return $fields array
*/
function woo_remove_billing_checkout_fields( $fields ) {
if( woo_cart_has_virtual_product() == true ) {
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_phone']);
unset($fields['order']['order_comments']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_city']);
}
return $fields;
}
/**
* Check if the cart contains virtual product
*
* @return bool
*/
function woo_cart_has_virtual_product() {
global $woocommerce;
// By default, no virtual product
$has_virtual_products = false;
// Default virtual products number
$virtual_products = 0;
// Get all products in cart
$products = $woocommerce->cart->get_cart();
// Loop through cart products
foreach( $products as $product ) {
// Get product ID and '_virtual' post meta
$product_id = $product['product_id'];
$is_virtual = get_post_meta( $product_id, '_virtual', true );
// Update $has_virtual_product if product is virtual
if( $is_virtual == 'yes' )
$virtual_products += 1;
}
if( count($products) == $virtual_products )
$has_virtual_products = true;
return $has_virtual_products;
}
向以下代码添加一个 else 条件,告诉它如果产品不是虚拟的则立即退出。
// Update $has_virtual_product if product is virtual
if( $is_virtual == 'yes' )
$virtual_products += 1;
else
return false; // Cart contains both type of products, bail out immediately
我发现这个要点可以隐藏不需要的虚拟产品结帐字段。如果同时存在虚拟产品和实体产品,如何调整它不隐藏字段?我擅长写 WordPress 条件语句,但我很难理解如何编写这个条件语句。
如有任何帮助,我将不胜感激。
<?php
add_filter( 'woocommerce_checkout_fields' , 'woo_remove_billing_checkout_fields' );
/**
* Remove unwanted checkout fields
*
* @return $fields array
*/
function woo_remove_billing_checkout_fields( $fields ) {
if( woo_cart_has_virtual_product() == true ) {
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_phone']);
unset($fields['order']['order_comments']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_city']);
}
return $fields;
}
/**
* Check if the cart contains virtual product
*
* @return bool
*/
function woo_cart_has_virtual_product() {
global $woocommerce;
// By default, no virtual product
$has_virtual_products = false;
// Default virtual products number
$virtual_products = 0;
// Get all products in cart
$products = $woocommerce->cart->get_cart();
// Loop through cart products
foreach( $products as $product ) {
// Get product ID and '_virtual' post meta
$product_id = $product['product_id'];
$is_virtual = get_post_meta( $product_id, '_virtual', true );
// Update $has_virtual_product if product is virtual
if( $is_virtual == 'yes' )
$virtual_products += 1;
}
if( count($products) == $virtual_products )
$has_virtual_products = true;
return $has_virtual_products;
}
向以下代码添加一个 else 条件,告诉它如果产品不是虚拟的则立即退出。
// Update $has_virtual_product if product is virtual
if( $is_virtual == 'yes' )
$virtual_products += 1;
else
return false; // Cart contains both type of products, bail out immediately