web-dev-qa-db-ja.com

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"を表示しますが、販売価格のみ、または販売価格がない場合は製品価格のみを表示したいだけです。以下のコードを見て、これをどのように達成しますか?

10
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()を呼び出します。通貨記号なしで販売されているかどうかに基づいて価格を取得します。

お役に立てば幸いです。

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

3
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;
                }
1
Mike