为 WooCommerce 单个产品页面设置第二个价格标签

Setting a second price label for WooCommerce single product pages

在 WooCommerce 中,我有一个显示一个价格的单一产品视图。我想添加另一个价格标签,它应该显示原始价格除以一个数字。

现在我正在我的主题文件夹中的 cart.php 文件中工作,那是我的代码:

<p class="price"><?php echo $product->get_price_html(); ?> / Flasche <br> </p>
<p class="preisproliter"><?php 
$flaschenpreis = $product->get_price_html(); 
$literpreis = 0.75; 
$division = $flaschenpreis / $literpreis; 
echo $division; 
?></p>

第一行显示正确,但第二行只显示一个 0 值。

我做错了什么?

谢谢。

当您试图通过计算来操纵价格值时,您应该使用 get_price() instead of get_price_html() 方法。

您的代码:

<p class="price"><?php echo $product->get_price_html(); ?> / Flasche <br> </p>
<p class="preisproliter"><?php 
$flaschenpreis = $product->get_price(); // <= HERE
$literpreis = 0.75; 
$division = $flaschenpreis / $literpreis; 
echo $division;
?></p>

一旦您的计算完成并开始工作,您可以选择使用 'woocommerce_price_html' 过滤器挂钩 来格式化 $division (正如 get_price_html() 那样).

有选择地显示 $division 您可以在代码中使用的格式化 HTML 值:

echo apply_filters( 'woocommerce_price_html', $division, $this ); 

感谢您的回答!

好吧,还是不行,因为我的价格是可变的。如果我使用 $product->get_price() 而不是 $product->get_price_html(),我得到 $division = $flaschenpreis * 6 / $literpreis;结果。

我想原因是,我的第一个产品变体是价格 * 6。所以

<p class="price"><?php echo $product->get_price_html(); ?> / Flasche <br> </p>
<p class="preisproliter"><?php 
$flaschenpreis = $product->get_price(); // <= HERE
$literpreis = 0.75; 
$division = $flaschenpreis / $literpreis / 6; 
echo $division;
?></p>

让我找到合适的价格。这仍然需要格式化(四舍五入到小数点后两位)。

无论如何,我认为这是一个肮脏的解决方案。有干净的方法吗?为什么不能再次使用 get_price_html?