WC_Shipping_Legacy_Flat_Rate::get_extra_cost
Устарела с версии 2.4.0. Больше не поддерживается и может быть удалена. Рекомендуется заменить эту функцию на аналог.
Get extra cost.
Метод класса: WC_Shipping_Legacy_Flat_Rate{}
Хуков нет.
Возвращает
float.
Использование
$WC_Shipping_Legacy_Flat_Rate = new WC_Shipping_Legacy_Flat_Rate(); $WC_Shipping_Legacy_Flat_Rate->get_extra_cost( $cost_string, $type, $package );
- $cost_string(строка) (обязательный)
- Cost string.
- $type(строка) (обязательный)
- Type.
- $package(массив) (обязательный)
- Package information.
Список изменений
| Устарела с | 2.4.0 |
Код WC_Shipping_Legacy_Flat_Rate::get_extra_cost() WC Shipping Legacy Flat Rate::get extra cost WC 10.3.5
public function get_extra_cost( $cost_string, $type, $package ) {
$cost = $cost_string;
$cost_percent = false;
// @codingStandardsIgnoreStart
$pattern =
'/' . // Start regex.
'(\d+\.?\d*)' . // Capture digits, optionally capture a `.` and more digits.
'\s*' . // Match whitespace.
'(\+|-)' . // Capture the operand.
'\s*' . // Match whitespace.
'(\d+\.?\d*)' . // Capture digits, optionally capture a `.` and more digits.
'\%/'; // Match the percent sign & end regex.
// @codingStandardsIgnoreEnd
if ( preg_match( $pattern, $cost_string, $this_cost_matches ) ) {
$cost_operator = $this_cost_matches[2];
$cost_percent = $this_cost_matches[3] / 100;
$cost = $this_cost_matches[1];
}
switch ( $type ) {
case 'class':
$cost = $cost * count( $this->find_shipping_classes( $package ) );
break;
case 'item':
$cost = $cost * $this->get_package_item_qty( $package );
break;
}
if ( $cost_percent ) {
switch ( $type ) {
case 'class':
$shipping_classes = $this->find_shipping_classes( $package );
foreach ( $shipping_classes as $shipping_class => $items ) {
foreach ( $items as $item_id => $values ) {
$cost = $this->calc_percentage_adjustment( $cost, $cost_percent, $cost_operator, $values['line_total'] );
}
}
break;
case 'item':
foreach ( $package['contents'] as $item_id => $values ) {
if ( $values['data']->needs_shipping() ) {
$cost = $this->calc_percentage_adjustment( $cost, $cost_percent, $cost_operator, $values['line_total'] );
}
}
break;
case 'order':
$cost = $this->calc_percentage_adjustment( $cost, $cost_percent, $cost_operator, $package['contents_cost'] );
break;
}
}
return $cost;
}