From 6cb5451e15fec6c79dea4a54c73fa0b3180c4247 Mon Sep 17 00:00:00 2001 From: Andrew Benbow Date: Fri, 28 Mar 2014 02:27:24 +0000 Subject: [PATCH 1/7] Update form-shipping.php Add filter to allow needs_shipping() to be overridden, useful if you want to collect a shipping address for virtual products. Allows a filter to be used as replacement for get_option('woocommerce_require_shipping_address') Previous suggestion of add_filter('woocommerce_cart_needs_shipping', '__return_true'); is not suitable --- templates/checkout/form-shipping.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/checkout/form-shipping.php b/templates/checkout/form-shipping.php index e37b28d4eb0..93e22bd5aee 100644 --- a/templates/checkout/form-shipping.php +++ b/templates/checkout/form-shipping.php @@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>
- cart->needs_shipping() && ! WC()->cart->ship_to_billing_address_only() ) : ?> + cart->needs_shipping() || apply_filters('woocommerce_override_needs_shipping' , false ) == true ) && ! WC()->cart->ship_to_billing_address_only() ) : ?> -
\ No newline at end of file + From d9c82975b429179d90c8105202437b50e0371878 Mon Sep 17 00:00:00 2001 From: Andrew Benbow Date: Fri, 28 Mar 2014 10:38:48 +0000 Subject: [PATCH 2/7] Update form-shipping.php --- templates/checkout/form-shipping.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/checkout/form-shipping.php b/templates/checkout/form-shipping.php index 93e22bd5aee..c62467d1c3c 100644 --- a/templates/checkout/form-shipping.php +++ b/templates/checkout/form-shipping.php @@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>
- cart->needs_shipping() || apply_filters('woocommerce_override_needs_shipping' , false ) == true ) && ! WC()->cart->ship_to_billing_address_only() ) : ?> + cart->needs_shipping() || WC()->cart->needs_shipping_address() == true ) && ! WC()->cart->ship_to_billing_address_only() ) : ?> Date: Fri, 28 Mar 2014 10:41:17 +0000 Subject: [PATCH 3/7] Update class-wc-cart.php --- includes/class-wc-cart.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/includes/class-wc-cart.php b/includes/class-wc-cart.php index 497481771b0..aac184ad08b 100644 --- a/includes/class-wc-cart.php +++ b/includes/class-wc-cart.php @@ -1352,7 +1352,18 @@ class WC_Cart { } } - return apply_filters( 'woocommerce_cart_needs_shipping', $needs_shipping ); + return $needs_shipping; + } + + /** + * Show the shipping address form even if the cart contains virtual products + * + * @return bool + * + * Use add_filter( 'woocommerce_needs_shipping_address', '__return_true' ); to override + */ + function needs_shipping_address() { + return apply_filters( 'woocommerce_needs_shipping_address', false ); } /** From a8e941513c3c84f698ffac07554207749b756444 Mon Sep 17 00:00:00 2001 From: Andrew Benbow Date: Fri, 28 Mar 2014 14:10:53 +0000 Subject: [PATCH 4/7] Update class-wc-cart.php --- includes/class-wc-cart.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-cart.php b/includes/class-wc-cart.php index aac184ad08b..2e4cff75245 100644 --- a/includes/class-wc-cart.php +++ b/includes/class-wc-cart.php @@ -1352,7 +1352,7 @@ class WC_Cart { } } - return $needs_shipping; + return apply_filters( 'woocommerce_cart_needs_shipping', $needs_shipping ); } /** From b3fc8cbdf6915953944d41ceb477d6178642aa5f Mon Sep 17 00:00:00 2001 From: Andrew Benbow Date: Fri, 28 Mar 2014 14:40:56 +0000 Subject: [PATCH 5/7] Update class-wc-cart.php --- includes/class-wc-cart.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/includes/class-wc-cart.php b/includes/class-wc-cart.php index 2e4cff75245..31d2619bce6 100644 --- a/includes/class-wc-cart.php +++ b/includes/class-wc-cart.php @@ -1356,14 +1356,19 @@ class WC_Cart { } /** - * Show the shipping address form even if the cart contains virtual products + * Should the shipping address form be shown * * @return bool - * - * Use add_filter( 'woocommerce_needs_shipping_address', '__return_true' ); to override */ function needs_shipping_address() { - return apply_filters( 'woocommerce_needs_shipping_address', false ); + + $needs_shipping_address = false; + + if ( WC()->cart->needs_shipping() === true && ! WC()->cart->ship_to_billing_address_only() ) { + $needs_shipping_address = true; + } + + return apply_filters( 'woocommerce_cart_needs_shipping_address', $needs_shipping_address ); } /** From 54d5ded602c34c6c07e0c8d51081612d23698444 Mon Sep 17 00:00:00 2001 From: Andrew Benbow Date: Fri, 28 Mar 2014 14:41:43 +0000 Subject: [PATCH 6/7] Update form-shipping.php --- templates/checkout/form-shipping.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/checkout/form-shipping.php b/templates/checkout/form-shipping.php index c62467d1c3c..9ed2d07f8cc 100644 --- a/templates/checkout/form-shipping.php +++ b/templates/checkout/form-shipping.php @@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>
- cart->needs_shipping() || WC()->cart->needs_shipping_address() == true ) && ! WC()->cart->ship_to_billing_address_only() ) : ?> + cart->needs_shipping_address() == true ) : ?> Date: Fri, 28 Mar 2014 14:41:57 +0000 Subject: [PATCH 7/7] Update form-shipping.php --- templates/checkout/form-shipping.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/checkout/form-shipping.php b/templates/checkout/form-shipping.php index 9ed2d07f8cc..dfafc12daf3 100644 --- a/templates/checkout/form-shipping.php +++ b/templates/checkout/form-shipping.php @@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly ?>
- cart->needs_shipping_address() == true ) : ?> + cart->needs_shipping_address() === true ) : ?>