web-dev-qa-db-ja.com

WooCommerce:get_price_htmlの編集方法

単一商品の価格を編集しようとしています。

single-product/price.phpには$product->get_price_htmlへのテンプレート呼び出しがあります。 HTMLの表示方法を変更するためにその関数/メソッドを編集するにはどうすればいいですか?

現時点で、class-wc-productにある関数の内容をすべて削除しても、まだ奇跡的に表示されますか?誰もがその理由を知っていますか?

11
Lucky Luke

コアファイルやプラグインファイルは、直接更新しないでください。更新があると、変更内容が上書きされる可能性があります。 WooCommerceのソースでget_price_htmlメソッドを見ると、関数の出力を変更するために利用可能な filters がいくつかあります。

add_filter 呼び出しにフィルタを追加する方法については、Codexの apply_filters を参照してください。

get_price_htmlclass-wc-productから:

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

だからあなた自身のフィルタを追加するには:

add_filter( 'woocommerce_get_price_html', 'wpa83367_price_html', 100, 2 );
function wpa83367_price_html( $price, $product ){
    return 'Was:' . str_replace( '<ins>', ' Now:<ins>', $price );
}
16
Milo
function wpa83368_price_html( $price,$product ){
   // return $product->price;
    if ( $product->price > 0 ) {
      if ( $product->price && isset( $product->regular_price ) ) {
        $from = $product->regular_price;
        $to = $product->price;
        return '<div class="old-colt"><del>'. ( ( is_numeric( $from ) ) ? woocommerce_price( $from ) : $from ) .' Retail </del>  | </div><div class="live-colst">'.( ( is_numeric( $to ) ) ? woocommerce_price( $to ) : $to ) .'Our Price</div>';
      } else {
        $to = $product->price;
        return '<div class="live-colst">' . ( ( is_numeric( $to ) ) ? woocommerce_price( $to ) : $to ) . 'Our Price</div>';
      }
   } else {
     return '<div class="live-colst">0 Our Price</div>';
   }
}
5
Pankaj jha