Pagina indice per custom post type
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!
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

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?
- Crea una pagina template personalizzata.
- Aggiungi i commenti necessari per nominare la pagina template.
- Scrivi la wp_query personalizzata per recuperare i post specifici che vuoi
- Crea una pagina all'interno di WordPress.
- Impostala per utilizzare la pagina template che hai creato.
- 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.

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.

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(); } }`
