Move WooCommerce shipping method to the end of the list on frontend with PHP

add_filter( 'woocommerce_package_rates' , 'wpcb_move_wc_shipping_method_to_the_end', PHP_INT_MAX, 2 );
if ( ! function_exists( 'wpcb_move_wc_shipping_method_to_the_end' ) ) {
    /**
     * wpcb_move_wc_shipping_method_to_the_end.
     * 
     * @see https://wpcodebook.com/snippets/move-woocommerce-shipping-method-to-the-end-of-the-list-on-frontend-with-php/
     */
    function wpcb_move_wc_shipping_method_to_the_end( $rates, $package ) {
        if ( ! $rates ) {
            return $rates;
        }
        $shipping_method_id_to_move = 'flat_rate'; // Important: change this to your method's ID
        if ( isset( $rates[ $shipping_method_id_to_move ] ) ) {
            $saved_rate = $rates[ $shipping_method_id_to_move ];
            unset( $rates[ $shipping_method_id_to_move ] );
            $rates[ $shipping_method_id_to_move ] = $saved_rate;
        }
        return $rates;
    }
}

This is useful if you have old shipping methods in WooCommerce (i.e. those that are not added to shipping zones).

Leave a Comment