Sviluppando progetti su WordPress capita sempre più spesso di creare dei custom post type, cui purtroppo o per fortuna, nella fase di registrazione non vengono inseriti nella Main Query del CMS, quindi per visualizzarli nella Home Page o negli Archivi e necessario aggiungere alcune righe di codice PHP.
Fare ciò è comunque abbastanza semplice, basta manipolare la Main Query di WordPress utilizzando l’action hook pre_get_posts e ottenre così il risultato desiderato. Per realizzarla è quindi necessario impostare la query da eseguire inserendo i tipi di post che si vogliono visualizzare automaticamente.
Ad esempio se vogliamo visualizzare nella home page di WordPress, oltre ai classici post anche le pagine ed un custom post type di tipo gallery basterà verificare tramite is_home che la pagina visualizzata sia appunto l’home page e successivamente tramite $query->set impostare i post_type da selezionare.
Ecco un semplice esempio
// Mostriamo gli articoli (post), pagine (page) ed i custom post type gallery (gallery) nella home page
// Intercettiamo l'hook pre_get_posts per chiamare la nostra funzione add_page_and_gallery_to_query
add_action( 'pre_get_posts', 'add_page_and_gallery_to_query' );
// Controlliamo di essere sulla home e modifichiamo la query aggiungendo page e gallery
function add_page_and_gallery_to_query( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'page', 'movie' ) );
return $query;
}
Fatto ciò è tutto pronto, buon coding!