Как отключить поле количества на странице сведений о продукте в woocommerce?

Мне нужно скрыть поле «количество» (где вводится количество перед добавлением в корзину) в Woocommerce на странице сведений о продукте и показывать только кнопку «добавить в корзину», которая затем помещает количество 1 в тележке. Причина в том, что я собираю количество на основе Gravity Forms.


person user2051753    schedule 07.02.2013    source источник


Ответы (11)


  • Отредактируйте свой продукт.
  • Щелкните «Инвентарь».
  • Установите флажок "Продается индивидуально".
person John Chandler    schedule 16.12.2013
comment
Это лучше всего для каждого продукта в отдельности. В противном случае фильтрация woocommerce_is_sold_individually лучше всего подходит для общего применения ко всем продуктам. - person helgatheviking; 07.12.2015

Самый безопасный способ - использовать встроенный хук или фильтр WordPress.

/**
 * @desc Remove in all product type
 */
function wc_remove_all_quantity_fields( $return, $product ) {
    return true;
}
add_filter( 'woocommerce_is_sold_individually', 'wc_remove_all_quantity_fields', 10, 2 );

Вы также можете удалить селектор количества в продуктах другого типа. Подробнее см. Здесь http://www.sutanaryan.com/how-to-remove-product-quantity-selectors-woocommerce/

Обратите внимание: использование этой опции фактически делает невозможным добавление товара в корзину более одного раза. После нажатия кнопки «Добавить в корзину» появится предупреждение о том, что этот товар может быть в вашей корзине только один раз. Это может быть желательно не для всех.

person Ryan S    schedule 20.06.2014
comment
Это, безусловно, лучший ответ здесь, и его следует принять как ответ на вопрос. - person Reinoud van Santen; 18.09.2014
comment
дать согласие! он перезаписывает настройку на вкладке данных продукта - ›инвентарь. знайте об этом. - person nicmare; 15.11.2014
comment
@Reinoud van Santen: Я так не думаю - он полагается на ловушку, которая тоже может измениться, wc_remove_all_quantity_fields похоже, что она может удалить ЛЮБОЕ поле количества .. - person jave.web; 12.03.2015
comment
Обратите внимание: использование этой опции фактически делает невозможным размещение товара в корзине более одного раза. После нажатия кнопки «Добавить в корзину» появится предупреждение о том, что этот товар может быть в вашей корзине только один раз. Это может быть желательно не для всех. - person Aron Rotteveel; 02.04.2015
comment
Голосование не помогло, если указанное выше решение не является 100% -ным или имеет некоторый конфликт или последствия, тогда, пожалуйста, предоставьте 110% -ые решения, которые работают, это может быть старым, но помогает другим, ищущим решение. - person Ryan S; 23.04.2015
comment
Это можно упростить до: add_filter( 'woocommerce_is_sold_individually', '__return_true' ); - person Dylan; 23.09.2016
comment
Почему этот метод самый безопасный? Я думаю, это будет зависеть от варианта использования. Меня беспокоит только то, что любой, кто читает это, может разумно подумать, что использовать ответ @John Chandler небезопасно, что тоже совершенно нормально. - person armadadrive; 19.06.2017
comment
Мне не нравится это решение, так как предупреждение, которое вы уже разместили там. для меня разница заключается в том, чтобы скрыть ввод и манипулировать ВСЕМИ продуктами, которые будут продаваться индивидуально, просто чтобы поле исчезло .. - person honk31; 15.11.2017
comment
См. Мой ответ, если вы хотите знать, как иметь товар более одного раза без поля количества. - person Tofandel; 13.05.2019

введите описание изображения здесь

Нет необходимости использовать плагин или редактировать function.php, просто отметьте опцию, показанную на изображении выше.

person NJENGAH    schedule 15.02.2018
comment
Мне нравится, когда я думаю, что что-то будет сложным, а потом получаю такой ответ, и это просто. - person logos_164; 20.09.2018
comment
Как ни странно, у меня есть это, но количество все еще отображается на кассе. - person j4hangir; 16.01.2019

Существует бесплатный плагин для удаления селекторов количества, которые могут вам подойти. http://wordpress.org/extend/plugins/woocommerce-remove-quantity-fields/

person Doug Smith    schedule 08.02.2013

Я нашел простой способ сделать это на одной странице продукта и сохранить счетчик количества в корзине. Просто поместите следующий код в functions.php

add_action( 'wp_head', 'quantity_wp_head' );
function quantity_wp_head() {
if ( is_product() ) {
    ?>
<style type="text/css">.quantity, .buttons_added { width:0; height:0; display: none; visibility: hidden; }</style>
<?php }
}    

Вы можете проверить документацию woocommerce здесь: http://docs.woothemes.com/document/remov-product-content-based-on-category/

person Bruno Sousa    schedule 09.12.2014
comment
извините, но это решение просто уродливо. вставить тег стиля на страницы, посвященные одному продукту ..? почему бы в первую очередь не использовать стандартный wordpress style.css с приличным селектором ?! - person honk31; 15.11.2017

Плагин не нужен, например, вы можете скрыть его с помощью css. Но woocommerce позволяет вам продавать только 1 товар, без возможности добавить больше того же товара в корзину. Взгляните на woocommerce-> настройки. Это все есть.

person rgdesign    schedule 31.07.2013
comment
Я не согласен с этим понятием сокрытия функциональности в Wordpress с помощью CSS. CSS предназначен для презентации. - person user3791372; 05.01.2016
comment
Этого не следует делать с помощью css - это делают настройки продукта woocommerce. - person Natacha Beaugeais; 29.10.2017
comment
Но woocommerce позволяет вам продавать только 1 товар, без возможности добавить еще один и тот же товар в корзину. Вы читали эту часть? - person rgdesign; 30.10.2017

Вам нужно отредактировать шаблон single-product/add-to-cart/variation-add-to-cart-button.php.

Таким образом, вы можете просто скопировать этот шаблон в свою тему и отредактировать его, чтобы удалить поле количества. Это было бы примерно так:

<?php
/**
 * Single variation cart button
 *
 * @see     http://docs.woothemes.com/document/template-structure/
 * @author  WooThemes
 * @package WooCommerce/Templates
 * @version 2.5.0
 */
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

global $product;
?>
<div class="woocommerce-variation-add-to-cart variations_button">
    <button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
    <input type="hidden" name="add-to-cart" value="<?php echo absint( $product->id ); ?>" />
    <input type="hidden" name="product_id" value="<?php echo absint( $product->id ); ?>" />
    <input type="hidden" name="variation_id" class="variation_id" value="0" />
</div>
person skiplecariboo    schedule 06.04.2016

Существует крайний случай, который не обрабатывается другими ответами на этот вопрос, опция woocommerce `` продается индивидуально '' эффективно удаляет ввод количества, но предотвращает добавление одного и того же продукта в корзину несколько раз.

В случае использования, когда у вас есть продукт с настраиваемыми атрибутами, где вы не хотите, чтобы количество было редактируемым, но вы все же хотите разрешить пользователю добавлять тот же продукт в корзину с разными атрибутами, тогда `` продается индивидуально '' вариант не сработает

В этом случае вам понадобится этот фильтр.

add_filter( 'woocommerce_cart_item_quantity', function ( $qty, $item_key, $item ) {
    if ( ! empty( $item['custom_data'] ) ) { //Here check for your custom attribute
        return sprintf( '1 <input type="hidden" name="cart[%s][qty]" value="1" />', $item_key );
    }
    return $qty;
}, 10, 3 );
person Tofandel    schedule 13.05.2019

Настройка продукта (или магазина в целом) на «продается индивидуально», как объясняется другими ответами здесь, теперь работает для меня, но я также нашел другое решение: скрытие поля количества на определенном идентификаторе страницы. Если кто-то хочет, чтобы поле отображалось на определенных страницах, а не на других по какой-либо причине, рассмотрите эту альтернативу:

.page-id-11111 .woocommerce .quantity .qty {
    Display:None!important;
}

Это позволит людям добавлять несколько раз в корзину и редактировать количество при оформлении заказа, если они это делают, при этом скрывая поле количества на шорткоде / странице продукта. Дополнительная информация здесь: Удалить поле количества из Woocommerce, не предотвращая добавление нескольких тележек? (Я переработал сайт, поэтому в этом решении мне больше нет необходимости, но это может кому-то помочь.)

person darkcaldera    schedule 21.05.2020

Вы также можете использовать woocommerce_quantity_input_min и woocommerce_quantity_input_max перехватывает, установив для обоих значений 1.

Фактически, в шаблоне /woocommerce/global/quantity-input.php поле количества будет автоматически скрыто, если min и max имеют одинаковое значение.

// hides the quantity field on the product page
add_filter( 'woocommerce_quantity_input_min', 'hide_woocommerce_quantity_input', 10, 2 );
add_filter( 'woocommerce_quantity_input_max', 'hide_woocommerce_quantity_input', 10, 2 );
function hide_woocommerce_quantity_input( $quantity, $product ) {
    // only on the product page
    if ( ! is_product() ) {
        return $quantity;
    }
    return 1;
}

Код протестирован и работает. Добавьте его в файл functions.php вашей активной темы.

person Vincenzo Di Gaetano    schedule 09.03.2021

Это очень просто, в woocommerce\includes\abstracts\abstract-wc-product.php найдите abstract-wc-product.php файл в woocommerce

Найдите код ниже на странице

$availability = sprintf( __( '%s in stock', 'woocommerce' ), $this->get_total_stock() );

замените этот код на

$availability = sprintf( __( '%s in stock', 'woocommerce' ),'');
person Ganesh Suthar    schedule 24.09.2016
comment
Очень просто после обновления вы попадете в беспорядок :) - person j4hangir; 16.01.2019