WooCommerce: Как редактировать get_price_html
2 ответ
- голосов
-
- 2013-01-27
Файлы ядра и подключаемых модулей нельзя редактировать напрямую,так как любые обновления могут перезаписать ваши изменения. Если вы посмотрите в источнике WooCommerce на метод
get_price_html
,вы увидите,что существует ряд фильтров ,доступных для изменить вывод функции.См.
add_filter
в Кодексе для получения дополнительной информации о добавлении фильтров в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 ); }
Core and plugin files should never be edited directly, as any updates could overwrite your changes. If you look in WooCommerce source at the
get_price_html
method, there are a number of filters available to modify the output of the function.See
add_filter
in Codex for more info on adding filters toapply_filters
calls.From
get_price_html
inclass-wc-product
:return apply_filters('woocommerce_get_price_html', $price, $this);
So to add your own filter:
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 ); }
-
Спасибо за ответ,кстати,почему,когда я удаляю содержимое основной функции,она по-прежнему возвращает результат как обычноThanks for the answer, by the way why when I delete the contents of the main function it still returns the output as normal
- 0
- 2013-01-27
- Lucky Luke
-
Допустим,если была распродажа,и она вернула мне
£ 2£ 1 `,как я могу изменить это на` Was:£ 2Теперь: £ 1 `с фильтром?So lets say if there was a sale on and it returns me `£2£1`, how can i change that into `Was:£2Now:£1` with a filter?- 1
- 2013-01-27
- Lucky Luke
-
не уверен,не слишком знаком с WooCommerce,возможно,его расширяет другой класс.см. правку выше для вашего второго вопроса.not sure, not too familiar with WooCommerce, perhaps another class extends it. see edit above for your second question.
- 0
- 2013-01-27
- Milo
-
Brill,;),большая помощьBrill, ;), great help
- 0
- 2013-01-27
- Lucky Luke
-
Я пытаюсь узнать,что происходит в фильтре по умолчанию `woocommerce_get_price_html` для` $price`.На моем сайте woocommerce показывает 0 $ за бесплатные продукты вместо «Бесплатно!»I am trying to know that what happening in default `woocommerce_get_price_html` filter for `$price`. In my site,woocommerce shows 0$ for free products instead `Free!`
- 0
- 2016-12-07
- SKMohammadi
-
В каком файле есть эта функция?Я не могу найти файл.благодаряWhich file has that function? I can't find the file. Thanks
- 0
- 2020-06-19
- Si8
-
- 2014-01-03
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>'; } }
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>'; } }
-
Даже если ваш код может работать (а у меня нет причин думать,что это не так),это сайт вопросов и ответов,а не репозиторий кода,поэтому лучше делиться опытом и знаниями,объясняя ваш код,а не просто писать код без объясненияни встроенных комментариев ...Even if your code can work (and I have no reason to think it doesn't) this is a Q/A site, not a code repository so it's better share expertice and knowledge explaining your code, instead of just write code with no explaination nor inline comments...
- 6
- 2014-01-03
- gmazzap
-
код также использует свойства объекта,что нехорошо.the code also uses object properties which is not good.
- 0
- 2018-05-08
- Svetoslav Marinov
Я пытаюсь изменить цену для одного товара.
В
single-product/price.php
есть вызов шаблона для$product->get_price_html
.Как я могу отредактировать эту функцию/метод,чтобы изменить способ представления HTML?В настоящий момент,даже если я удалю все содержимое функции,расположенной в
class-wc-product
,оно все равно чудесным образом отображается?Кто-нибудь знает почему?