I have two shipping methods and i want to disable default flat rate shipping method. I have tried this way which posted here but its not working
add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_shipping_class', 10, 2 );
function hide_shipping_method_based_on_shipping_class( $rates, $package )
{
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// HERE define your shipping class to find
$class = 92;
// HERE define the shipping method to hide
$method_key_id = 'flat_rate:7';
// Checking in cart items
foreach( $package['contents'] as $item ){
// If we find the shipping class
if( $item['data']->get_shipping_class_id() == $class ){
unset($rates[$method_key_id]); // Remove the targeted method
break; // Stop the loop
}
}
return $rates;
}
I have two shipping methods and i want to disable default flat rate shipping method. I have tried this way which posted here but its not working
add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_shipping_class', 10, 2 );
function hide_shipping_method_based_on_shipping_class( $rates, $package )
{
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// HERE define your shipping class to find
$class = 92;
// HERE define the shipping method to hide
$method_key_id = 'flat_rate:7';
// Checking in cart items
foreach( $package['contents'] as $item ){
// If we find the shipping class
if( $item['data']->get_shipping_class_id() == $class ){
unset($rates[$method_key_id]); // Remove the targeted method
break; // Stop the loop
}
}
return $rates;
}
Share
Improve this question
edited Apr 28, 2020 at 6:30
fuxia♦
107k39 gold badges255 silver badges459 bronze badges
asked Apr 28, 2020 at 6:19
dominic tanuidominic tanui
1
1 Answer
Reset to default 0You need to modify the values of these below variables of your code-
// HERE define your shipping class to find
$class = 92;
// HERE define the shipping method to hide
$method_key_id = 'flat_rate:7';
Though the author of source answer clarified how to get these above things in the answer, here I'm putting these again.
Finding the shipping class ID.
1) In the database under wp_terms
table:
Search for a term name or a term slug and you will get the term ID (the shipping class ID).
2) On Woocommerce shipping settings editing a "Flat rate", with your browser html inspector tool, inspect a shipping Class rate field like:
In the imput name attribute you have woocommerce_flat_rate_class_cost_64
. So 64 is the ID for the shipping class.
Get the shipping method rate ID:
To get the related shipping methods rate IDs, something like
flat_rate:12
, inspect with your browser code inspector each related radio button attributename
like: