Discount for Choosing Local Pickup
Rewards customers who collect their order in person with a percentage off the products, shown as a discount line when local pickup is selected.
Opens WPIDE on
Code
$wpide_pickup_discount = 5; // Percent off the products subtotal.
add_action( 'woocommerce_cart_calculate_fees', function ( $cart ) use ( $wpide_pickup_discount ) {
if ( ( is_admin() && ! wp_doing_ajax() ) || ! WC()->session ) {
return;
}
$chosen = (array) WC()->session->get( 'chosen_shipping_methods', array() );
foreach ( $chosen as $method ) {
if ( 0 === strpos( (string) $method, 'local_pickup' ) || 0 === strpos( (string) $method, 'pickup_location' ) ) {
$amount = $cart->get_subtotal() * $wpide_pickup_discount / 100;
$cart->add_fee( sprintf( 'Pickup discount (%s%%)', $wpide_pickup_discount ), -$amount );
return;
}
}
} );
Notes
Works with both the classic Local Pickup method and the block checkout's pickup_location method.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.