@robinjoshua,
If you want to apply only local_delivery and local_pickup shipping method based on your cart condition, then replace with below code.
add_filter('woocommerce_package_rates', 'display_shipping_method_based_on_state', 10, 2);
if(!function_exists('display_shipping_method_based_on_state')) {
function display_shipping_method_based_on_state($rates,$package) {
global $woocommerce;
if(cart_has_product_with_orange_cats()) {
$local_pickup = $rates['local_pickup'];
$local_delivery = $rates['local_delivery'];
$rates = array();
$rates['local_pickup'] = $local_pickup;
$rates['local_delivery'] = $local_delivery;
}
return $rates;
}
}