WordPressのプラグイン「WooCommerce」をインストールし、色々試してみているところです。

今回は、バリエーションのある商品の価格表示を変更させてみました。

 

前提

・プラグイン「WooCommerce」インストール済み

・プラグイン「WooCommerce For Japan」インストール済み

・子テーマ作成済み

 

バリエーションのある商品を追加

まずは、バリエーションのある商品を追加してみました。

商品データ

<属性>

「色」、値に「白」「黒」を追加。

<バリエーション>

「白」の通常価格を1000円に、「黒」の通常価格を2000円に設定。

表示結果

 

価格が「最低価格-最高価格」のように表示されていますが、個人的には最低価格のみ表示させたいところです。

上記キャプチャで「¥1,000-¥2,000」となっている部分です。

 

カスタマイズ

対象ファイル:/wp-content/plugins/woocommerce/includes/class-wc-product-variable.php

変更前

	public function get_price_html( $price = '' ) {
		$prices = $this->get_variation_prices( true );

		if ( empty( $prices['price'] ) ) {
			$price = apply_filters( 'woocommerce_variable_empty_price_html', '', $this );
		} else {
			$min_price     = current( $prices['price'] );
			$max_price     = end( $prices['price'] );
			$min_reg_price = current( $prices['regular_price'] );
			$max_reg_price = end( $prices['regular_price'] );

			if ( $min_price !== $max_price ) {
				$price = wc_format_price_range( $min_price, $max_price );
			} elseif ( $this->is_on_sale() && $min_reg_price === $max_reg_price ) {
				$price = wc_format_sale_price( wc_price( $max_reg_price ), wc_price( $min_price ) );
			} else {
				$price = wc_price( $min_price );
			}

			$price = apply_filters( 'woocommerce_variable_price_html', $price . $this->get_price_suffix(), $this );
		}

		return apply_filters( 'woocommerce_get_price_html', $price, $this );
	}

変更後

	public function get_price_html( $price = '' ) {
		$prices = $this->get_variation_prices( true );

		if ( empty( $prices['price'] ) ) {
			$price = apply_filters( 'woocommerce_variable_empty_price_html', '', $this );
		} else {
			$min_price     = current( $prices['price'] );
			$max_price     = end( $prices['price'] );
			$min_reg_price = current( $prices['regular_price'] );
			$max_reg_price = end( $prices['regular_price'] );

			// if ( $min_price !== $max_price ) {
			// 	$price = wc_format_price_range( $min_price, $max_price );
			// } elseif ( $this->is_on_sale() && $min_reg_price === $max_reg_price ) {
			// 	$price = wc_format_sale_price( wc_price( $max_reg_price ), wc_price( $min_price ) );
			// } else {
				$price = wc_price( $min_price );
			// }

			$price = apply_filters( 'woocommerce_variable_price_html', $price . $this->get_price_suffix(), $this );
		}

		return apply_filters( 'woocommerce_get_price_html', $price, $this );
	}

156〜160,162行目をコメントアウトしました。

if文で、最低価格と最大価格が等しくない場合の処理などが記述されているので、条件に関わらず最低価格のみ取得するように変更しました。

表示結果

最低価格のみ表示させることに成功しました!

 

最後に

とりあえず、対象のファイルと記述箇所は突き止めましたが、プラグインのファイルを直接編集することはおすすめ出来ません。。。

同じように困っている方はこれを参考に、どうにか対処してみて下さい。