Чтобы просто вывести цену текущего товара, нужно внутри его цикла просто добавить небольшой код. Для этого нужный файл Где у вашей темы выводится товар. Название файла зависит от вашей темы. Поэтому точно сказать не могу, если вы занимаетесь разработкой своей темы, то должны знать. Возможно у вас вообще отдельная функция, которая выводит содержание карточки товара.
Перед изменением файла, обязательно сохраните его копию, чтобы в дальнейшем, в случаи ошибки, вернуть все как было.
В общим в нужном вам вам месте, для вывода цены товара нужно добавить вот такой код PHP:
echo get_post_meta( get_the_ID(), '_price', true);
Как видите, мы просто вывели произвольное поле _price с помощью get_post_meta(). WooCommerce использует это поле для базовой цены. Это работает только в случаи, если у вас цена без скидки, но как вывести старую цену и новую с учетом скидки?
Все очень просто. Нужно добавить другой код и будет он выглядеть следующим образом:
$price = get_post_meta( get_the_ID(), '_regular_price', true);
$sale = get_post_meta( get_the_ID(), '_price', true);
if (!empty($sale)){
echo $sale;
} else {
echo $price;
}
Тут как и в предыдущем ничего сложного. Задаем две переменные с произвольными полями. WooCommerce использует эти поля для базовой цены, как писал ранее и новой с учетом акции. Далее, просто, делаем проверку есть ли цена со скидкой, если есть - выводим ее, нет - выводим базовую.
Еще хочу предложить третий вариант, когда цену надо менять в зависимости от выбранного количества, например если у вас рядом поле количества. Код схож с предыдущим, но немножко изменен:
<div class="totalprice">
<div class="totalamount"><?php
$price = get_post_meta( get_the_ID(), '_regular_price', true);
$sale = get_post_meta( get_the_ID(), '_price', true);
if (!empty($sale)){
echo $sale;
} else {
echo $price;
}
?></div>
<div class="currentprice" style="display:none;">
<?php
if (!empty($sale)){
echo $sale;
} else {
echo $price;
}
?></div>
</div>
Добавляем блоки с классами и дважды выводим цену. Правда, второй раз в одном блоке скрытом. Это цена для правильного вычисления цены, после изменения количества. блоку с классом
Теперь нужно добавить скрипт jQuery, который и будет изменять текущую цену, что зависит от количества в первом, не скрытом блоке.
<script>
jQuery(document).ready(function($){
$(".qty").click(function () {
var calc = $(this);
var calcText = calc.val();
var price = $('.currentprice');
var priceText = price.text();
var totalAmount = $('.totalamount');
var n = priceText * calcText;
totalAmount.text( n );
});
});
</script>
Скрипт простой. При нажатии на числовое поле - задаем переменную в которое помещаем наше поле, вторую переменную - текущее значение поля, третью переменную - блок с ценой за единицу товара, четвертая - текст, то бишь текущая цена, пятая - блок с общей ценой и последняя переменная - умножаем значение поля(количество) на цену за единицу. В конце, просто меняем в блоке с общей ценой значение на новое, что получилось после умножения.
Данный скрипт рассчитан на стандартное числовое поле ввода WooCommerce, что задает количество в карточке товара. Если у вас какое-то другое поле или модифицированное, то скрипт придется немного изменить под себя. Тут зависит от конкретного случая, поэтому подсказать не могу.
На этом все, спасибо за внимание. 🙂