Как отобразить цену продажи woocommerce или обычную цену, если нет цены продажи

Я использую плагин WooCommerce product addons, где я хотел бы отобразить цену продукта в моем раскрывающемся разделе аддонов. В настоящее время код у меня есть это

    <?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()

что это делает, хотя отображает $ "цена продажи" $ "цена", но я просто хочу отобразить только цену продажи или только цену продукта, если нет цены продажи. Глядя на код ниже, как бы я это сделал?

2 ответов


довольно простой. Мы напишем пользовательскую функцию, которая сначала будет уверена в этом, если продукт продается или нет. Затем он вернет обычную или продажную цену на основе условия продажи, определенного ранее. Таким образом, функция будет-

/**
 * 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(). Вы получите цену на основе is on sale или нет без символа валюты.

надеюсь, что это поможет.


эта статья работает на меня. вы также можете попробовать этот.

Если вы хотите получить обычную цену или продажную цену продукта woocommerce, и вы ничего не получаете, вам нужно знать следующее:

Если продукт не имеет никаких изменений, вы можете получить обычную цену и цену продажи так же, как это:

получить цену простой procut

<?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/