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.