Riscrittura URL per Custom Post Type?

25 mag 2012, 18:47:09
Visualizzazioni: 169K
Voti: 42

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!

0
Tutte le risposte alla domanda 2
6
66

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.

25 mag 2012 19:29:28
Commenti

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

Jake Jake
25 mag 2012 21:06:28

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)

0x61696f 0x61696f
25 mag 2012 21:09:10

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.

Desi Desi
25 gen 2015 15:36:43

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 :)

Alexander Taubenkorb Alexander Taubenkorb
28 feb 2019 14:09:17

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

Tan-007 Tan-007
14 nov 2019 19:03:27

@0x61696f, ho già una pagina chiamata projects. Posso usare lo stesso nome per lo slug del custom post-type tipo projects?

Naren Verma Naren Verma
26 gen 2022 13:12:16
Mostra i restanti 1 commenti
3
18

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! :)

25 mag 2012 19:18:54
Commenti

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.

chrisguitarguy chrisguitarguy
25 mag 2012 19:56:52

Giusto, lavorerò a una revisione adeguata.

cmegown cmegown
25 mag 2012 20:16:37

Ecco, ora la mia risposta contiene un codice simile a quello funzionante che ho in un ambiente di produzione e che riscrive con successo l'URL di un custom post type. Spero si riveli più utile!

cmegown cmegown
25 mag 2012 20:33:47