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?

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 );
}

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>';
   }
}

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.