WooCommerce: get_price_html nasıl düzenlenir


13

Tek bir ürünün fiyat değerini düzenlemeye çalışıyorum.

Burada single-product/price.phpbir şablon çağrısı var $product->get_price_html. HTML'nin sunulma şeklini değiştirmek için bu işlevi / yöntemi nasıl düzenleyebilirim?

Şu anda içinde bulunan fonksiyonun tüm içeriğini class-wc-productsilsem bile hala mucizevi bir şekilde görüntüleniyor mu? Nedenini bilen var mı?

Yanıtlar:


17

Çekirdek ve eklenti dosyaları hiçbir zaman doğrudan düzenlenmemelidir, çünkü herhangi bir güncelleme değişikliklerinizin üzerine yazabilir. Yönteme WooCommerce kaynağına bakarsanız, işlevin çıktısını değiştirmek için kullanılabilecek get_price_htmlbir dizi filtre vardır.

Çağrılara add_filterfiltre ekleme hakkında daha fazla bilgi için Kodeks'e bakın apply_filters.

Gönderen get_price_htmliçinde class-wc-product:

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

Kendi filtrenizi eklemek için:

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

Cevabınız için teşekkürler, bu arada ana işlevin içeriğini sildiğimde çıktıyı normal olarak döndürüyor
Lucky Luke

1
Diyelim ki bir satış varsa ve bana geri dönerse <del>£2</del><ins>£1</ins>, bunu Was:<del>£2</del> Now:<ins>£1</ins>bir filtreyle nasıl değiştirebilirim ?
Şanslı Luke

emin değilim, WooCommerce'ye çok aşina değil, belki başka bir sınıf onu genişletir. ikinci sorunuz için yukarıdaki düzenlemeye bakın.
Milo

Brill,;), büyük yardım
Lucky Luke

Ben varsayılan woocommerce_get_price_htmlfiltre ne olduğunu bilmek çalışıyorum $price. Sitemde, woocommerce ücretsiz ürünler için 0 $ gösteriyorFree!
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
Kodunuz çalışabilse bile (ve bunun olmadığını düşünmek için hiçbir nedenim yok) bu bir Q / A sitesi, bir kod deposu değil, bu yüzden sadece açıklama olmadan kod yazmak yerine, kodunuzu açıklayan uzmanlığı ve bilgiyi paylaşmanız daha iyi olur ne satır içi yorumlar ...
gmazzap

kod ayrıca iyi olmayan nesne özelliklerini kullanır.
Svetoslav Marinov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.