Miesięczne archiwum: Grudzień 2016

WordPress. Jak znaleźć tabele z kategoriami wordpress’a w bazie MySQL? How To Find Out WordPress Category Table in MYSQL?

Wordpress. Jak znaleźć tabele z kategoriami wordpress'a w bazie MySQL? How To Find Out WordPress Category Table in MYSQL?

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.

Wordpress. Jak znaleźć tabele z kategoriami wordpress'a w bazie MySQL? How To Find Out WordPress Category Table in MYSQL?

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_id

WHERE
    tt1.taxonomy = 'category'

ORDER BY
    Kategoria