Non riesco a ottenere i post dei tipi di post personalizzati
Ho creato un template personalizzato e sto cercando di ottenere i post del tipo personalizzato "song", ma nella pagina vengono visualizzati solo l'header e il footer. Il contenuto dei post non appare. Anche se provo a chiamare i post generici, non ottengo comunque alcun contenuto. Devo registrare questo template da qualche parte nel tema? O devo chiamare qualcos'altro qui?
Il mio codice:
<?php
/* Nome del Template: Pagina Song
*
* Selezionabile dal menu a tendina nella schermata di modifica della pagina.
*/
get_header(); ?>
<div>
<?php
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
query_posts( 'post_type=song');
} // fine while
} // fine if
?></div>
<?php get_footer(); ?>
Per favore aiutami a correggere il mio codice. Voglio visualizzare tutti i post del tipo personalizzato "song". Ho già creato il tipo di post personalizzato.
Sto inserendo il codice sopra nell'editor di WordPress, ho installato un plugin chiamato "PHP execution" che esegue il codice PHP.

Ci sono due gravi errori nel tuo codice:
query_posts
deve essere utilizzato prima del tuo loop, non al suo internoNon usare mai
query_posts
a meno che tu non debba modificare qualcosa nella tua pagina
Per capire perché non usare query_posts
, quando usare una query personalizzata e come utilizzarla, dai un'occhiata a questo articolo che ho scritto tempo fa
Quindi, per correggere il tuo codice nel template, utilizzeremo WP_Query
e non query_posts
, e faremo la query prima del loop
Prova qualcosa del genere:
<?php
/* Template Name: Pagina Canzoni
*
* Selezionabile dal menu a tendina nella schermata di modifica della pagina.
*/
?>
<?php get_header(); ?>
<div>
<?php
$args = array(
'post_type' => 'song'
);
$q = new WP_Query($args);
if ( $q->have_posts() ) {
while ( $q->have_posts() ) {
$q->the_post();
//Aggiungi i tuoi tag template come sotto
the_title();
} // fine while
wp_reset_postdata();
} // fine if
?>
</div>
Inoltre, non dimenticare mai di resettare le query personalizzate se hai utilizzato il loop o setup_postdata($post)
con wp_reset_postdata()

Grazie mille per la risposta. Utilizzando il codice sopra ottengo solo il nome del post, ma ho bisogno di visualizzare il titolo del post con l'anteprima e un po' di contenuto. Quindi, dovrei chiamare the_content()
?

Sì, dovresti aggiungere tutto ciò di cui hai bisogno, questo è solo l'essenziale. Per il contenuto, dovrai aggiungere the_content();
. Dovrai comunque aggiungere anche tutto il tuo markup HTML. Questa sezione è una preferenza personale, qualcosa con cui non posso aiutarti :-)

Per una struttura template di base, dai un'occhiata ai temi inclusi come twentyfifteen. Dovrebbe darti un buon punto di partenza

Come posso richiamare lo stile CSS predefinito dei post per questo post personalizzato? Voglio solo che il mio post personalizzato venga visualizzato correttamente come un post normale in termini di stile/CSS.

Basta copiare il tuo loop tra la parte while dal tuo index.php e aggiungerlo nel loop qui. Come ho detto, questa è una sezione di preferenze personali che dovrai sistemare da solo purtroppo. Non posso mai conoscere gli stili del tuo tema. Ecco perché questa sezione è off topic qui :-)

Non è necessario creare alcun template se vuoi semplicemente elencare tutte le pagine in un archivio per il tuo custom post type:
Basta andare su http://example.com/songs e WordPress mostrerà tutte le pagine del tuo CPT in un archivio standard secondo la Template Hierarchy. Sostituisci example.com con il tuo dominio.
Potresti dover risalvare i tuoi Permalinks per aggiornare le regole di rewrite e includere i seguenti parametri nella tua funzione register_post_type:
'has_archive' => true,
'rewrite' => array( 'slug' => 'songs', 'with_front' => false ),
Se vuoi creare una pagina personalizzata per l'archivio del tuo CPT, crea un nuovo file e chiamalo archive-song.php nella directory principale del tuo tema.

Hai provato 'post_type'=> 'songs'
?
Riferimento: Interrogare per Tipo di Post
