Я новичок в WordPress и WooCommerce, я считаю, что я определил строку кода, которая производит вывод, который я хочу изменить.
Я использую тему бесплатного artificer от WooCommerce, а index.php имеет строку:
<h3> <?php the_title(); ?> <span class="price"> <?php echo $_product->get_price_html(); ?> </span> </h3>
Это создает нечто вроде «Black Stone – $ 43» (то есть название продукта – цена )
Я хочу что-то вроде «Черный камень»
$ 43"
(т.е. название продукта <br/>
цена )
Похоже, существуют некоторые фильтры для функции “ get_price_html () `, но документация не очень хорошая или я просто не понимаю, как перемещаться по ней.
Любое направление будет оценено по достоинству.
Благодарю.
все $product->get_price_html();
производит что-то вроде этого:
<del><span class="amount">£8.00</span>–<span class="amount">£9.00</span></del> <ins><span class="amount">£7.00</span>–<span class="amount">£8.00</span></ins>
чтобы манипулировать этими данными, вы должны извлечь их из этой строки
Если вы используете фильтры WP – вы будете изменять get_price_html()
вывод везде, и если вам нужно изменить get_price_html()
вывод только в одном месте, вы должны сделать следующее:
global $product; $price_html = $product->get_price_html(); $price_html_array = price_array($price_html); function price_array($price){ $del = array('<span class="amount">', '</span>','<del>','<ins>'); $price = str_replace($del, '', $price); $price = str_replace('</del>', '|', $price); $price = str_replace('</ins>', '|', $price); $price_arr = explode('|', $price); $price_arr = array_filter($price_arr); return $price_arr; }
теперь у вас одинаковые данные в массиве
Array ( [0] => £8.00–£9.00 [1] => £7.00–£8.00 )
и вы можете сделать с ним все, что хотите
для применения глобального фильтра вы должны добавить
add_filter( 'woocommerce_get_price_html', 'price_array', 100, 2 );
Вероятно, это фильтр, который вы ищете:
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2); function custom_variation_price( $price, $product ) { $price = ''; $price .= woocommerce_price($product->min_variation_price); return $price; }
Это просто меняет его так, чтобы отображалась минимальная цена (и ничего больше), так как непонятно, как вы хотите форматировать / стилизовать ее. Вы можете получить доступ к другим сведениям через объект $ product для настройки вывода. Используйте его в файле functions.php.
Вы можете добиться этого, изменив указанную строку и добавив небольшой код css в файл custom.css
темы.
Замените данный код следующим образом:
<h3> <?php the_title(); ?> <br/> <span class="price"> <?php echo $_product->get_price_html(); ?> </span> </h3>
И добавьте следующий код css либо в файл custom.css
(рекомендуется), либо в последнюю строку файла style.css
.
ul.featured-products li h3 .price::before{ content : '' !important; }
Обратите внимание: приведенный выше код проверен и отлично работает с Artificer версии 1.3.16 (который был выпущен 05 мая 2016 года).
Надеюсь это поможет!