Non riesco a ottenere i post dei tipi di post personalizzati

10 feb 2015, 16:41:38
Visualizzazioni: 2.49K
Voti: 1

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.

5
Commenti

Questa è parte di una pagina archivio per il custom post type?

Manny Fleurmond Manny Fleurmond
10 feb 2015 17:36:52

Voglio mostrare tutti i post del custom post type "songs". Dove vuoi visualizzare questi post?

Brad Dalton Brad Dalton
10 feb 2015 19:12:14

@PieterGoosen - Sì, ho accettato.

rahul bhatt rahul bhatt
11 feb 2015 15:34:11

@BradDalton - Ho creato un template personalizzato. Nel codice di quel template, ho chiamato header, footer e sopra il loop per ottenere i post di tipo personalizzato, ma nella pagina compaiono solo header e footer :(

rahul bhatt rahul bhatt
11 feb 2015 15:35:09

@MannyFleurmond - No...

rahul bhatt rahul bhatt
11 feb 2015 15:38:32
Tutte le risposte alla domanda 5
6

Ci sono due gravi errori nel tuo codice:

  • query_posts deve essere utilizzato prima del tuo loop, non al suo interno

  • Non 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()

11 feb 2015 16:01:06
Commenti

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()?

rahul bhatt rahul bhatt
11 feb 2015 16:14:38

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 :-)

Pieter Goosen Pieter Goosen
11 feb 2015 16:16:46

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

Pieter Goosen Pieter Goosen
11 feb 2015 16:17:46

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.

rahul bhatt rahul bhatt
12 feb 2015 10:44:08

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 :-)

Pieter Goosen Pieter Goosen
12 feb 2015 10:57:06

Okay...Fammi provare..:)

rahul bhatt rahul bhatt
12 feb 2015 14:12:47
Mostra i restanti 1 commenti
0

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.

11 feb 2015 17:32:37
0

Vai su Impostazioni > Permalink e clicca semplicemente sul pulsante "Salva modifiche". Ora aggiorna la pagina.

11 nov 2020 12:27:17
2
-1

O anche

query_posts( 'post_type=canzone');
10 feb 2015 22:37:42
Commenti

Potresti aggiungere maggiori spiegazioni sul perché questo funzionerebbe o perché questa è la risposta alla domanda?

Howdy_McGee Howdy_McGee
10 feb 2015 22:54:37

Intendevo solo provare 'post_type=song' invece di 'post_type=songs' Scusa per la confusione

Mike Mike
10 feb 2015 23:03:45
0
-2

Hai provato 'post_type'=> 'songs'?

Riferimento: Interrogare per Tipo di Post

10 feb 2015 17:13:26