Как вывести цену товара WooCommerce в любом месте

Чтобы просто вывести цену текущего товара, нужно внутри его цикла просто добавить небольшой код. Для этого нужный файл Где у вашей темы выводится товар. Название файла зависит от вашей темы. Поэтому точно сказать не могу, если вы занимаетесь разработкой своей темы, то должны знать. Возможно у вас вообще отдельная функция, которая выводит содержание карточки товара.

Перед изменением файла, обязательно сохраните его копию, чтобы в дальнейшем, в случаи ошибки, вернуть все как было.


В общим в нужном вам вам месте, для вывода цены товара нужно добавить вот такой код 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, что задает количество в карточке товара. Если у вас какое-то другое поле или модифицированное, то скрипт придется немного изменить под себя. Тут зависит от конкретного случая, поэтому подсказать не могу.
Теги:
цена товара, WooCommerce
Добавлено: 20 Апреля 2021 07:08:09 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...