WC_Shipping_Legacy_Flat_Rate::evaluate_cost( string $sum, array $args = array() )
Evaluate a cost from a sum/string.
Description Description
Parameters Parameters
- $sum
-
(Required) Sum to evaluate.
- $args
-
(Optional) Arguments.
Default value: array()
Return Return
(string)
Source Source
File: includes/shipping/legacy-flat-rate/class-wc-shipping-legacy-flat-rate.php
protected function evaluate_cost( $sum, $args = array() ) {
include_once WC()->plugin_path() . '/includes/libraries/class-wc-eval-math.php';
$locale = localeconv();
$decimals = array( wc_get_price_decimal_separator(), $locale['decimal_point'], $locale['mon_decimal_point'] );
$this->fee_cost = $args['cost'];
// Expand shortcodes.
add_shortcode( 'fee', array( $this, 'fee' ) );
$sum = do_shortcode(
str_replace(
array(
'[qty]',
'[cost]',
),
array(
$args['qty'],
$args['cost'],
),
$sum
)
);
remove_shortcode( 'fee', array( $this, 'fee' ) );
// Remove whitespace from string.
$sum = preg_replace( '/\s+/', '', $sum );
// Remove locale from string.
$sum = str_replace( $decimals, '.', $sum );
// Trim invalid start/end characters.
$sum = rtrim( ltrim( $sum, "\t\n\r\0\x0B+*/" ), "\t\n\r\0\x0B+-*/" );
// Do the math.
return $sum ? WC_Eval_Math::evaluate( $sum ) : 0;
}