Le pagine dei Custom Post Type risultano "non trovate"
Ho creato due nuovi Custom Post Type utilizzando un codice che ho già usato con successo in altri progetti senza problemi. Il primo si chiama top_charts
, l'altro case_studies
, ed entrambi appaiono correttamente nel menu di amministrazione e posso creare nuovi post.
Purtroppo i nuovi post non vengono visualizzati. Ricevo solo una risposta 404.php
.
Ho creato un file archive-top_charts.php
per vedere se riesco a far apparire qualcosa, ma vedo una risposta "pagina non trovata" dal 404.php
.
Inizialmente avevo nominato i custom post top-charts
e case-studies
, ma ho pensato che il trattino potesse essere il problema, quindi li ho rinominati utilizzando il trattino basso. Non ha risolto il problema.
Ho provato a salvare nuovamente i Permalinks, ma non è cambiato nulla. Anche la mia pagina .htaccess sembra corretta (e le altre pagine funzionano correttamente). Cos'altro posso controllare?

Non devi modificare il tuo codice PHP!
Anche se puoi farlo nella funzione che registra il tuo custom post type, come suggeriscono altre risposte, puoi anche farlo direttamente dal menu delle impostazioni, evitando così di toccare il codice PHP:
Per ripulire le regole di riscrittura (rewrite rules) o i permalink di WordPress (operazione che solitamente va fatta manualmente per i nuovi custom post type) dal Pannello di Controllo:
- Nel menu principale vai su "Impostazioni > Permalink".
- Scorri in basso se necessario e clicca "Salva modifiche".
- Le regole di riscrittura e i permalink verranno aggiornati.
È davvero semplice!

Credo mi servisse anche has_archive
, ma è buono sapere che puoi forzare un flush tramite il menu.

Esiste un modo per salvare automaticamente le modifiche (aggiornare) i permalink invece di dover andare ogni volta in Impostazioni > Permalink quando viene aggiunta una categoria/termine per un CPT? Ad esempio, come potrà fare un utente non-admin se non ha accesso alle impostazioni? È possibile chiamare un hook quando si aggiunge una nuova categoria per eseguire automaticamente il flush dei permalink?

Per risolvere il problema dei post personalizzati non trovati, utilizza il seguente codice nel tuo file functions.php
:
flush_rewrite_rules( false );
Dovresti usare questo codice solo come misura temporanea, altrimenti verrà eseguito ad ogni caricamento di pagina.
Per maggiori dettagli, segui questo link
Per quanto riguarda il file archive-top_charts.php
che non appare, assicurati di avere 'has_archive' => true
quando registri il tuo tipo di post.

Mi rendo conto che è un po' tardi (e potrebbe non essere il problema correlato), ma volevo segnalare agli altri un possibile problema.
Nel mio caso, avevo impostato il rewrite della tassonomia su "tools" e il rewrite del tipo di contenuto sulla stessa cosa. Di conseguenza, non funzionava mai correttamente perché c'era un conflitto. Sfortunatamente, non c'è alcun rilevamento per questo tipo di situazione, quindi ho pensato di segnalarlo agli altri.

Nel mio caso mancavano i permessi nella cartella di sviluppo, quindi il file .htaccess non poteva essere creato e/o modificato.
Per questo motivo, il flush manuale o il salvataggio delle modifiche nei Permalink di WordPress non risolvevano il problema.
La soluzione è stata creare manualmente il file .htaccess da solo.
