Tworząc niestandardowe typy postów rozszerzamy tym samym funkcjonalności WordPressa. Tworząc wtyczkę dla mojego klienta, która miała dodać CPT w postaci cennika napotkałem na tytułową zagwozdkę.
Założenie było proste: wyświetlić ceny usług z podziałem na kategorie maksymalnie do 3 zagłębienia – czyli:
- KATEGORIA – poziom 1
- Podkategoria – poziom 2
- Podkategoria – poziom 3
- Podkategoria – poziom 2
Z czasem okazało się, że nie wszystkie usługi kwalifikowały się do przypisania im odpowiedniej kategorii. Klient zażyczył sobie, aby po prostu pozycje bez przypisanej taksonomii wyświetliły się na końcu cennika, niezależnie.
Oczywiście, można było rozwiązać ten problem tworząc dodatkową kategorię, ale nie takie było założenie biznesowe projektu.
Niestandardowe zapytanie, które wyświetla wpisy z niestandardowego typu wpisu przypisane do stworzonej dla niego niestandardowej taksonomii jest raczej prostym zadaniem. Z kolei w drugą stronę, zadanie okazało się nieco trudniejsze. Rozwiązanie za to jest proste. Problem raczej w tym, że nie korzysta się zbyt często z dostępnych możliwości jakie oferuje klasa WP_Query.
Wyświetlenie CPT nieprzypisane do żadnej taksonomii
Aby wyświetlić niestandardowy typ wpisu, który nie jest przypisany do żadnej taksonomii należy sformułować zapytanie w następujący sposób:
$args = array(
'post_type' => cpt_name,
'tax_query' => array(
array(
'taxonomy' => '',
'field' => 'slug',
'terms' => '',
'operator' => 'NOT EXISTS'
)
)
);
$query = new WP_Query($args);
cpt_name – jest to nazwa, którą podajemy przy rejestracji CPT.