it-swarm.com.ru

Как отобразить цену продажи или обычную цену в 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()

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

7
JPWeb

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

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

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

21
CodeMascot

Эта статья сработала для меня. Вы также можете попробовать эту.

Если вы хотите получить обычную цену или цену продажи продукта 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
Umair Mehmood

Вот что работает для меня с 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;
                }
0
Mike