我正在使用一个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;但我只是想显示销售价格或只显示产品价格,如果没有销售价格。看看下面的代码,我将如何实现这一目标?
答案 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;
}