WordPress: come visualizzare post per categoria con SQL

Come visualizzare, su una pagina non di wordpress o in Home Page, i post suddivisi per categoria; interrogando direttamente il database di wordpress tramite query SQL con uno script PHP senza utilizzare Plugin.

Dopo avere effettuato mille ricerche su Google, e non aver trovato nulla a riguardo mi sono dovuto arrangiare. Per questo motivo ho voluto condividere quello che ho scoperto su questo argomento. Per impedire che altri webmaster si trovino nella mia stessa situazione.

IL DATABASE DI WORDPRESS:

Al momento in cui scrivo la versione di WordPress è la 3; e in questo momento il database risponde alle seguenti logiche:

WordPress memorizza i post, o articoli, nella tabella ‘wp_posts‘.
Memorizza, poi, le categorie, i tag nella tabella ‘wp_terms‘.

La logica associativa di queste due tabelle funziona nel seguente modo: nella tabella ‘wp_term_taxonomy‘ WordPress descrive, per ogni riga, cosa quel determinato termine è; cioè ci spiega se il term ‘windows’ è una categoria o un TAG!

Dopo averlo definito WordPress effettua le associazioni nella tabella ‘wp_term_relationships‘: qui noi sappiamo ogni post a cosa è collegato!

ESEMPIO:

Vogliamo estrapolare tutti gli articoli che siano stati scritti sotto la categoria ‘windows‘. Noi dobbiamo andare in wp_terms controllare a quale ‘term_id’ corrisponde la categoria ‘windows’ e segnarcelo su un foglio. Consiglio magari per prendere manualità di creare una categoria di prova che chiamiamo con un nome inventato per non confonderlo con i TAG!

Una volta scritto, su un foglio, il ‘term_id‘ andiamo in ‘wp_term_taxonomy‘ scorriamo la tabella cercando nella colonna ‘term_id‘ il valore che ci siamo segnati, riferito alla nostra categoria e segniamoci il valore ‘term_taxonomy_id‘ relativo.

Bene siamo già alla fine di questo viaggio nei meandri del database di WordPress! Portate pazienza!

Ora nella tabella ‘wp_term_relationships‘, invece, avremo la lista dei post associati alla categoria in questione.

Ci basta effettuare una semplice query per estarli, eccola:

$sql = "SELECT * FROM `wpguide_term_relationships` WHERE `term_taxonomy_id` = 12 LIMIT 0, 30 ";

Nel mio caso la query restituisce 5 risultati, che sono i 5 articoli scritti in quella determinata categoria!

Ora effettuiamo una JOIN SQL fra diverse tabelle per ottenere il risultato!

Eccola:

$query="SELECT p.post_content, p.post_title, p.guid FROM wp_posts AS p, wp_term_relationships AS r WHERE p.ID = r.OBJECT_ID AND r.term_taxonomy_id = '12'";

E come per magia vi restituirà 3 campi:

  1. Post_content: il testo dell’articolo;
  2. Post_title: titolo articolo;
  3. Guid: il permalink all’articolo!

3 pensieri su “WordPress: come visualizzare post per categoria con SQL

  1. Juri

    Dovrei importare i contenuti di un sito (articoli, categorie, tag e allegati) in un altro sito, ma non ce la faccio, né con l'importer del file xml (che è superiore a 25 mega) né importando il database (mi dà errore, anche se importo la sola tabella wp_posts.
    MI potresti dare una mano? Grazie mille in anticipo.

    Replica
    1. Melloni Luca Autore articolo

      Scommetto che l'errore che hai è di TimeOut?!?
      È un problema comune in quanto si tratta di un'impostazione di sicurezza del server.

      Hai due possibilità:
      1- Splitti il codice SQL da importare con MySql in più parti piccole e con pazienza le carichi tutte;
      2- Contatti il tuo gestore del server e gli chiedi se possono farlo loro al tuo posto!

      Saluti
      Luca

      Replica

Tu cosa ne pensi?