Come creare un template di pagina per visualizzare un custom post type?

3 feb 2012, 09:35:56
Visualizzazioni: 56.6K
Voti: 2

Vorrei creare un file template di pagina per visualizzare i post di un tipo di contenuto personalizzato. Stavo lavorando con questo codice trovato su questo sito, ma non visualizza nulla. Qualcuno sa qual è il problema?

<?php /* Template Name: Archivio Custom Post Type */
get_header(); ?>

<?php
global $query_string;
query_posts($query_string . "post_type=TUO-CUSTOM-POST-TYPE&post_status=publish&posts_per_page=10");
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<h2><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>

<?php endwhile;
endif; ?>
<div class="navigation">
    <div class="alignleft"><?php next_posts_link('Post precedenti') ?></div>
    <div class="alignright"><?php previous_posts_link('Post successivi') ?></div>
</div>
<?php wp_reset_query(); ?>

<?php get_sidebar(); ?>
<?php get_footer();?>
0
Tutte le risposte alla domanda 3
2

Non è necessario utilizzare una query, basta creare il tuo template e nominarlo single-NOME_TUO_POST_PERSONALIZZATO.php, per maggiori riferimenti dai un'occhiata a:

3 feb 2012 10:05:59
Commenti

Non sono sicuro di aver capito. Potresti spiegare un po' meglio la tua risposta?

Keith Groben Keith Groben
3 feb 2012 10:13:57

il template di pagina predefinito per un custom post type è single-NOME.php, quindi se il tuo custom post type si chiama "Sports", devi creare quel tema e salvarlo come single-sports.php, hai già il tuo tema creato, devi solo eliminare quella query alla riga 5 e lasciare il loop così com'è. Inoltre nota che i link next e prev non funzioneranno poiché quelle funzioni non lavorano con i CPT, però ci sono alcuni plugin in giro per quello, google è tuo amico.

andresmijares andresmijares
3 feb 2012 10:20:40
3

Se hai creato un nuovo Custom Post Type, per visualizzarlo sul sito devi utilizzare i seguenti file nella cartella del tuo tema:

  • archive-{CPT}.php
  • single-{CPT}.php (Opzionale se vuoi visualizzare un singolo post in modo diverso)

Sostituisci {CPT} con il nome del Custom Post Type che hai configurato. Poi in questi file puoi semplicemente usare un normale loop come nel tuo file index.php.

ESEMPIO:

<?php get_header(); ?>

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

        <?php /* Il contenuto dei tuoi Post */ ?>

    <?php endwhile; else: ?>
        <div class="post">
            <p><?php _e('Spiacenti, nessun post corrisponde ai criteri richiesti.', "hi-rezz"); ?></p>
        </div>
    <?php endif; ?>

<?php get_footer(); ?>
3 feb 2012 10:40:15
Commenti

Grazie per la spiegazione dettagliata. Per favore abbi pazienza con me, sono relativamente nuovo a questo tipo di modifiche in WordPress. Il mio CPT è "New Movies". Lo slug per questo è "new_movies". Il file dell'archivio è "archive-new_movies.php". Quindi devo inserire il codice del loop nel file dell'archivio?

Keith Groben Keith Groben
3 feb 2012 10:54:00

Sarebbe corretto

Scott Scott
3 feb 2012 11:04:40

Ho aggiunto il codice del loop e tutto ciò che vedo è un permalink alla pagina. Quindi, ho copiato la pagina di archivio predefinita e ho ancora ricevuto lo stesso risultato. Hai qualche idea sul perché questo possa accadere?

Keith Groben Keith Groben
3 feb 2012 11:43:31
1
-1
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <?php /* Contenuto dei tuoi articoli */ ?>

<?php endwhile; else: ?>
    <div class="post">
        <p><?php _e('Spiacenti, nessun articolo corrisponde ai criteri selezionati.', "hi-rezz"); ?></p>
    </div>
<?php endif; ?>
31 mag 2017 15:07:49
Commenti

Per favore [modifica] la tua risposta e aggiungi una spiegazione: perché questa soluzione potrebbe risolvere il problema?

fuxia fuxia
31 mag 2017 17:02:34