Riscrittura URL tipo post personalizzato?


32

Ho impostato un tipo di post personalizzato per i miei progetti di portfolio. L'URL principale per questo si trova in/projects/

Ora ho anche impostato i miei post sul blog per permalink /articles/*/per la struttura del permalink. Ciò significa che quando vado a visualizzare un progetto di portfolio, l'URL cambia in/articles/projects/project-name/

So che deve esserci un modo per riscrivere i permalink solo per il tipo di post personalizzato dei miei progetti. Ma non ho familiarità con la sintassi nel dichiarare la lumaca URL - apprezzerei tutto l'aiuto che posso ottenere!

Risposte:


42

Quando registri il tipo di post personalizzato, devi specificare che la regola di riscrittura non deve essere anteposta con la struttura URL esistente.

In breve, ciò significa che questa linea nella register_post_typechiamata:

'rewrite' => array('slug' => 'projects'),

dovrebbe trasformarsi in questo:

'rewrite' => array('slug' => 'projects','with_front' => false),

Per ulteriori informazioni, consulta l' rewriteargomento dalla voce del codice inregister_post_type

modifica: assicurati solo che, dopo aver aggiornato il codice, svuoti le regole di riscrittura visitando Impostazioni> Permalink. Altrimenti vedrai comunque i vecchi link.


geniale grazie! Solo per chiarire, tutto quello che devo fare per scaricare le regole è andare alla pagina Impostazioni-> Permalink e premere "Salva modifiche", giusto?
Jake,

4
Non è nemmeno necessario salvare le modifiche. Basta aprire la pagina delle impostazioni di Permalink (ovvero, se il tuo file .htaccess è scrivibile. In caso contrario, premi Salva modifiche e copia manualmente il codice restituito nel tuo .htaccess)
0x61696f

2
Questo non sembra funzionare per me. I post dei miei progetti continueranno a example.com/projects/title-of-post. Ho visitato anche la pagina Permalink. Che cosa potrebbe causare questo? Non ci sono regole di riscrittura nel mio htaccess.
Desi

Caspita, grazie era la parte mancante! Visitare la pagina dei permalink non ha funzionato, ma SALVARE le impostazioni correnti del permalink ha funzionato :)
Alexander Taubenkorb,

Ho continuato a cambiare le cose senza svuotare le regole di riscrittura. Grazie per il consiglio!
Tan-007,

15

Ho avuto questo problema letteralmente 3 giorni fa, poi mi sono imbattuto in una serie su wp.tutsplus.com . Ho scambiato il mio codice per soddisfare meglio la tua domanda, ma questo è quello che ho finito dopo aver seguito la serie. Inoltre, tieni presente che questo non è testato.

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','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'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

Teoricamente, potresti scambiare quello che vuoi nell'URL memorizzato nella $projects_structurevariabile, cosa c'è che è esattamente quello che ho finito per usare.

Buona fortuna e, come sempre, assicurati di tornare e facci sapere come ha funzionato! :)


1
Le risposte che sono appena composte da collegamenti sono generalmente considerate inutili poiché tali risorse possono (e probabilmente lo faranno) cessare di esistere in futuro. Riassumi il contenuto.
chrisguitarguy,

Abbastanza giusto, lavorerò su una corretta revisione.
cmegown

11
Lì, ora la mia risposta contiene un codice simile al codice funzionante che ho in un ambiente di produzione che riscrive correttamente un URL di tipo di post personalizzato. Spero che si riveli più utile!
cmegown
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.