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

时间:2017-05-14 10:10:44

标签: php wordpress 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()

它的作用是显示$&#34;销售价格&#34; $&#34;价格&#34;但我只是想显示销售价格或只显示产品价格,如果没有销售价格。看看下面的代码,我将如何实现这一目标?

3 个答案:

答案 0 :(得分:25)

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

/**
 * 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()。如果没有货币符号,您将获得基于销售的价格。

希望有所帮助。

答案 1 :(得分:3)

这篇文章对我有用。你也可以试试这个。

如果您想获得一个woocommerce产品的正常价格或促销价,而您什么也得不到,您需要知道以下内容:

如果产品没有变化,您可以获得正常的价格和销售价格:

获取简单代理的价格

<?php
#the product must be instantiated above like $product = new WC_Product();
echo $product->regular_price;
echo $product->sale_price;
?>

如果您使用上述代码,如果产品有变化,您将无法获得任何结果。

您需要获得变化的产品价格。

获取具有差异的产品价格

#1 Get product variations
$product_variations = $product->get_available_variations();

#2 Get one variation id of a product
$variation_product_id = $product_variations [0]['variation_id'];

#3 Create the product object
$variation_product = new WC_Product_Variation( $variation_product_id );

#4 Use the variation product object to get the variation prices
echo $variation_product ->regular_price;
echo $variation_product ->sale_price;

应该是全部。

享受。

来源:http://www.w3bdeveloper.com/how-to/how-to-get-regular-price-of-a-product-in-wordpress-woocommerce/

答案 2 :(得分:0)

那对我来说适用于Wordpress 5.1和WooCommerce 3.5.5:

                $price = get_post_meta( get_the_ID(), '_regular_price', true);
                $price_sale = get_post_meta( get_the_ID(), '_sale_price', true);
                if ($price_sale !== "") {
                    echo $price_sale;
                } else {
                    echo $price;
                }