如果没有销售价格,如何显示 woocommerce 销售价格或正常价格

新手上路,请多包涵

我正在使用 woocommerce 产品插件插件,我想在插件的下拉部分中显示产品的价格。目前我的代码是这个

    <?php
$loop = 0;
$current_value = isset( $_POST['addon-' . sanitize_title( $addon['field-name'] ) ] ) ? wc_clean( $_POST[ 'addon-' . sanitize_title( $addon['field-name'] ) ] ) : '';
global $product;
?>
<p class="form-row form-row-wide addon-wrap-<?php echo sanitize_title( $addon['field-name'] ); ?>">
    <select class="addon addon-select" name="addon-<?php echo sanitize_title( $addon['field-name'] ); ?>">

        <?php if ( ! isset( $addon['required'] ) ) : ?>
            <option value=""><?php _e('None', 'woocommerce-product-addons'); ?></option>
        <?php else : ?>
            <!--<option value=""><?php _e('Select an option...', 'woocommerce-product-addons'); ?></option>-->
        <?php endif; ?>

        <?php foreach ( $addon['options'] as $i => $option ) :
            $loop ++;
            $price = apply_filters( 'woocommerce_product_addons_option_price',
                $option['price'] > 0 ? ' + ' . wc_price( get_product_addon_price_for_display( $option['price'] ) ) . '' : '',
                $option,
                $i,
                'select'
            );
            ?>
            <option data-raw-price="<?php echo esc_attr( $option['price'] ); ?>" data-price="<?php echo get_product_addon_price_for_display( $option['price'] ); ?>" value="<?php echo sanitize_title( $option['label'] ) . '-' . $loop; ?>" <?php selected( $current_value, sanitize_title( $option['label'] ) . '-' . $loop ); ?>><?php echo wptexturize( $option['label'] . ' (' ); echo balanceTags($product->get_price_html()) . $price ?>)</option>
        <?php endforeach; ?>

    </select>
</p>

我正在使用这个回声

$product->get_price_html()

这虽然是显示 \("sale price" \)“price” 但我只想显示销售价格,如果没有销售价格,我只想显示产品价格。查看下面的代码,我将如何完成此操作?

原文由 JPWeb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 431
1 个回答

很简单。我们将编写一个自定义函数,首先确定产品是否在销售。然后它将根据之前定义的销售条件返回正常或销售价格。所以函数将是:

 /**
 * Returns product price based on sales.
 *
 * @return string
 */
function the_dramatist_price_show() {
    global $product;
    if( $product->is_on_sale() ) {
        return $product->get_sale_price();
    }
    return $product->get_regular_price();
}

现在调用这个函数 the_dramatist_price_show() 而不是 $product->get_price_html() 。您将获得基于是否在销售或没有货币符号的价格。

希望有帮助。

原文由 CodeMascot 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题