Ikona C# CSharp. C# CSharp icon.
PNG 512x512px
W bazie WordPress nie znajdziecie typowej tabeli o nazwie np. "Categories" w której znajdziecie wszystkie kategorie które wprowadzacie z menu "Wpisy -> Kategorie". Kategorie zapisywane są w tabeli "wp_terms" (UWAGA: prefix "wp_" jest domyślny przy instalacji. Jeśli przy instalacji wybrałeś inny prefix szukaj tabeli "terms" z Twoim prefixem). Jednak to czy dany wpis w tej tabel jest kategorią mówi wartość w innej kolumnie w innej tabeli a mianowicie w kolumnie o nazwie "taxonomy" w tabeli "wp_term_taxonomy". Żeby dany wpis z tabeli "wp_terms" był kategorią to po złączeniu obu tabel (wp_terms i wp_term_taxonomy) po wartościach z pól "term_id" wartość w polu "taxonomy" w tabeli "wp_term_taxonomy" musi być równa "category".
Obie tabele (wp_terms i wp_term_taxonomy) i powiązania między nimi prezentuje poniższy obrazek.
Poniżej prezentuję zapytanie do bazy które wyciągnie kategorie z podkategoriami i liczbę wpisów z danej kategorii bądź podkategorii.
SELECT
(CASE
WHEN t2.name IS NULL THEN t1.name
WHEN t2.name IS NOT NULL THEN t2.name
END)AS Kategoria
,t1.name AS Podkategoria
,tt1.count AS LiczbaWpisów
FROM
wp_term_taxonomy tt1
JOIN wp_terms t1 ON tt1.term_id = t1.term_id
LEFT JOIN wp_term_taxonomy tt2 ON tt1.parent = tt2.term_id
LEFT JOIN wp_terms t2 ON tt2.term_id = t2.term_idWHERE
tt1.taxonomy = 'category'ORDER BY
Kategoria