Nell’articolo di oggi approfondiamo le dinamiche del database WordPress provando a recuperare articoli direttamente dal database senza usare la funzione wp_query nativa di WordPress.
Connessione database
Per prima cosa, nella pagina php dove andrà recuperato il loop di wordpress dobbiamo inserire le credenziali di connessione al database ed effettuare l’accesso al server mysql.
<?php //connessione DB $host = "localhost"; $db_user = "tuoutente"; $db_psw = "tuapassword"; $db_name = "tuodatabase"; $connessione = mysql_connect("$host","$db_user","$db_psw"); if(!$connessione) { die("Errore critico di Connessione al Database" . mysql_error()); } ?>
Ora siamo pronti ad analizzare ed inserire le query di cui necessitiamo!
Recuperare gli ultimi articoli pubblicati
In questo primo esempio andremo a recuperare gli ultimi 5 articoli pubblicati (presi da tutte le categorie)
<?php //connessione mysql_select_db("$db_name",$connessione); //query $ris_news= mysql_query(" SELECT * FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) LEFT JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) WHERE wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' LIMIT 5 "); //Se la query va male if (!$ris_news) { //messaggio di errore per capire il problema exit ('<p> Errore mentre recuperavo i dati' . mysql_error() . '</p>'); }
Recuperare gli ultimi articoli pubblicati in una categoria
In questo esempio andiamo a filtrare gli ultimi 5 articoli pubblicati in una determinata categoria.
<?php //connessione mysql_select_db("$db_name",$connessione); //query $ris_news= mysql_query(" SELECT * FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) LEFT JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) WHERE wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' AND wp_term_taxonomy.term_id = 260 LIMIT 5 "); //Se la query va male if (!$ris_news) { //messaggio di errore per capire il problema exit ('<p> Errore mentre recuperavo i dati' . mysql_error() . '</p>'); }
Come vedrete in questo esempio aggiungendo alla query la riga AND wp_term_taxonomy.term_id = IDCATEGORIA possiamo tranquillamente filtrare la categoria di interesse.
Recuperare gli ultimi articoli pubblicati da più categorie
Per filtrare da più categorie modificate la query in questo modo:
SELECT * FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) LEFT JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) WHERE wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' AND wp_term_taxonomy.term_id = 260 UNION SELECT * FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) LEFT JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) WHERE wp_posts.post_status = 'publish' AND wp_posts.post_type = 'post' AND wp_term_taxonomy.term_id = 28
Stampa dei risultati della query
Una volta strutturata la query andiamo a ciclare i contenuti con un semplice while in questo modo:
// loop per stampare i risultati while ($news = mysql_fetch_array($ris_news)) { ?> <?php echo $news['title']; //Stampa il titolo articolo ?> <?php echo $news['guid']; //Stampa il link all'articolo ?> <?php }//While ?>
Come vedete dall’esempio possiamo facilmente recuperare le informazioni sui vari articoli come meglio crediamo. Una soluzione non proprio ortodossa per effettuare query su WordPress ma sono sicuro che ad alcuni potrà risultare utilissimo. Ricordate che – salvo casi estremi – è sempre opportuno effettuare le query come da codex di WordPress pertanto non abusate di questa soluzione!
Cosa ne pensi? Scrivi nei commenti la tua opinione o condividi semplicemente l’articolo sui tuoi social network preferiti!
Cioa Riccardo complimenti per le tue conoscenze leggo spesso i tuoi post. Ho fa farti una domanda. Sto sviluppando il mio sito in php jquery e bootstrap e ora sono difronte ad un problema che non riesco a risolvere. Ho una sezione download per scaricare dati miei personali e l intero progetto però vorrei che li scaricasse abbia fatto il login ( mysql ho sotto). Come faccio a sapere se uno si è loggato o no? Devo sfruttare le sessioni php?i Session Storage jquery? Se puoi aiutarmi te ne sono grato. Con stima
Christian Chiama
Cioa Riccardo complimenti per le tue conoscenze leggo spesso i tuoi post. Ho fa farti una domanda. Sto sviluppando il mio sito in php jquery e bootstrap e ora sono difronte ad un problema che non riesco a risolvere. Ho una sezione download per scaricare dati miei personali e l intero progetto però vorrei che li scaricasse abbia fatto il login ( mysql ho sotto). Come faccio a sapere se uno si è loggato o no? Devo sfruttare le sessioni php?i Session Storage jquery? Se puoi aiutarmi te ne sono grato. Con stima
Christian Chiama