Wordpress 过滤后的数字格式错误

Wordpress 过滤后的数字格式错误,wordpress,filter,number-formatting,Wordpress,Filter,Number Formatting,我的一个Wordpress插件输出一个价格,我想用集成过滤器改变这个价格。资料来源如下: $price_str = apply_filters( 'price_format', number_format($price,0,'', '.') ); 添加我已添加此筛选器: function change_price( $price ) { $price = $price * 2; return $price; } add_filter( 'price_format', 'c

我的一个Wordpress插件输出一个价格,我想用集成过滤器改变这个价格。资料来源如下:

$price_str = apply_filters( 'price_format', number_format($price,0,'', '.') );
添加我已添加此筛选器:

   function change_price( $price ) {
    $price = $price * 2;
    return $price;
}
add_filter( 'price_format', 'change_price', 10, 1 );
如果价格是45.000(四万五千),它不会变成90(九十),我希望它是90.000

为什么会这样?

试试看

function change_price( $price ) {
    $price = floatval($price) * 2;
    return $price;
}
add_filter( 'price_format', 'change_price', 10, 1 );

问题是PHP将“45.000”表示为“45”,因为点是十进制分隔符,而您的价格使用它表示千(有些国家使用逗号分隔小数)

将在这种情况下工作,首先删除千分隔符,进行计算,然后以最初的格式再次添加它


请注意,如果您的价格不是整数(想想45000.99),这将使价格四舍五入到最接近的整数,因为number_格式的第三个参数为空。对此您不能做太多,因为它已经出现在应用过滤器的原始函数中。

谢谢!工作出色!
function change_price( $price ) {
    $price = str_replace(".", "", $price);
    $price = $price * 2;
    return number_format($price,0, '', '.');
}
add_filter( 'price_format', 'change_price', 10, 1 );