Restore a discounted product price for a specific shipping method in Woocommerce

Solution:

To restore cart items price based on a product category and on a specific chosen shipping method, try the following (for Woocommerce Dynamic Pricing):

add_filter('woocommerce_add_cart_item_data', 'add_default_price_as_cart_item_custom_data', 50, 3 );
function add_default_price_as_cart_item_custom_data( $cart_item_data, $product_id, $variation_id ){
    // HERE define your product category(ies)
    $categories = array('t-shirts');

    if ( has_term( $categories, 'product_cat', $product_id ) ) {
        $product_id = $variation_id > 0 ? $variation_id : $product_id;

        // The WC_Product Object
        $product = wc_get_product($product_id);

        // Get product default base price
        $price = (float) $product->get_price();

        // Set the Product default base price as custom cart item data
        $cart_item_data['default_price'] = $price;
    }
    return $cart_item_data;
}

add_action( 'woocommerce_before_calculate_totals', 'restore_cart_item_price', 900, 1 );
function restore_cart_item_price( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    // HERE set the targeted Chosen Shipping method
    $targeted_shipping_method = 'local_pickup';

    // Get the chosen shipping method
    $chosen_methods            = WC()->session->get( 'chosen_shipping_methods' );
    $chosen_shipping_method_id = explode(':', reset($chosen_methods) );
    $chosen_shipping_method    = reset($chosen_shipping_method_id);

    // Loop through cart items
    foreach ( $cart->get_cart() as $cart_item ) {
        if( $targeted_shipping_method == $chosen_shipping_method && isset($cart_item['default_price']) ){
            // Set back the default cart item price
            $cart_item['data']->set_price($cart_item['default_price']);
        }
    }
}

Code goes in function.php file of your active child theme (or active theme). It should works.

Note: When Using a negative fee (a cart discount), the tax is always applied.