gpt4 book ai didi

php - 在 Wordpress 短代码中为 Woocommerce 小部件创建动态 "Free Shipping"进度条

转载 作者:搜寻专家 更新时间:2023-10-31 22:04:08 24 4
gpt4 key购买 nike

我正在尝试使用 wordpress 中的 Progress Bar 插件来创建一个小部件,该小部件在购物车下方显示一个进度条,表明他们还需要花费多少才能获得免费送货。

我需要先获取购物车的值(value):

global $woocommerce;
$price = $woocommerce->cart->get_cart_total();

其次去除美元符号并四舍五入到最接近的整数?

第三,将值输出到短代码中,以便它正确显示到 HTML 中。就像现在一样,它输出宽度而不是数字。 <span class="red" style="width: .$cartnumber%;">

我需要它来输出一个普通数字,这样它就可以处理宽度。以下是到目前为止的代码。

<?php
global $woocommerce;
$total = $woocommerce->cart->get_cart_total();
$cartnumber = str_replace("&#36;", "", $total);
echo do_shortcode('[wppb progress='.$cartnumber.' option=red text="Free Shipping"]');
?>

我已经在小部件中启用了 PHP 执行

最佳答案

这个我以前遇到过,下面是我最后用的。 http://www.php.net/manual/en/class.numberformatter.php

在我使用 [0-9\,\s.]+ 模式使用 preg_match 之前。然后我将所有特殊字符和字母替换为空白以获得整数。 (不是一个好的解决方案)

示例代码取自 http://www.pagecolumn.com/tool/pregtest.htm

<?php 
$ptn = "/[0-9\,\s\.]+/";
$str = "$9,988,776.65 in the United States";
preg_match($ptn, $str, $matches);
print_r($matches);
?>

输出

Array
(
[0] => 9,988,776.65
)

在我意识到这不是一个好的解决方案后,我使用下面的代码将其修改为更简单的解决方案。 来自:Remove non-numeric characters (except periods and commas) from a string

$number = "$9,988,776.65";
echo preg_replace("/[^0-9]/", "", $number);

输出

998877665

如果您没有删除千位和小数符号,它将获得货币的数字格式。

关于进度条,需要把总和换算成100%。我假设您的公式类似于以下内容:

(price/free_shipping_minimum)*100

如果结果超过 100,则将其设置为 100%。如果您不希望百分比中有小数,请将其转换为 int 或使用 php 的 round/ceil/floor 函数。

http://www.php.net/manual/en/function.round.php

希望对您有所帮助。

关于php - 在 Wordpress 短代码中为 Woocommerce 小部件创建动态 "Free Shipping"进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com