Riscrittura URL per Custom Post Type?
Ho configurato un custom post type per i miei progetti portfolio. L'URL principale per questo si trova in /projects/
Ora ho anche impostato il permalink dei post del blog su /articles/*/
come struttura dei permalink. Questo significa che quando vado a visualizzare un progetto del portfolio, l'URL cambia in /articles/projects/project-name/
So che deve esserci un modo per riscrivere i permalink solo per il mio custom post type dei progetti. Ma non ho familiarità con la sintassi per dichiarare lo slug dell'URL - apprezzerei qualsiasi aiuto possibile!
Quando registri un custom post type, devi specificare che la regola di riscrittura (rewrite rule) non deve essere preceduta dalla struttura URL esistente.
In breve, significa che questa riga nella tua chiamata register_post_type
:
'rewrite' => array('slug' => 'projects'),
dovrebbe diventare:
'rewrite' => array('slug' => 'projects','with_front' => false),
Per maggiori informazioni, consulta l'argomento rewrite
nella voce del codex su register_post_type
Nota: assicurati che, dopo aver aggiornato il codice, tu svuoti le regole di riscrittura visitando Impostazioni > Permalink. Altrimenti continuerai a vedere i vecchi link.

fantastico grazie! Solo per chiarire, per ripulire le regole devo semplicemente andare su Impostazioni->Permalink e cliccare "Salva modifiche", corretto?

Non devi nemmeno salvare le modifiche. È sufficiente aprire la pagina delle impostazioni Permalink (cioè se il tuo file .htaccess è scrivibile. Se non lo è, premi salva modifiche e copia manualmente il codice che restituisce nel tuo .htaccess)

Questo non sembra funzionare per me. I miei post di progetti vanno ancora su example.com/projects/title-of-post
. Ho visitato anche la pagina Permalink. Cosa potrebbe causare questo? Non ci sono regole di riscrittura nel mio htaccess
.

Wow, grazie! Era proprio la parte mancante! Visitare la pagina dei permalink non ha funzionato, ma semplicemente SALVARE le impostazioni attuali dei permalink ha risolto :)

Continuavo a modificare le cose senza resettare le regole di riscrittura. Grazie per il consiglio!

Ho avuto questo problema letteralmente 3 giorni fa, poi mi sono imbattuto in una serie su wp.tutsplus.com. Ho sostituito il mio codice per adattarlo meglio alla tua domanda, ma questo è ciò che ho ottenuto dopo aver seguito la serie. Tieni presente che questo codice non è stato testato.
// imposta un custom post type
function my_custom_post_type() {
register_post_type('Projects', array(
'label' => 'Progetti', 'description' => '',
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'capability_type' => 'post',
'hierarchical' => false,
'publicly_queryable' => true,
'rewrite' => false,
'query_var' => true,
'has_archive' => true,
'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
'taxonomies' => array('category','post_tag'),
// ci sono molti più argomenti disponibili, ma quelli sopra sono sufficienti per ora
));
}
add_action('init', 'my_custom_post_type');
// riscrive il nome del custom post type
global $wp_rewrite;
$projects_structure = '/progetti/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);
Teoricamente, potresti sostituire qualsiasi cosa nell'URL memorizzato nella variabile $projects_structure
, quello che c'è è semplicemente ciò che ho finito per usare.
Buona fortuna, e come sempre - assicurati di tornare e farci sapere come è andata! :)

Le risposte composte solo da link sono generalmente considerate poco utili poiché queste risorse potrebbero (e probabilmente lo faranno) cessare di esistere in futuro. Riassumi il contenuto.
