WooCommerce-如何仅显示已定义的销售价格?否则,仅显示正常价格

时间:2019-02-08 16:42:47

标签: php wordpress woocommerce

因此,我在主页上有WooCommerce特色产品的代码,它可以正常工作,但问题是,如果价格为空或未定义,我需要它们隐藏销售价格。 这是到目前为止我得到的:

<?php $price = get_post_meta( get_the_ID(), '_regular_price', true ); ?>
<?php $sale = get_post_meta( get_the_ID(), '_sale_price', true ); ?>
    <p>
        <del>
            <span class="amount"><?php echo wc_price($price); ?></span>
        </del>
        <ins>
            <span class="amount"><?php echo wc_price($sale); ?></span>
        </ins>
    </p>

我需要一个可以检查是否有销售价格并显示的代码:

<p>
    <del>
        <span class="amount"><?php echo wc_price($price); ?></span>
    </del>
    <ins>
        <span class="amount"><?php echo wc_price($sale); ?></span>
    </ins>
</p>

如果未定义销售价格,则仅显示:

<p>
    <ins>
        <span class="amount"><?php echo wc_price($price); ?></span>
    </ins>
</p>

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

您只需要将其包装在某些条件中即可。这样的事情会起作用:

<p>
    <?php if(isset($sale) ):?>
    <del>
        <span class="amount"><?php echo wc_price($price); ?></span>
    </del>
    <?php endif;?>
    <ins>
        <span class="amount"><?php echo isset($sale) ? wc_price($sale) : wc_price($price); ?></span>
    </ins>
</p>

最初的if语句检查是否有售价,如果有,它将显示<del></del>块。 然后在<ins></ins>块中,使用三元运算符来控制输出哪个价格。

<?php echo isset($sale) ? wc_price($sale) : wc_price($price); ?>

等同于

<?php 
     if (isset($sale)) {
        echo wc_price($sale);
     } else {
        echo wc_price($price);
     }
?>

答案 1 :(得分:1)

$price = get_post_meta( get_the_ID(), '_regular_price', true ); 
$sale = get_post_meta( get_the_ID(), '_sale_price', true ); ?>
<p>
   <?php if( $sale ) { ?>
    <del>
    <span class="amount"><?php echo wc_price($price); ?></span>
    </del>

    <ins>
        <span class="amount"><?php echo wc_price($sale); ?></span>
    </ins>
    <?php } else { ?>
        <span class="amount"><?php echo wc_price($price); ?></span>
    <?php } ?>
</p>

仅检查销售价格就有价值