Woocommerce 产品页面上的 PHP 代码显示不正确的百分比

Posted

技术标签:

【中文标题】Woocommerce 产品页面上的 PHP 代码显示不正确的百分比【英文标题】:Percentage Off PHP code on Woocommerce product pages showing incorrectly 【发布时间】:2021-07-10 18:05:25 【问题描述】:

我有一个运行 Elementor Pro 和 Woocommerce 的 Wordpress 网站,并且我有以下代码可以在产品页面上显示 Woocommerce 产品的百分比折扣。但是,这段代码有两个问题:

如果产品是正常价格且没有销售价格,它将 输出 100% 折扣。 或者,如果产品也没有正常价格(也 销售价格),它会输出 NAN% OFF。

这两种情况都非常具有误导性,我想为我的访问者提供最佳体验。

您能帮我修改此代码,以便以下两个条件也适用吗?

    如果产品只有正常价格(而不是促销价) - 它会输出不同的结果,例如“FULL PRICE”

    如果产品也没有正常价格(或销售价格) - 它会输出不同的结果,例如“不可用”

我目前的代码是这样的:

    <?php

add_action( 'woocommerce_before_add_to_cart_button', 'display_discount_single_product' );

function display_discount_single_product() 
  global $product;        
        $regular_price = (float) $product->get_regular_price();
        $sale_price    = (float) $product->get_sale_price();     
         $percentage    = round(100 - ($sale_price / $regular_price * 100));

        echo <span class=>'.$percentage.'% OFF</span></p>'

;

我正在运行 PHP 7.4 版,Woocommerce 也是最新的。

预先感谢您的帮助 - 我真的很感激。我对 PHP 了解不多,这将非常有帮助。

【问题讨论】:

【参考方案1】:

您可以为 $product->is_on_sale() 添加一个 if 条件,以确定当前产品是否有有效的销售价格。

要确定当前产品是否有正常价格,您可以添加 $product->get_price > 0 的比较。

add_action( 'woocommerce_before_add_to_cart_button', 'display_discount_single_product' );

function display_discount_single_product() 
    global $product;        
    $regular_price = (float) $product->get_regular_price();
    $sale_price    = (float) $product->get_sale_price();     
         
    if ($sale_price && $regular_price) 
        $percentage    = round(100 - ($sale_price / $regular_price * 100));
        echo '<span class=>'.$percentage.'% OFF</span></p>';
     elseif ($regular_price) 
        echo '<span class="">No Discount</span>';
     else 
        echo '<span class="">Not available</span>';
    

【讨论】:

您好 James - 感谢您抽出宝贵时间帮助我。我试图将该代码合并到我的原始代码中,但是,它似乎没有任何区别。你能在这方面进一步支持我吗?我最诚挚的感谢:) 我已经更新了上面的代码以适应您的具体情况,但请记住 stack-overflow 不是编码服务。这是为了帮助回答技术问题并帮助学习。 嗨詹姆斯 - 非常感谢您的帮助。它现在按预期工作。还注意到这不是编码服务。话虽如此,很高兴看到像您这样乐于助人的人愿意花时间这样做。祝你有美好的一天。 嗨詹姆斯 - 我希望你做得很好。以上对我非常有帮助,我感谢您的帮助。但是,需要进行一个小更新,尽管我尽了最大的努力和时间,但我无法让它按预期工作。我需要一个条件,如果正常价格是 0.00(并且没有销售价格),它会打印“免费产品”。我仍然需要上述关于正常价格(没有销售价格)仍然显示为“无折扣”的条件 - 但也考虑了这个附加条件。如果不痛苦,你能帮我最后一次吗?非常感谢! :)

以上是关于Woocommerce 产品页面上的 PHP 代码显示不正确的百分比的主要内容,如果未能解决你的问题,请参考以下文章

php [WooCommerce Core]从商店页面上的特定类别中排除产品

php [WooCommerce Core]从商店页面上的特定类别中排除产品

在菜单和Woocommerce产品页面上的内容之间添加空格?

Woocommerce 可变产品页面上的定位循环输出

php 此代码段将排除您在WooCommerce Shop页面上显示的任何类别的所有产品。

php 此代码段将排除您在WooCommerce Shop页面上显示的任何类别的所有产品。