Rescriere URL pentru tipuri de postări personalizate?

25 mai 2012, 18:47:09
Vizualizări: 169K
Voturi: 42

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!

0
Toate răspunsurile la întrebare 2
6
66

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.

25 mai 2012 19:29:28
Comentarii

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?

Jake Jake
25 mai 2012 21:06:28

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)

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

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.

Desi Desi
25 ian. 2015 15:36:43

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

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

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

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

@0x61696f, am deja o pagină numită proiecte. Deci pot folosi același nume pentru slug-ul tip post personalizat, cum ar fi proiecte?

Naren Verma Naren Verma
26 ian. 2022 13:12:16
Arată celelalte 1 comentarii
3
18

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

25 mai 2012 19:18:54
Comentarii

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.

chrisguitarguy chrisguitarguy
25 mai 2012 19:56:52

Corect, voi lucra la o revizuire adecvată.

cmegown cmegown
25 mai 2012 20:16:37

Acum răspunsul meu conține cod similar cu un cod funcțional pe care îl am într-un mediu de producție și care rescrie cu succes URL-ul unui tip personalizat de postare. Sper să se dovedească mai util!

cmegown cmegown
25 mai 2012 20:33:47