Подтвердить что ты не робот

Скрыть "нет в наличии" продукты в Woocommerce

В разделе "Продукты" и "Инвентарь" я проверил следующие настройки: "Скрыть элементы из каталога"

Теперь все проданные товары скрыты в представлении архива/категории. Пока все хорошо.

Проблема заключается в том, что скрытые (на складе) товары подсчитываются на странице. Итак, если на первой странице продано 3 продукта, отображаются только те, что есть на складе (6).

Также кажется, что эти "скрытые" продукты по-прежнему доступны для поиска, а также видны через различные виджеты.

Есть идеи, как это исправить? Я имею в виду ДЕЙСТВИТЕЛЬНО скрывать продукты, которые отсутствуют на складе. Или мне нужно их удалить?

4b9b3361

Ответ 1

Примечание для себя: всегда читайте журнал изменений от разработчика.

Нашел ответ здесь: http://develop.woothemes.com/woocommerce/2014/02/solving-common-issues-after-updating-to-woocommerce-2-1/#category-counts-incorrect

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

Перейдите на вкладку "Инструменты" в WooCommerce > Состояние системы вашего Панель администрирования WordPress. Здесь вы сначала используете термин "Пересчитать" и после этого используйте кнопку "Очистить переходные процессы". Это будет заставляют систему пересчитывать все продукты при следующей категории загружается.

Обновление. Также помните, что недостаточно изменить количество запасов на 0. Вы также должны установить "Состояние запасов" на "Нет на складе". Если товар не будет засчитан в магазине, даже если на складе нет товаров.

Ответ 2

Вы можете попробовать добавить это в свой файл functions.php темы:

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {


$q->set( 'meta_query', array(array(
    'key'       => '_stock_status',
    'value'     => 'outofstock',
    'compare'   => 'NOT IN'
)));

}

remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

Я изменил код с этого URL-адреса: http://www.wptaskforce.com/how-to-exclude-one-or-more-category-in-woocommerce-shop-page/

Сохраняется здесь снова на случай, если сайт отключен: (этот код исключает определенные категории продуктов)

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {

$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'PUT YOUR CATEGORY HERE' ), // Don't display products in the membership category on the shop page . For multiple category , separate it with comma.
'operator' => 'NOT IN'
)));

}



remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

Ответ 3

Я нашел более простой способ, если кто-то все еще ищет скрытые продукты в woocommerce, следуйте этим простым шагам без редактирования html!

  • Перейдите в WooCommerce → Настройки
  • Перейдите в раздел "Ресурсы"
  • Есть флажок, который говорит что-то о нашей проблеме, однако он идет по-английски:-) вы найдете то, что вам нужно
  • Сохранить

Ответ 4

который будет работать только в том случае, если вы используете официальные короткие коды woocommerce, но если вы создаете страницу с визуальным композитором и используете настраиваемые плагины или сторонние плагины или короткие коды, первым шагом будет запрос, который запускается из цикла, тогда вы меняете его на что-то вроде этого

$params = array(
        'posts_per_page' => 5,
        'post_type' => array('product', 'product_variation'),
        'meta_query' => array(
            array(
                'key' => '_stock_status',
                'value' => 'instock'
            )
        )
);

самая важная часть, над которой вы должны быть уверены, -

    'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock'
        )
    )