woocommerce_flat_rate_shipping_add_rate action-hookWC 1.0

Developers can add additional flat rates based on this one via this action since @version 2.4.

Previously there were (overly complex) options to add additional rates however this was not user. friendly and goes against what Flat Rate Shipping was originally intended for.

This example shows how you can add an extra rate based on this flat rate via custom function:

add_action( 'woocommerce_flat_rate_shipping_add_rate', 'add_another_custom_flat_rate', 10, 2 );
function add_another_custom_flat_rate( $method, $rate ) {
	$new_rate          = $rate;
	$new_rate['id']    .= ':' . 'custom_rate_name'; // Append a custom ID.
	$new_rate['label'] = 'Rushed Shipping'; // Rename to 'Rushed Shipping'.
	$new_rate['cost']  += 2; // Add $2 to the cost.

// Add it to WC. $method->add_rate( $new_rate );

}.

Usage

add_action( 'woocommerce_flat_rate_shipping_add_rate', 'wp_kama_woocommerce_flat_rate_shipping_add_action', 10, 2 );

/**
 * Function for `woocommerce_flat_rate_shipping_add_rate` action-hook.
 * 
 * @param  $that 
 * @param  $rate 
 *
 * @return void
 */
function wp_kama_woocommerce_flat_rate_shipping_add_action( $that, $rate ){

	// action...
}
$that
-
$rate
-

Where the hook is called

WC_Shipping_Legacy_Flat_Rate::calculate_shipping()
woocommerce_flat_rate_shipping_add_rate
woocommerce/includes/shipping/legacy-flat-rate/class-wc-shipping-legacy-flat-rate.php 277
do_action( 'woocommerce_flat_rate_shipping_add_rate', $this, $rate );

Where the hook is used in WooCommerce

woocommerce/includes/shipping/legacy-flat-rate/class-wc-shipping-legacy-flat-rate.php 63
add_action( 'woocommerce_flat_rate_shipping_add_rate', array( $this, 'calculate_extra_shipping' ), 10, 2 );