WooCommerce - Как установить стандартную регулярную цену товара

30 июн. 2013 г., 10:27:47
Просмотры: 29.3K
Голосов: 3

Я использую WooCommerce на работе для запросов оборудования, поэтому все товары, которые я буду создавать, должны иметь цену £0. Возможно ли установить значение по умолчанию равное 0 для поля регулярной цены в форме добавления товара?

Спасибо Джек

1
Комментарии

В качестве альтернативы вы можете использовать плагин, например WooCommerce Request A Quote, чтобы просто полностью убрать оплату.

Karl Wolf Karl Wolf
26 янв. 2016 г. 14:27:55
Все ответы на вопрос 3
7

Вы можете выполнить проверку на хуке save_post, но WooCommerce уже имеет хук для обработки метаданных, где проверки типа записи и безопасности уже выполнены. Таким образом, используя их хук, вам просто нужно проверить пустую строку для обычной цены и установить её в 0.

function wpa104760_default_price( $post_id, $post ) {

    if ( isset( $_POST['_regular_price'] ) && trim( $_POST['_regular_price'] ) == '' ) {
        update_post_meta( $post_id, '_regular_price', '0' );
    }

}
add_action( 'woocommerce_process_product_meta', 'wpa104760_default_price' );

Не уверен, что именно вы пытаетесь сделать с WooCommerce, но у меня был клиент, который использовал http://a3rev.com/shop/woocommerce-quotes-and-orders/ для перехода от обычного магазина с ценами и корзиной к каталогу с "запросом на предложение".

Редактирование: Хотя приведённый выше код сохранит 0 в качестве цены каждый раз при создании/обновлении товара, следующий код всегда позволит товару быть доступным для покупки, независимо от цены:

add_filter('woocommerce_is_purchasable', '__return_TRUE'); 

Чтобы полностью удалить "распродажу" (всплывающий значок), просто отключите его от соответствующего хука:

function woocommerce_remove_stuff(){
  remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10 );
}
add_action('woocommerce_before_single_product', 'woocommerce_remove_stuff');
30 июн. 2013 г. 17:13:02
Комментарии

Спасибо за ваш ответ. Я попробовал использовать указанную функцию, но она, кажется, не позволяет добавить товар в корзину. Я пытаюсь создать систему запроса оборудования, где авторизованные пользователи могут добавлять оборудование (без указания цены) в корзину и оформлять "заказ" на эти товары. Пользователи являются сотрудниками моей компании, а оборудование уже принадлежит компании.

lupo lupo
1 июл. 2013 г. 23:23:18

Я думал, что бесплатный товар можно добавить в корзину. Вы также можете попробовать переопределить фильтр woocommerce_is_purchasable, чтобы он всегда возвращал true.

helgatheviking helgatheviking
2 июл. 2013 г. 00:03:06

Когда я вручную ввожу 0 в цену, товар можно добавить в корзину, но при использовании указанной функции и оставлении поля пустым кнопка добавления в корзину не отображается, хотя отображается иконка распродажи. Как мне переопределить фильтр woocommerce_is_purchasable?

lupo lupo
2 июл. 2013 г. 00:14:46

Мой код был для случая, когда вы создаёте или редактируете товар и не заполняете цену... то есть для цены по умолчанию. Он автоматически устанавливает цену в 0, но только при сохранении товара. Это не влияет на фронтенд, за исключением эффектов от нулевой цены. Ещё раз, думаю, что woocommerce_is_purchasable может быть решением.

helgatheviking helgatheviking
2 июл. 2013 г. 00:29:50

add_filter('woocommerce_is_purchasable', 'woocommerce_is_always_purchasable');

function woocommerce_is_always_purchasable(){ return true; }

lupo lupo
2 июл. 2013 г. 00:44:08

Спасибо, вышеуказанное помогло, но по какой-то причине отображается значок распродажи. Можно ли полностью отключить функцию распродажи, так как я не буду её использовать.

lupo lupo
2 июл. 2013 г. 00:47:12

Проверьте мою правку, чтобы убрать всплывающее уведомление о скидке.

helgatheviking helgatheviking
2 июл. 2013 г. 05:34:50
Показать остальные 2 комментариев
0

Я нашел решение этой проблемы. Эта функция устанавливает обычную цену товара и цену со скидкой в 0 после обновления товара:

function set_default_price( $post_id, $post ) {

    if ( isset( $_POST['_regular_price'] ) && trim( $_POST['_regular_price'] ) == '' ) {
        update_post_meta( $post_id, '_regular_price', '0' );
    }

if ( isset( $_POST['_sale_price'] ) && trim( $_POST['_sale_price'] ) == '' ) {
        update_post_meta( $post_id, '_sale_price', '0' );
    }

}
add_action( 'woocommerce_process_product_meta', 'set_default_price' );

Строка кода ниже делает новый товар доступным для покупки, вы можете использовать этот код для новых товаров:

add_filter('woocommerce_is_purchasable', '__return_TRUE'); 
24 янв. 2014 г. 12:47:19
0

В WooCommerce 3 можно использовать следующий код:

function NAME_default_price($product)
{
  if (!$product->get_regular_price()) {
    $product->set_regular_price('0');
  }
}
add_action('woocommerce_admin_process_product_object', 'NAME_default_price');
24 апр. 2024 г. 13:11:56