【问题标题】:Woocommerce price output on product page产品页面上的 Woocommerce 价格输出
【发布时间】:2018-07-14 00:28:27
【问题描述】:

我需要修改一个插件以满足我的需要。插件代码如下:

1. update_post_meta($post_id, '_regular_price', (isset($product['price']) && !empty($product['price'])) ? $product['price'] : '');
2. update_post_meta($post_id, '_sale_price', (isset($product['sale-price']) && !empty($product['sale-price']) && ($product['sale-price']<$product['price']) ) ? $product['sale-price'] : '');
3. update_post_meta($post_id, '_price', (isset($product['price'])) ? $product['price'] : '');

前两行将正常价格和折扣(销售)价格值输入数据库。第三行是产品页面的输出,我需要修改一下:

  1. 如果存在折扣价 _sale_price / [sale-price],则它应在第 3 行显示为默认的 _price / [price]
  2. 如果折扣价_sale_price / [sale-price] 不存在,则第 1 行的正常价格应在第 3 行显示为 [价格]

我试过 if (isset($product['sale-price'])){? $product['sale-price'] : '';}else{? $product['price'] : '';} 但这会引发 500 错误。

任何帮助表示赞赏。

【问题讨论】:

  • 这看起来很奇怪 - WooCommerce 会自动根据正常价格、销售价格和开始/结束销售日期计算价格。你为什么要覆盖它?
  • 我使用的插件覆盖了 woocommerce 的默认行为。

标签: php wordpress woocommerce


【解决方案1】:

WooCommerce 应该会自动执行此操作,但为了回答您的问题,您的代码中存在一些错误,您似乎正在尝试将三元运算符与 IF 语句混合使用。

第 3 行的正确替换应该如下所示:

update_post_meta($post_id, '_price', (isset($product['sale-price']) && !empty($product['sale-price'])) ? $product['sale-price'] : $product['price']);

【讨论】:

  • 像魅力一样工作。问题是,该插件覆盖了 woocommerce 的默认行为。还有一个问题:对于第 2 行和第 3 行,如果 (sale-price) 不存在或为空,我如何检查另外一个变量 (retail-price)?
  • 很高兴能帮上忙 :) 抱歉,我不太明白您的问题 - 您想为我改写一下吗?
【解决方案2】:

我的最终工作代码如下:

update_post_meta($post_id, '_regular_price', (isset($product['price']) && !empty($product['price'])) ? $product['price'] : '');

update_post_meta($post_id, '_sale_price', (isset($product['sale-price']) && !empty($product['sale-price']) && ($product['sale-price']<$product['price'])) ? $product['sale-price'] : ((isset($product['retail-price']) && !empty($product['retail-price']) && ($product['retail-price']<$product['price'])) ? $product['retail-price'] : '')); 

update_post_meta($post_id, '_price', (isset($product['sale-price']) && !empty($product['sale-price'])) ? $product['sale-price'] : ((isset($product['retail-price']) && !empty($product['retail-price'])) ? $product['retail-price'] : $product['price']));

感谢Frits 的帮助。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-17
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2015-02-25
    相关资源
    最近更新 更多