Получить все продукты из нескольких категорий (Woocommerce / WordPress)

Я хочу отображать все товары из нескольких категорий одновременно.

Когда я хочу отобразить все товары из одной категории, мой массив $ args выглядит так:

$args = array(
'post_type' => 'product',
'product_cat' => 'backpacks',
'orderby' => '_sku'
);

Я помню, что я могу просто сделать массив внутри моих $ args:

$args = array(
'post_type' => 'product',
'product_cat' => array(
'backpacks','accessoires',
),
'orderby' => '_sku'
);

Но это дает мне следующую ошибку:

Предупреждение: urlencode () ожидает, что параметр 1 будет строкой, а массив указан в C: \ xampp \ htdocs \ live \ wp-includes \ formatting.php в строке 4312

Я знаю, что это простая вещь, но я не могу понять, почему это не работает.
Спасибо за любую помощь!

0

Решение

Пожалуйста, попробуйте ниже фрагмент.

$sortcolumn = 'ID';
$prod_categories = array(12, 17); //category IDs
$product_args = array(
'numberposts' => -1,
'post_status' => array('publish', 'pending', 'private', 'draft'),
'post_type' => array('product', 'product_variation'), //skip types
'orderby' => $sortcolumn,
'order' => 'ASC',
);

if (!empty($prod_categories)) {
$product_args['tax_query'] = array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $prod_categories,
'operator' => 'IN',
));
}

$products = get_posts($product_args);
1

Другие решения

Нашел простой способ сделать это

$args = array(
'post_type' => 'product',
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'backpacks'
),
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'accessoires'
)
),
);
1