WooCommerce: Cara mengedit get_price_html

13

Saya mencoba mengedit nilai harga untuk satu produk.

Di single-product/price.phpsana ada templat panggilan ke $product->get_price_html. Bagaimana saya bisa mengedit fungsi / metode itu untuk mengubah cara HTML disajikan?

Saat ini bahkan jika saya menghapus semua isi fungsi yang terletak di class-wc-productdalamnya masih secara ajaib ditampilkan? Adakah yang tahu kenapa?

Luke yang beruntung
sumber

Jawaban:

17

File inti dan plugin tidak boleh diedit secara langsung, karena setiap pembaruan dapat menimpa perubahan Anda. Jika Anda melihat sumber WooCommerce di get_price_htmlmetode ini, ada sejumlah filter yang tersedia untuk memodifikasi output fungsi.

Lihat add_filterdi Codex untuk info lebih lanjut tentang menambahkan filter ke apply_filterspanggilan.

Dari get_price_htmldalam class-wc-product:

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

Jadi, tambahkan filter Anda sendiri:

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 );
}
Milo
sumber
Terima kasih atas jawabannya, omong-omong mengapa ketika saya menghapus isi fungsi utama masih mengembalikan output seperti biasa
Lucky Luke
1
Jadi katakanlah jika ada penjualan dan itu mengembalikan saya <del>£2</del><ins>£1</ins>, bagaimana saya bisa mengubahnya menjadi Was:<del>£2</del> Now:<ins>£1</ins>dengan filter?
Lucky Luke
tidak yakin, tidak terlalu akrab dengan WooCommerce, mungkin kelas lain memperluasnya. lihat edit di atas untuk pertanyaan kedua Anda.
Milo
Brill,;), bantuan besar
Lucky Luke
Saya mencoba untuk mengetahui apa yang terjadi pada woocommerce_get_price_htmlfilter default $price. Di situs saya, woocommerce menunjukkan $ 0 untuk produk gratis sebagai gantinyaFree!
SKMohammadi
5
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>';
   }
}
Pankaj jha
sumber
5
Bahkan jika kode Anda dapat bekerja (dan saya tidak punya alasan untuk menganggapnya tidak) ini adalah situs T / A, bukan repositori kode sehingga lebih baik berbagi keahlian dan pengetahuan yang menjelaskan kode Anda, daripada hanya menulis kode tanpa penjelasan atau komentar inline ...
gmazzap
kode juga menggunakan properti objek yang tidak bagus.
Svetoslav Marinov