При разработке отдельных блоков интернет-магазина на WooCommerce, иногда нужно вывести отдельные переменные товара, для выполнения задачи поставленной клиентом и дизайнером.
Мы не говорим о готовых плагинах, а скорее о разработке блока с нуля, который бы соответствовал макету. Цена – это базовый атрибут карточки товара. В этой статье я приведу сниппет, который дает возможность вывода цены товара плагина WooCommerce в любом удобном для вас месте на сайте.
Получение цены в карточке товара:
function add_price_widget()
{
$product = wc_get_product(get_the_ID());
$thePrice = $product->get_price(); //will give raw price
echo $thePrice;
}
В любом другом месте на сайте:
function add_price_widget() {
global $woocommerce;
$product = new WC_Product(get_the_ID());
$thePrice = $product->get_price();
echo thePrice;
}
Помимо общей цены вы можете выводить базовую цену и сумму со скидкой.
$product->get_regular_price();
$product->get_sale_price();
$product->get_price();
Чтобы получить символ текущей валюты для цены:
$currency_symbol = html_entity_decode( get_woocommerce_currency_symbol() );
Из приведенных выше решений вы можете составлять свои форматы цен.
Еще одним важным моментом касательно цены товара является корректирование дефолтной цены в карточке товара. Редактировать системные файлы WooCommerce нельзя ни в коем случае, ближайший апдейт снесет все ваши правки. Для редактирования формата вывода цены product->get_price_html() есть фильтр.
apply_filters( 'woocommerce_get_price_html', $price, $this );
С его помощью вы можете создавать свой формат вывода цены для товара. Пример ниже.
// удаляем текущий вывод цены
add_filter( 'woocommerce_get_price_html', 'hide_all_wc_prices', 100, 2);
// заменяем нашим фильтром
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
$price .= '<span class="price">' . get_post_meta( get_the_ID(), '_regular_price', true). '</span>';
$price .= '<span class="symbol">' . sprintf(get_woocommerce_currency_symbol() ) . '</span>';
return apply_filters( 'woocommerce_get_price', $price );
}
Это лишь пример использования, вы можете задавать свои варианты для получения и вывода цены для товара в WooCommerce.