Rescriere URL pentru tipuri de postări personalizate?
Am configurat un tip de postare personalizat (custom post type) pentru proiectele din portofoliul meu. URL-ul principal pentru acesta este localizat la /projects/
Acum am configurat și structura permalink-urilor pentru articolele de blog la /articles/*/
. Acest lucru înseamnă că atunci când vizualizez un proiect din portofoliu, URL-ul se modifică în /articles/projects/project-name/
Știu că trebuie să existe o modalitate de a rescrie permalink-urile doar pentru tipul meu de postare personalizat pentru proiecte. Dar nu sunt familiarizat cu sintaxa pentru declararea slug-ului URL - aș aprecia orice ajutor pe care îl pot primi!
Când înregistrezi un tip de postare personalizată, trebuie să specifici că regula de rescriere (rewrite) nu ar trebui să fie prefixată cu structura URL existentă.
Pe scurt, aceasta înseamnă că această linie din apelul tău register_post_type
:
'rewrite' => array('slug' => 'projects'),
ar trebui să devină astfel:
'rewrite' => array('slug' => 'projects','with_front' => false),
Pentru mai multe informații, consultă argumentul rewrite
din intrarea codex despre register_post_type
edit: asigură-te că, după actualizarea codului, resetezi regulile de rescrie vizitând Setări > Legături permanente. Altfel, vei vedea în continuare vechile legături.

genial, mulțumesc! Doar pentru a clarifica, tot ce trebuie să fac pentru a reîmprospăta regulile este să merg la Setări->Legături permanente și să apăs "Salvează modificările", corect?

Nici măcar nu trebuie să salvezi modificările. Este suficient doar să deschizi pagina de setări Legături permanente (adică dacă fișierul tău .htaccess are permisiuni de scriere. Dacă nu, apasă salvează modificările și copiază manual codul pe care îl returnează în fișierul tău .htaccess)

Asta nu pare să funcționeze pentru mine. Postările mele de proiecte încă merg către example.com/projects/titlul-postului
. Am vizitat și pagina Legături permanente. Ce ar putea cauza asta? Nu există nicio regulă de rescriere în fișierul meu htaccess
.

Wow, mulțumesc, asta era partea lipsă! Vizitarea paginii de permalinkuri nu a funcționat, dar simpla SALVARE a setărilor curente de permalinkuri a funcționat :)

Am continuat să modific lucruri fără a reseta regulile de rescriere. Mulțumesc pentru pont!

Am avut această problemă acum 3 zile, apoi am dat peste o serie de tutoriale pe wp.tutsplus.com. Am modificat propriul meu cod pentru a se potrivi mai bine cu întrebarea ta, dar acesta este rezultatul final după ce am urmărit seria. De asemenea, reține că acest cod nu a fost testat.
// definește un tip personalizat de postare
function my_custom_post_type() {
register_post_type('Projects', array(
'label' => 'Proiecte','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'),
// există multe alte argumente disponibile, dar cele de mai sus sunt suficiente pentru moment
));
}
add_action('init', 'my_custom_post_type');
// rescrie numele tipului personalizat de postare
global $wp_rewrite;
$projects_structure = '/proiecte/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);
Teoretic, poți schimba orice dorești în URL-ul stocat în variabila $projects_structure
, ceea ce este acolo este doar ceea ce am folosit eu.
Mult succes și, ca întotdeauna, asigură-te să revii și să ne spui cum a funcționat! :)

Răspunsurile care constau doar din linkuri sunt în general considerate nefolositoare, deoarece aceste resurse pot (și probabil vor) dispărea în viitor. Rezumă conținutul.
