WP_Query: исключить скрытые продукты из списка продуктов WooCommerce
-
-
Я хотел бы отметить,что этот код в конечном итоге катастрофически выйдет из строя из-за того,что для параметра `posts_per_page` установлено значение` -1`.Немногие серверы будут обрабатывать этот код при 1000 сообщений,не говоря уже о 20 000.Умножьте это на количество посетителей,приходящих на ваш сайт.I would note that this code will eventually fail catastrophically due to the `posts_per_page` being set to `-1`. Few servers would handle this code when there are 1000 posts, nevermind 20,000. Multiply that by however many visitors arrive on your site
- 0
- 2016-12-03
- Tom J Nowell
-
2 ответ
- голосов
-
- 2016-06-30
Важно: следующее работает только для версий WooCommerce ниже 3.0.Чтобы получить более свежий ответ,см. Другой ответ Калле .
WooCommerce сохраняет эти данные как
metadata
,поэтому вам нужно будет запустить Мета-запрос с именем_visibility
.Что-то вроде:'meta_query' => array( array( 'key' => '_visibility', 'value' => 'hidden', 'compare' => '!=', ) )
При этом будут извлечены все сообщения, которые не имеют мета
_visibility
,равногоhidden
.Important: The following only works for WooCommerce versions less than 3.0. For a more up-to-date answer please see the other answer by kalle.
WooCommerce save this data as
metadata
so you'll need to run a Meta Query against the name_visibility
. Something like:'meta_query' => array( array( 'key' => '_visibility', 'value' => 'hidden', 'compare' => '!=', ) )
This will pull all posts that do not have meta
_visibility
equal tohidden
.-
Отлично.Вот что мне было нужно.Для всех,кто ищет этот ответ,вот полный вопрос к вышеизложенному. ` -1,'post_type'=> 'product','orderby'=> 'menu-order','order'=> 'asc','meta_query'=> array ( массив ( 'key'=> '_visibility', 'значение'=> 'скрыто', 'compare'=> '!=', ) )); $ wc_query=новый WP_Query ($params); ?> `Perfect. That's what I needed. For anyone who searches for this answer, here is the full query to the above. ` -1, 'post_type' => 'product', 'orderby' => 'menu-order', 'order' => 'asc', 'meta_query' => array( array( 'key' => '_visibility', 'value' => 'hidden', 'compare' => '!=', ) )); $wc_query = new WP_Query($params); ?>`
- 0
- 2016-06-30
- Peter Ingersoll
-
@PeterIngersoll FYI,вы можете отметить этот ответ как принятый,чтобы показать будущим посетителям,что сработало для вас :) Слева от ответа Howdy есть галочка.Подробнее читайте здесь: http://wordpress.stackexchange.com/help/someone-answers@PeterIngersoll FYI, you can mark this answer as accepted to show future visitors what worked for you as well :) There's a check mark on the left of Howdy's answer. Read more here: http://wordpress.stackexchange.com/help/someone-answers
- 0
- 2016-07-05
- Tim Malone
-
- 2017-04-06
Начиная с Woocommerce 3. Видимость: изменено на таксономию вместо мета .Поэтому вам нужно изменитьmeta_query наtax_query. Чтобы показывать только видимые товары,
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'exclude-from-catalog', 'operator' => 'NOT IN', ), ),
и примеры рекомендуемых продуктов
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ),
Возможные термины: «исключить из поиска»,«исключить из каталога»,«рекомендованные»,«вне запасов».
As of Woocommerce 3. Visibility is changed to taxonomy instead of meta. So you need to change the meta_query to tax_query. To show only visible products,
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'exclude-from-catalog', 'operator' => 'NOT IN', ), ),
and examples for Featured Products
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ),
Possible terms: 'exclude-from-search', 'exclude-from-catalog', 'featured', 'outofstock'.
Надеюсь,это не слишком специфично для WooCommerce.
У меня есть отличный шорткод,который отображает список всех моих продуктов с артикулами. Тем не менее,он также включает в себя продукты,которые я опубликовал,но установил видимость каталога как «скрытую».
Я не могу найти аргумент/параметр для исключения скрытых продуктов (или включения только тех,которые отмечены как Каталог/Поиск).
Я знаю,что это должно быть просто; Я просто не нашел. Спасибо за любую помощь.
Вот код: