I want to hide the shipping address if the shipping label is called "Pick up at Rockefeller Store" (but to show for other pickup methods).
There are too many ids such as "local_pickup:3" for me to filter through. I enabled the shipping address to be shown in emails/email-addresses.php despite it being a local pickup method.
My code attempt:
<?php
/**
* Email Addresses
*
* This template can be overridden by copying it to yourtheme/woocommerce/emails/email-addresses.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://docs.woocommerce.com/document/template-structure/
* @package WooCommerceTemplatesEmails
* @version 3.9.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
$text_align = is_rtl() ? 'right' : 'left';
$address = $order->get_formatted_billing_address();
$shipping = $order->get_formatted_shipping_address();
?><table id="addresses" cellspacing="0" cellpadding="0" style="width: 100%; vertical-align: top; margin-bottom: 40px; padding:0;" border="0">
<tr>
<td style="text-align:<?php echo esc_attr( $text_align ); ?>; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; border:0; padding:0;" valign="top" width="50%">
<h2><?php esc_html_e( 'Billing address', 'woocommerce' ); ?></h2>
<address class="address">
<?php echo wp_kses_post( $address ? $address : esc_html__( 'N/A', 'woocommerce' ) ); ?>
<?php if ( $order->get_billing_phone() ) : ?>
<br/><?php echo wc_make_phone_clickable( $order->get_billing_phone() ); ?>
<?php endif; ?>
<?php if ( $order->get_billing_email() ) : ?>
<br/><?php echo esc_html( $order->get_billing_email() ); ?>
<?php endif; ?>
</address>
</td>
<?php if ( $shipping ) : ?>
<td style="text-align:<?php echo esc_attr( $text_align ); ?>; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; padding:0;" valign="top" width="50%">
<h2><?php esc_html_e( 'Shipping address', 'woocommerce' ); ?></h2>
<address class="address"><?php echo wp_kses_post( $shipping ); ?></address>
</td>
<?php endif; ?>
</tr>
</table>
I need this to be enabled as some of our other pickup methods require it. And I am trying to have it so that if it is solely "Pick up at Rockefeller Store" then it should hide the shipping address in new order WooCommerce email.
How would I filter this based on its text label as shown in the picture?
3
Answers
Adding this to my template worked then setting line 48 to
!$shipping_local_pickup
This allows me to choose the phrase "Pick Up at Rockefeller Store" used in the table and not display the shipping address it if it is present.
Answer was taken and edited from Hide shipping address on local pickup in WooCommerce email notifications
There is no need to edit template files as it is possible via hooks. This answer consists of 2 parts:
1) The first part only needs to be executed once and serves as debug information. The following text will appear in the new order mail
Part 1:
NOTE: After the correct information is known, you should no longer use part 1
2) Then you can use the 2nd part of my answer,
where you need to replace
REPLACE_THIS_WITH_THE_SHIPPING_METHOD_ID
withTHE_SHIPPING_METHOD_ID
, that information comes from the first part of my answerPart 2:
NOTE: Since the email id is not known in the 2nd part of my answer, a workaround is used for this, see: https://stackoverflow.com/a/43574008/11987538
Looking for a way to hide the address and other fields for local pickup method I see this reply https://wpsimplehacks.com/how-to-hide-woocommerce-checkout-fields-when-local-pickup-is-selected/
This is the code and works for me:
If you need to hide the "send to different address" on checkout page try this:
All credit is for Janek T, couldn´t find his profile at stackoverflow