• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Как указать цену в каталоге - руб/м2 и руб/м3 для разной категории товаров?

gpv2

Новичок
Добрый день. Бьюсь уже не первый день. Посоветуйте решение. Проблема в том, что часть товаров в магазине имеет цену за 1 м2, а другая продается за 1 м3. Как сделать, чтобы это отображалось в графе цена? и в ходе заказа было понятно, за что платишь деньги, устанавливая количество.. Спасибо заранее!
 

galiulinr

Опытный
Местный
А вы не пробовали использовать Произвольные поля?
Например задаем имя произвольного поля "unit" далее для каждого товара задаем параметр характеризующий единицу измерения, например: куб. м или кв. м.
Приведу пример как вставить это поле например в блок с Категорией и Метками на странице товара.
Для этого находит в плагине Woocommerce файл meta.php вот его путь templates/single-product/meta.php в нем необходимо найти такие строки:

Код:
<span class="sku_wrapper"><?php _e( 'SKU:', 'woocommerce' ); ?> <span class="sku" itemprop="sku"><?php echo ( $sku = $product->get_sku() ) ? $sku : __( 'N/A', 'woocommerce' ); ?></span>.</span>
<?php endif; ?>

сразу после нее вставляем следующее:

Код:
<span class="sku_wrapper">Цена за: <span class="sku" itemprop="sku"><?php echo (get_post_meta($post->ID, 'unit', true)); ?></span>.</span>

и не забудьте отредактированный файл meta.php скопировать в вашу тему чтобы не потерять при обновлении
путь должен быть такой ВАША_ТЕМА/woocommerce/single-product/meta.php
 
  • Like
Реакции: D&B

gpv2

Новичок
Спасибо за наводку. Благодарен всемерно!!! Подскажите, а могу я данные произвольного поля встроить прямо к цене в корзине и на странице категории товаров. Например, 9500 руб./м3 или 5000 руб./м2 Как это сделать?
 
Последнее редактирование:

galiulinr

Опытный
Местный
да можете для этого нужно в файле /templates/single-product/price.php строку
Код:
<p class="price"><?php echo $product->get_price_html(); ?></p>
заменить на:
Код:
<p class="price"><?php echo $product->get_price_html(); ?>&nbsp;-&nbsp;
<?php echo (get_post_meta($post->ID, 'unit', true)); ?>
</p>
 

gpv2

Новичок
На карточку товара поставить цену с доп параметром получилось. Но не могу разобраться, как ее поменять везде на сайте (в категориях, где все товары, в корзине при оформлении заказа) Подскажи, плиз!!!
 

galiulinr

Опытный
Местный
Вставляем следующий код в functions.php вашей темы все что выше я написал сделать убираем
этого кода достаточно

Код:
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
    $meta_values = get_post_meta( get_the_ID(), 'unit',true );
 
  $price = $price .'/'. $meta_values;

    return apply_filters( 'woocommerce_get_price', $price );
}

но и не забываем создавать произвольное поля для каждого товара с именем unit
 

Igorloki

Новичок
Вставляем следующий код в functions.php вашей темы все что выше я написал сделать убираем
этого кода достаточно

Код:
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
    $meta_values = get_post_meta( get_the_ID(), 'unit',true );

  $price = $price .'/'. $meta_values;

    return apply_filters( 'woocommerce_get_price', $price );
}

но и не забываем создавать произвольное поля для каждого товара с именем unit
а как сделать тоже самое только для вариативного товара?
 

Igorloki

Новичок
Вставляем следующий код в functions.php вашей темы все что выше я написал сделать убираем
этого кода достаточно

Код:
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
    $meta_values = get_post_meta( get_the_ID(), 'unit',true );

  $price = $price .'/'. $meta_values;

    return apply_filters( 'woocommerce_get_price', $price );
}

но и не забываем создавать произвольное поля для каждого товара с именем unit
а как сделать тоже самое только для вариативного товара? подскажите пожалуйста
 

Mr.Alexandr

Новичок
Как изменить код , если вести добавление такого параметры не с произвольного поля, а с поля атрибута?
и где найти описание функции, к которым надо обращаться?
 

dim70

Опытный
Код:
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
    $meta_values = get_post_meta( get_the_ID(), 'unit',true );
 
  $price = $price .'/'. $meta_values;

    return apply_filters( 'woocommerce_get_price', $price );
}

но и не забываем создавать произвольное поля для каждого товара с именем unit

Добрый день. Спасибо Вам за отличное решение. Скажите, как сделать чтобы и в корзине и на странице оформления отображались изменения, так же как в каталоге и карточке товара?
 

zeus12

Новичок
А вы не пробовали использовать Произвольные поля?
Например задаем имя произвольного поля "unit" далее для каждого товара задаем параметр характеризующий единицу измерения, например: куб. м или кв. м.
Приведу пример как вставить это поле например в блок с Категорией и Метками на странице товара.
Для этого находит в плагине Woocommerce файл meta.php вот его путь templates/single-product/meta.php в нем необходимо найти такие строки:

Код:
<span class="sku_wrapper"><?php _e( 'SKU:', 'woocommerce' ); ?> <span class="sku" itemprop="sku"><?php echo ( $sku = $product->get_sku() ) ? $sku : __( 'N/A', 'woocommerce' ); ?></span>.</span>
<?php endif; ?>

сразу после нее вставляем следующее:

Код:
<span class="sku_wrapper">Цена за: <span class="sku" itemprop="sku"><?php echo (get_post_meta($post->ID, 'unit', true)); ?></span>.</span>

и не забудьте отредактированный файл meta.php скопировать в вашу тему чтобы не потерять при обновлении
путь должен быть такой ВАША_ТЕМА/woocommerce/single-product/meta.php
Добрый день у меня стоит тема Bazar я никак не могу найти где в шаблоне у меня значение сколько товаров осталось на складе ,что бы туда добавить произвольное поле ,нужно для того что я продаю плитку и она продается на кв/м ,а стандартно там указано -например (12 в наличие ),а мне нужно что бы было 12кв/м в наличие ,как сделать так с помощи произвольных полей ? в каком именно файле хранится это значиние ?
 

misha25

Форумчанин
Возможно еще подойдет изменение валюты в зависимости от категории

PHP:
## Изменение валюты рубля на ₽/м² для товаров категорий Ламинат, Кварцвиниловая плитка, Подложка
add_filter('woocommerce_currency_symbol', 'wpcraft_change_currency_symbol_in_cat', 10, 2);
function wpcraft_change_currency_symbol_in_cat( $currency_symbol, $currency ) {
global $post, $product;
 
if ( has_term( ['laminat', 'kvarcvinilovaya-plitka', 'podlozhka'], 'product_cat' ) ) {        // 'laminat' это слаг категории
switch( $currency ) {
case 'RUB': $currency_symbol = ' ₽/м²';
break;
}
}
return $currency_symbol;
}

## end Изменение валюты
 

dim70

Опытный
Возможно еще подойдет изменение валюты в зависимости от категории

PHP:
## Изменение валюты рубля на ₽/м² для товаров категорий Ламинат, Кварцвиниловая плитка, Подложка
add_filter('woocommerce_currency_symbol', 'wpcraft_change_currency_symbol_in_cat', 10, 2);
function wpcraft_change_currency_symbol_in_cat( $currency_symbol, $currency ) {
global $post, $product;

if ( has_term( ['laminat', 'kvarcvinilovaya-plitka', 'podlozhka'], 'product_cat' ) ) {        // 'laminat' это слаг категории
switch( $currency ) {
case 'RUB': $currency_symbol = ' ₽/м²';
break;
}
}
return $currency_symbol;
}

## end Изменение валюты
Отлично решение, спасибо!
 
Сверху Снизу