[2.4] Default selections fix for methods with multiple rates

This commit is contained in:
Mike Jolley 2015-10-23 13:49:27 +01:00
parent 79010b634f
commit 705fbef31a
1 changed files with 7 additions and 6 deletions

View File

@ -229,7 +229,7 @@ class WC_Shipping {
// Is a method already chosen?
if ( ! empty( $current_chosen_method ) && ! isset( $available_methods[ $current_chosen_method ] ) ) {
foreach ( $available_methods as $method_id => $method ) {
foreach ( $available_methods as $method_key => $method ) {
if ( strpos( $method->id, $current_chosen_method ) === 0 ) {
return $method->id;
}
@ -239,14 +239,15 @@ class WC_Shipping {
// Order by priorities and costs
$prioritized_methods = array();
foreach ( $available_methods as $method_id => $method ) {
// Some IDs contain : if they have multiple rates
$method_id = current( explode( ':', $method_id ) );
$priority = isset( $selection_priority[ $method_id ] ) ? absint( $selection_priority[ $method_id ] ): 1;
foreach ( $available_methods as $method_key => $method ) {
// Some IDs contain : if they have multiple rates so use $method->method_id
$priority = isset( $selection_priority[ $method->method_id ] ) ? absint( $selection_priority[ $method->method_id ] ): 1;
if ( empty( $prioritized_methods[ $priority ] ) ) {
$prioritized_methods[ $priority ] = array();
}
$prioritized_methods[ $priority ][ $method_id ] = $method->cost;
$prioritized_methods[ $priority ][ $method_key ] = $method->cost;
}
ksort( $prioritized_methods );