Cum să afișezi taxonomii pentru un custom post type ca o pagină de arhivă

4 aug. 2017, 19:59:38
Vizualizări: 19.1K
Voturi: 3

Salut, am un custom post type numit results. Am creat și categorii pentru acest post type folosind o taxonomie. Nu sunt sigur dacă am configurat-o corect, dar codul pe care îl am funcționează, așa că rămân la el. Dacă vedeți o metodă mai bună sau orice eroare, vă rog să-mi spuneți.

Pot să creez un post personalizat și să-i setez o categorie. Următorul pas este să creez o pagină de categorii care să funcționeze precum archive.php, dar doar pentru categoriile custom post type-urilor.

De exemplu, dacă am un post personalizat pentru results și categoria setată la accidente auto, aș dori să le afișez pe toate exact cum face archive.php pentru postările normale.

Am încercat să accesez un URL de genul acesta, dar sunt redirecționat către o pagină 404, deși am un fișier archive-results.php

www.myurl.com/results/categories/car-accidents

Iată codul pe care l-am folosit pentru a configura custom post type-ul și taxonomia. Scuze dacă este lung, dar simt că este necesar să includ totul.

// Crează custom post type
function create_posttype() {
    register_post_type( 'Results',
        array(
            'labels' => array(
                'name' => __( 'Results' ),
                'singular_name' => __( 'Results' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'results'),
            'taxonomies'  => array( 'results', 'result-category' ),
        )
    );
}
add_action( 'init', 'create_posttype' );

// Crează categorie pentru post type-ul specific
function tr_create_my_taxonomy() {
    register_taxonomy(
        'results-categories',
        'results',
        array(
            'label' => __( 'Result Categories' ),
            'rewrite' => array( 'slug' => 'result-category' ),
            'hierarchical' => true,
            'has_archive' => true
        )
    );
}
add_action( 'init', 'tr_create_my_taxonomy' );

Am omis ceva care împiedică acest URL să funcționeze?

www.myurl.com/results/categories/car-accidents

Mulțumesc anticipat

2
Comentarii

ai setat-o la result-category unde ai înregistrat taxonomia, schimbă asta în results/categories

Milo Milo
4 aug. 2017 20:19:37

în prima sau a doua funcție?

cup_of cup_of
4 aug. 2017 20:32:36
Toate răspunsurile la întrebare 1
0

URL-urile dorite:

www.example.com/rezultate/nume-post/
www.example.com/rezultate/categorii/nume-categorie/

Două modificări față de codul original:

  1. S-a adăugat prioritate ambelor hook-uri add_action pentru a inversa ordinea în care sunt executate. Ordinea contează în acest caz, deoarece regulile de rescriere pentru atașamentele tipului de post suprascriu regulile de rescriere ale taxonomiilor. Efect secundar: URL-urile pentru atașamente nu funcționează pentru acest tip de post!

  2. Rescrierea pentru taxonomie a fost schimbată în rezultate/categorii.


// Crează tipul de post personalizat
function create_posttype() {
    register_post_type( 'rezultate',
        array(
            'labels' => array(
                'name' => __( 'Rezultate' ),
                'singular_name' => __( 'Rezultat' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'rezultate'),
            'taxonomies'  => array( 'rezultate', 'categorie-rezultat' ),
        )
    );
}
// ADAUGATĂ PRIORITATE
add_action( 'init', 'create_posttype', 9 );

// Crează categoria pentru tipul specific de post
function tr_create_my_taxonomy() {
    register_taxonomy(
        'categorii-rezultate',
        'rezultate',
        array(
            'label' => __( 'Categorii Rezultate' ),
            // SCHIMBAT SLUG
            'rewrite' => array( 'slug' => 'rezultate/categorii' ),
            'hierarchical' => true,
            'has_archive' => true
        )
    );
}
// ADAUGATĂ PRIORITATE
add_action( 'init', 'tr_create_my_taxonomy', 8 );

De asemenea, reține că cel mai specific șablon general pentru aceasta va fi taxonomy-categorii-rezultate.php, care va reveni la taxonomy.php, apoi la archive.php.

4 aug. 2017 21:58:24