前提・実現したいこと
$product->get_dollPrice_html()の値を1.2で割りたい。そこでwc_get_price_to_displayの連想配列に'price'を1.2で割った'dollPrice' => $dollPriceを追加して解決しようと試みた。
発生している問題・エラーメッセージ
自分で作った$product->get_dollPrice_html()(詳細は該当のコードエリアにて)で出力した結果が、既存の$product->get_price_html()で出力した結果と変わらない。
試したこと
get_price_html()を見てみると以下の記述があった。
php
1public function get_price_html( $deprecated = '' ) { 2 if ( '' === $this->get_price() ) { 3 $price = apply_filters( 'woocommerce_empty_price_html', '', $this ); 4 } elseif ( $this->is_on_sale() ) { 5 $price = wc_format_sale_price( wc_get_price_to_display( $this, array( 'price' => $this->get_regular_price() ) ), wc_get_price_to_display( $this ) ) . $this->get_price_suffix(); 6 } else { 7 $price = wc_price( wc_get_price_to_display( $this ) ) . $this->get_price_suffix(); 8 } 9 10 return apply_filters( 'woocommerce_get_price_html', $price, $this ); 11 }
自分の状況はelseの場合のみしかないのでwc_price()とwc_get_price_to_display()のみを考え、それらの内容は以下の通りだった。
php
1function wc_price( $price, $args = array() ) { 2 $args = apply_filters( 3 'wc_price_args', 4 wp_parse_args( 5 $args, 6 array( 7 'ex_tax_label' => false, 8 'currency' => '', 9 'decimal_separator' => wc_get_price_decimal_separator(), 10 'thousand_separator' => wc_get_price_thousand_separator(), 11 'decimals' => wc_get_price_decimals(), 12 'price_format' => get_woocommerce_price_format(), 13 ) 14 ) 15 ); 16 17 $unformatted_price = $price; 18 $negative = $price < 0; 19 $price = apply_filters( 'raw_woocommerce_price', floatval( $negative ? $price * -1 : $price ) ); 20 $price = apply_filters( 'formatted_woocommerce_price', number_format( $price, $args['decimals'], $args['decimal_separator'], $args['thousand_separator'] ), $price, $args['decimals'], $args['decimal_separator'], $args['thousand_separator'] ); 21 22 if ( apply_filters( 'woocommerce_price_trim_zeros', false ) && $args['decimals'] > 0 ) { 23 $price = wc_trim_zeros( $price ); 24 } 25 26 $formatted_price = ( $negative ? '-' : '' ) . sprintf( $args['price_format'], '<span class="woocommerce-Price-currencySymbol">' . get_woocommerce_currency_symbol( $args['currency'] ) . '</span>', $price ); 27 $return = '<span class="woocommerce-Price-amount amount">' . $formatted_price . '</span>'; 28 29 if ( $args['ex_tax_label'] && wc_tax_enabled() ) { 30 $return .= ' <small class="woocommerce-Price-taxLabel tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>'; 31 } 32 33 34/** 35 * Filters the string of price markup. 36 * 37 * @param string $return Price HTML markup. 38 * @param string $price Formatted price. 39 * @param array $args Pass on the args. 40 * @param float $unformatted_price Price as float to allow plugins custom formatting. Since 3.2.0. 41 */ 42 return apply_filters( 'wc_price', $return, $price, $args, $unformatted_price ); 43}
php
1function wc_get_price_to_display( $product, $args = array() ) { 2 $args = wp_parse_args( 3 $args, 4 array( 5 'qty' => 1, 6 'price' => $product->get_price(), 7 8 ) 9 ); 10 $price = $args['price']; 11 $qty = $args['qty']; 12 13 return 'incl' === get_option( 'woocommerce_tax_display_shop' ) ? 14 wc_get_price_including_tax( 15 $product, 16 array( 17 'qty' => $qty, 18 'price' => $price, 19 20 ) 21 ) : 22 wc_get_price_excluding_tax( 23 $product, 24 array( 25 'qty' => $qty, 26 'price' => $price, 27 28 ) 29 ); 30} 31
該当のソースコード
新たに自分で作ったget_dollPrice_html()のコード
php
1public function get_dollPrice_html( $deprecated = '' ) { 2 if ( '' === $this->get_price() ) { 3 $dollPrice = apply_filters( 'woocommerce_empty_price_html', '', $this ); 4 } elseif ( $this->is_on_sale() ) { 5 $dollPprice = wc_format_sale_price( wc_get_price_to_display( $this, array( 'price' => $this->get_regular_price() ) ), wc_get_price_to_display( $this ) ) . $this->get_price_suffix(); 6 } else { 7 $dollPrice = wc_price( wc_get_price_to_display( $this ) ) . $this->get_price_suffix(); 8 } 9 10 return apply_filters( 'woocommerce_get_price_html', $dollPrice, $this ); 11 }
改変したwc_get_price_to_display()
php
1function wc_get_price_to_display( $product, $args = array() ) { 2 $args = wp_parse_args( 3 $args, 4 array( 5 'qty' => 1, 6 'price' => $product->get_price(), 7 'dollPrice' =>intval($product->get_price()) / 1.2, 8 ) 9 ); 10 $price = $args['price']; 11 $qty = $args['qty']; 12 $dollPrice = $arg['dollPrice']; 13 14 return 'incl' === get_option( 'woocommerce_tax_display_shop' ) ? 15 wc_get_price_including_tax( 16 $product, 17 array( 18 'qty' => $qty, 19 'price' => $price, 20 'dollPrice' => $dollPrice, 21 ) 22 ) : 23 wc_get_price_excluding_tax( 24 $product, 25 array( 26 'qty' => $qty, 27 'price' => $price, 28 'dollPrice' => $dollPrice, 29 ) 30 ); 31}
お手数ですがご教示いただけましたら幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/24 04:08
2019/09/24 04:11
2019/09/24 04:18
2019/09/24 04:21
2019/09/24 04:31
2019/09/24 05:21 編集