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.