WP zapytanie WooCommerce produkty, które należą do różnych wielu kategorii tylko zapytanie podatkowe
Używam WP_Query
dla produktów Woocommerce w celu zapytania produktów w określonej kategorii. To jest składnia, która działała dla mnie -
$args = array(
'posts_per_page' => -1,
'product_cat' => 'category-slug-here',
'post_type' => 'product',
'orderby' => 'title',
);
$the_query = new WP_Query( $args );
// The Loop
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '' . get_the_title() . '<br /><br />';
}
wp_reset_postdata();
To zwraca dane, ale chcę przekazać ID, a nie SLUG kategorii, do filtrowania i chcę znaleźć produkty, które istnieją w wielu kategoriach tylko .
Argument product_cat
nie jest natywny dla WP_Query
(przynajmniej to mogę znaleźć), więc zakładam, że jest to coś zwyczajowego do Woocommerce. Poprzez ich dokumentację, I nie udało mi się znaleźć niczego, co pozwoli mi filtrować według identyfikatora kategorii, ani użyć warunku AND do tego filtrowania.
Użycie cat
, tablicy tax_query
i category__and
nie dało żadnych wyników. Zasadniczo chciałbym zapytać o wszystkie produkty, które istnieją zarówno w kategorii ID 102, jak i 115. Jeśli muszę używać ślimaków, jestem pewien, że istnieje sposób na uzyskanie tych informacji na podstawie posiadanego identyfikatora, ale chciałbym uniknąć 2 zapytań do filtrowania według wielu kategorii.
Czy ktoś wie jak to osiągnąć?
UPDATE: dowiedziałem się, że oddzielanie kategorii ślimakami przecinkami w argumencie product_cat
spowoduje efekt "OR", więc połączy różne produkty z obu, ale nie tego Szukam. Na przykład:
'product_cat' => 'category-slug1, category-slug2'
Zwróci produkty z obu kategorii w sumie, ale nadal szukam sposobu, aby znaleźć różne produkty, które należą tylko do obu lub wielu kategorii.
4 answers
Wow, więc po godzinach walenia głową, w ten sposób udało mi się to rozwiązać.]}
$args = array(
'posts_per_page' => -1,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'category-slug1'
),
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'category-slug2'
)
),
'post_type' => 'product',
'orderby' => 'title',
);
$the_query = new WP_Query( $args );
To wykorzystuje argument tax_query
, w tym relation => 'AND'
, aby upewnić się, że produkt należy do obu kategorii.
Nie byłem również w stanie dowiedzieć się, jak przekazać IDENTYFIKATOR, a nie slug (chociaż jestem pewien, że jest sposób), ale oto funkcja, aby odzyskać slug na podstawie ID:
$terms = get_term($YOURID, 'product_cat');
$theslug = $terms->slug;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-08 02:00:13
Aby odpytywać według category_ID, to mi się udało.
// First obtain term id:
//...
$all_categories = get_categories( $args );
$cat_ids = array();
foreach ($all_categories as $cat)
{
array_push($cat_ids, $cat->term_id);
}
//Now use ids from array:
$args = array(
'posts_per_page' => -1,
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cat_ids
)
)
);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-17 23:44:36
Z Kodeksu WordPress na WP_Query
dla parametrów kategorii :
Odpowiednik lub
$args = array( 'product_cat' => 'category-slug1,category-slug2' ) );
Odpowiednik i
$args = array( 'product_cat' => 'category-slug1+category-slug2' );
Np.
$query = new WP_Query( $args );
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-28 18:35:15
Wewnątrz tablicy 'tax_query' można określić 'operator' do wykonania w zapytaniu. Możesz osiągnąć to, co chcesz, używając operatora 'AND'.
$args = array(
'posts_per_page' => -1,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'category-slug1', 'category-slug2' )
'operator => 'AND',
),
),
'post_type' => 'product',
'orderby' => 'title',
);
$the_query = new WP_Query( $args );
Wszystkie produkty wybrane przez to zapytanie będą zgodne z podanymi "warunkami". Zobacz ten link, aby uzyskać więcej informacji: https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters
W przypadku, gdy link kiedykolwiek pęknie, oto odpowiednia informacja:
Operator (string) - Operator do sprawdzenia. Możliwe wartości to "IN", "NOT IN", "and", "EXISTS" I "NOT EXISTS". Wartość domyślna to 'IN'.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-09 16:58:50