I am using WooCommerce and with Paid Memberships Pro free plugin.
On the web site we have 2 plans (a free plan and a paid plan):
- Free users can buy 1 item each month,
- Paid users can buy 4 items each months.
Now I don't know how to simply calculate shipping on checkout page with code like:
if (pmpro_hasMembershipLevel('2')) { // Paid plan
//free shipping (0$)
} else {
//add shipping 4$ to checkout
}
No shipping class, No region zone is affect shipping price.
I have tried to set Shipping options, but I can’t get rid of it.
How can I achieve this?
Thanks.
Since WooCommerce 2.6+, shipping has been remodeled, and is quite complicated to customize it as you would like, without a plugin… Instead you do, is adding a fee based on your user levels and other conditions if needed.
Here is my code:
function add_shipping_fee( ) {
// Set here your shipping fee amount
$fee = 4;
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( pmpro_hasMembershipLevel('2') == false)
WC()->cart->add_fee( __('Shipping Fee:', 'your_theme_slug'), $fee, false );
}
add_action( 'woocommerce_cart_calculate_fees','add_shipping_fee' );
This goes naturally in function.php file of your active child theme (or theme) or also in any plugin file.
This code is tested and working.
References:
- WooCommerce - Make a set of coupons adding a fixed fee to an order
- WooCommerce class - WC_Cart - add_fee() method