Pagina indice per custom post type

19 dic 2013, 18:26:49
Visualizzazioni: 15.3K
Voti: 2

Ho registrato un custom post type e voglio creare una pagina dove elencherò alcuni post, sarà come una pagina indice.

Ho creato una pagina di archivio chiamata mycpt-archive.php e una pagina chiamata myCPT.php.

Ho aggiunto un URL personalizzato nel menu chiamato "myCPT" in questo modo: www.mywebsite.com/mycpt Ora, quando clicco dal menu front-end su "myCPT" mostra il contenuto di mycpt-archive.php e non myCPT.php.

Ho consultato la gerarchia dei template dal CODEX e sembra che io sia sulla strada giusta.

Quando clicco su "myCPT" dal menu front-end, la pagina visualizzata è mycpt-archive.php e non myCPT.php che invece mi aspetto si apra.

Cosa mi manca? Grazie!

3
Commenti

Non è chiaro perché stai creando due template per quello che sembra essere un unico compito? Inoltre, secondo la gerarchia, il nome del template dovrebbe essere nel formato archive-$posttype.php, quindi non sono sicuro di come la tua variante invertita venga caricata.

Rarst Rarst
19 dic 2013 18:29:17

Ho bisogno di due pagine, una per elencare alcuni post del custom post type che dovrebbe essere quella predefinita, e un'altra per elencare un archivio di tutti i post all'interno di quel custom post type che sarà archive-myCPT.php.

agis agis
19 dic 2013 19:48:55

L'idea è avere un page template che verrà utilizzato per visualizzare alcuni post all'interno del custom post type ma che non verrà mostrato nell'archive-myCPT.php o non viene visualizzato per impostazione predefinita se è un template?

agis agis
19 dic 2013 20:13:44
Tutte le risposte alla domanda 2
1

Se hai:

register_post_type( 'my_custom_post_type', $args );

E hai bisogno di una pagina personalizzata per visualizzare tutte le voci di questo tipo di post personalizzato, devi creare: archive-my_custom_post_type.php. Ma se non hai bisogno di una pagina personalizzata, WordPress utilizzerà archive.php per visualizzare l'archivio del tuo tipo di post personalizzato.

Se invece hai solo bisogno di personalizzare la pagina del singolo articolo, devi creare: single-my_custom_post_type.php

Dove stai creando il tipo di post personalizzato, nel file functions.php del tema o utilizzando un plugin?

Se stai utilizzando functions.php, devi creare archive-my_custom_post_type.php o single-my_custom_post_type.php nella cartella del tema.

Se stai utilizzando un plugin, devi creare archive-my_custom_post_type.php o single-my_custom_post_type.php nella cartella del plugin e indicare a WordPress di leggerlo, quindi includi questa funzione nel tuo plugin:

function get_custom_post_type_template($template) {
    global $post;

    if ($post->post_type == 'my_custom_post_type') {
        $template = dirname( __FILE__ ) . '/archive-my_custom_post_type.php';
    }
    return $template;
}

//add_filter( "single_template", "get_custom_post_type_template" ); //per la pagina singola
add_filter( "archive_template", "get_custom_post_type_template" ); //per l'archivio
19 dic 2013 19:06:15
Commenti

Non sto usando un plugin, voglio solo creare un template di pagina dove posso mostrare alcuni post dal mio CPT e un altro chiamato "archive-myCPT.php" per visualizzare gli archivi.

agis agis
19 dic 2013 20:23:05
2

Sembra quasi che tu debba creare una pagina template personalizzata con il nome che preferisci e inserire il codice della query personalizzata che desideri in quella specifica pagina template. Una volta creata la pagina template, crea una pagina effettiva in WordPress e impostala per utilizzare quel template personalizzato. Ha senso?

  1. Crea una pagina template personalizzata.
  2. Aggiungi i commenti necessari per nominare la pagina template.
  3. Scrivi la wp_query personalizzata per recuperare i post specifici che vuoi
  4. Crea una pagina all'interno di WordPress.
  5. Impostala per utilizzare la pagina template che hai creato.
  6. Premi pubblica

Una volta terminato, probabilmente vorrai modificare la pagina template per perfezionare e affinare la tua query.

Fammi sapere se sono sulla strada giusta per le tue esigenze.

19 dic 2013 21:44:42
Commenti

Ho creato un file template, ma non riesco ad assegnarlo dalla dashboard, funziona solo per le pagine normali ma non per le pagine dei custom post type.

agis agis
20 dic 2013 15:13:22

Scusa per il ritardo nella risposta. Dovrai creare una custom wp_query() all'interno del template con il suo loop personale. Potresti fare qualcosa come:

`$postTypeQuery = new wp_query( array('post_type'=> 'postTypeSlug'));

if($postTypeQuery->have_posts()){ while($postTypeQuery->have_post(){ $postTypeQuery->the_post(); echo get_the_title(); echo get_the_id(); echo get_the_content(); } }`

MiracleGotMojo MiracleGotMojo
14 gen 2014 01:29:09