WooCommerce: як редагувати get_price_html


13

Я намагаюся відредагувати цінову вартість для одного товару.

В single-product/price.phpє шаблон виклик $product->get_price_html. Як я можу редагувати цю функцію / метод, щоб змінити спосіб подання HTML?

На даний момент, навіть якщо я видалю весь вміст функції, що знаходиться в class-wc-productній, все ще дивом відображається? Хтось знає, чому?

Відповіді:


17

Основні та плагінні файли ніколи не можна редагувати безпосередньо, оскільки будь-які оновлення можуть замінити ваші зміни. Якщо ви шукаєте у методі джерела WooCommerce get_price_html, існує ряд фільтрів, які дозволяють змінити вихід функції.

Дивіться add_filterу Codex для отримання додаткової інформації про додавання фільтрів до apply_filtersдзвінків.

З get_price_htmlу class-wc-product:

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

Отже, щоб додати свій власний фільтр:

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

Дякую за відповідь, до речі, чому, коли я видаляю вміст основної функції, вона все одно повертає результат як нормальний
Lucky Luke

1
Тож давайте скажемо, якщо відбулася розпродаж, і вона повертає мене <del>£2</del><ins>£1</ins>, як я можу змінити це на Was:<del>£2</del> Now:<ins>£1</ins>фільтр?
Lucky Luke

не впевнений, не надто знайомий з WooCommerce, можливо, інший клас поширює його. див. редагування вище для вашого другого питання.
Міло

Брилл,;), велика допомога
Lucky Luke

Я намагаюся знати, що відбувається в woocommerce_get_price_htmlфільтрі за замовчуванням для $price. На моєму веб-сайті woocommerce показує 0 $ за безкоштовні продукти замість цьогоFree!
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
Навіть якщо ваш код може працювати (і я не маю причин вважати, що це не так), це сайт Q / A, а не сховище коду, тому краще поділитися досвідом та знаннями, що пояснюють ваш код, а не просто писати код без пояснень. ні вбудовані коментарі ...
gmazzap

код також використовує властивості об'єкта, що не є добре.
Святослав Маринов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.