WordPress: query mysql per estrarre articoli da determinate categorie

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!

  1. 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

  2. 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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.