Pagina de arhivă pentru tipul de postare personalizat nu funcționează

4 iul. 2016, 12:06:56
Vizualizări: 33.1K
Voturi: 1

Încerc să creez un tip de postare personalizat. Totul funcționează bine, cu excepția paginii de arhivă. Pagina mea de arhivă pentru tipul de postare personalizat este archive-courses.php, dar nu funcționează și afișează archive.php implicit. Este ceva greșit în codul meu?

Mă poate ajuta cineva, vă rog?

function td_courses() {
    $labels = array(
        'name'               => _x( 'Cursuri', 'td' ),
        'singular_name'      => _x( 'Cursuri', 'td' ),
        'add_new'            => _x( 'Adaugă Nou', 'td' ),
        'add_new_item'       => __( 'Adaugă curs nou' ),
        'edit_item'          => __( 'Editează curs' ),
        'new_item'           => __( 'Cursuri noi' ),
        'all_items'          => __( 'Cursuri' ),
        'view_item'          => __( 'Vezi cursuri' ),
        'search_items'       => __( 'Caută cursuri' ),
        'not_found'          => __( 'Nu s-au găsit cursuri' ),
        'not_found_in_trash' => __( 'Nu s-au găsit cursuri în Coșul de gunoi' ),
        'menu_name'          => 'Cursuri'
    );
    $args = array(
        'labels'            => $labels,
        'public'            => true,
        'menu_position'     => 10,
        'menu_icon'         => 'dashicons-welcome-learn-more',
        'supports'          => array( 'title', 'editor', 'thumbnail', 'author' ),
        'has_archive'       => true,
        'capability_type'   => 'page',
        'rewrite'           => array( 'slug' => 'curs' ),
    );
    register_post_type( 'courses', $args );

}
add_action( 'init', 'td_courses' );

function td_courses_taxonomies() {
    $labels = array(
        'name'              => _x( 'Categorii Cursuri', 'td' ),
        'singular_name'     => _x( 'Categorii Cursuri', 'td' ),
        'search_items'      => __( 'Caută Categorie Curs' ),
        'all_items'         => __( 'Toate Categoriile de Cursuri' ),
        'parent_item'       => __( 'Categorie Curs Părinte' ),
        'parent_item_colon' => __( 'Categorie Curs Părinte:' ),
        'edit_item'         => __( 'Editează Categorie Curs' ),
        'update_item'       => __( 'Actualizează Categorie Curs' ),
        'add_new_item'      => __( 'Adaugă Categorie Curs Nouă' ),
        'new_item_name'     => __( 'Nume Nou Categorie Curs' ),
        'menu_name'         => __( 'Categorie Curs' ),
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'lista-cursuri' ),
    );

    register_taxonomy( 'courses_category', array( 'courses' ), $args );

}
add_action( 'init', 'td_courses_taxonomies', 0 );

Mulțumesc

5
Comentarii

Ai reîmprospătat legăturile permanente (permalinks)?

Pieter Goosen Pieter Goosen
4 iul. 2016 12:25:59

Nu, nu am făcut nimic cu legăturile permanente.

Khandaker Ikrama Khandaker Ikrama
4 iul. 2016 12:36:24

Trebuie să reîmprospătezi legăturile permanente atunci când creezi o nouă taxonomie sau tip de postare personalizat. Pur și simplu vizitează pagina de legături permanente și dă click pe salvare/actualizare.

Pieter Goosen Pieter Goosen
4 iul. 2016 12:39:53

Ok. Am terminat. Dar problema încă persistă. :(

Khandaker Ikrama Khandaker Ikrama
4 iul. 2016 12:43:31

Am observat că am omis acest lucru, nu poți avea aceeași regulă de rescriere pentru tipul tău de postare și taxonomie

Pieter Goosen Pieter Goosen
4 iul. 2016 12:50:18
Toate răspunsurile la întrebare 2
9

Tipul tău de post, courses, are un slug de rescriere course. Deci șablonul tău de arhivă va fi archive-course.php.

Taxonomia ta, courses_category, are un slug de rescriere course, deci șablonul tău de arhivă pentru taxonomie va fi taxonomy-courses.php.

Această ierarhie completă de șabloane poate fi utilă.

Dacă dorești o pagină de arhivă care afișează toate postările de tipul courses la yoursite.com/courses, ar trebui să atribui tipului de post un slug de rescriere courses. (Cred că aceasta este valoarea implicită, deoarece tipul tău de post este courses.)

Șablonul de arhivă pentru taxonomie, taxonomy-[slug].php, va fi invocat atunci când vizualizezi o pagină de arhivă cu toate postările de tipul courses asignate unui anumit termen din taxonomie. Deci, dacă ai un termen beginner și slug-ul de rescriere courses pentru termenul din taxonomie, vei vedea o arhivă cu cursuri pentru începători la yoursite.com/courses/beginner.

Dacă atribui același slug de rescriere atât tipului de post cât și taxonomiei, s-ar putea să ai unele conflicte. Dar nu sunt sigur.

După cum a spus Pieter Goosen, va trebui să resetezi regulile de rescriere de fiecare dată când faci astfel de modificări.

4 iul. 2016 12:45:28
Comentarii

De fapt nici măcar nu am verificat rewrite slugs când am parcurs codul. Cel mai probabil, problema este rewrite slug. Puteți avea același slug pentru post type și taxonomie, dar ar necesita destul de multă muncă suplimentară. Îmi amintesc că am răspuns la o astfel de întrebare acum ceva timp, unde am folosit un plugin pentru a rezolva problema cu regulile de rewrite. Pe scurt, ar trebui să evitați cu adevărat să aveți aceleași rewrite slugs.

Pieter Goosen Pieter Goosen
4 iul. 2016 12:53:34

Ciudat, am schimbat numele template-ului de arhivă în archive-course.php dar încă am aceeași problemă. De asemenea, am schimbat rewrite slug-ul taxonomiilor în courses-list, dar fără succes :(

Khandaker Ikrama Khandaker Ikrama
4 iul. 2016 13:07:33

actualizează întrebarea ta cu ce ai acum, este greu de știut dacă trebuie să folosești course sau courses?

majick majick
4 iul. 2016 13:15:05

Doar actualizează codul. Te rog verifică acum.

Khandaker Ikrama Khandaker Ikrama
4 iul. 2016 13:28:14

Ai resetat din nou regulile de rescriere? Lucruri pe care le-aș recomanda să încerci: configurează archive-course.php și archive-courses.php și apoi încearcă să elimini regulile tale de rescriere pentru a vedea unde ajungi. Asigură-te că te uiți la pagina corectă (<body> tag-ul tău ar trebui să aibă o clasă post-type-archive-courses -- dacă tema folosește body_class() corect).

NateWr NateWr
4 iul. 2016 13:41:42

Da. Am salvat din nou permalinkul și am clasa body în template-ul meu care afișează lista de clase archive tax-courses_category term-test-1 term-6 logged-in admin-bar hfeed customize-support

De asemenea, am creat ambele pagini de arhivă archive-courses-list.php, archive-courses.php și archive-course.php dar niciuna nu funcționează

Khandaker Ikrama Khandaker Ikrama
4 iul. 2016 13:49:24

Numele de clase pe care le descrii sunt adăugate unei arhive de taxonomie care va încărca fișierul șablon taxonomy-<slug>.php. Dacă nu vezi clasa post-type-archive-courses în tag-ul body, nu te afli pe pagina de arhivă a tipului de postare.

NateWr NateWr
4 iul. 2016 13:53:32

Da. În sfârșit, afișează pagina mea. taxonomy-courses_category.php acesta funcționează.

Dar totuși, sunt confuz, de ce arhiva mea archive-courses.php nu funcționează. Am folosit acest sistem pentru a afișa categoria mea data trecută. Dar de data aceasta nu am avut noroc :(

Khandaker Ikrama Khandaker Ikrama
4 iul. 2016 13:58:50

Conform codului pe care l-ai postat, șablonul archive-courses.php ar trebui să fie afișat când vizitezi yoursite.com/course. Dacă nu se întâmplă asta, probabil nu ai reușit să resetezi corect regulile de rescriere sau ai alte reguli care interferează cu regulile de arhivă ale CPT-ului tău.

NateWr NateWr
4 iul. 2016 15:00:24
Arată celelalte 4 comentarii
3

După cum a menționat Pieter Goosen, este necesar să reîncarci structurile de legături permanente atunci când creezi o nouă taxonomie sau tip de postare personalizat. Accesează setările site-ului tău -> legături permanente și dă clic pe "butonul de salvare".

Această soluție a funcționat pentru mine.

17 dec. 2018 18:27:41
Comentarii

Ar putea fi util să incluzi un exemplu despre cum ai făcut asta.

butlerblog butlerblog
17 dec. 2018 19:51:16

Aceasta a rezolvat problema mea

Walid Ammar Walid Ammar
22 sept. 2019 18:14:04

aceasta este modalitatea corectă de a actualiza URL-ul de rutare existent

Ranjan Fadia Ranjan Fadia
14 dec. 2021 13:04:21