Arhiva de taxonomie "tag" pentru tipul personalizat de postare: nicio postare găsită

28 iul. 2013, 03:35:54
Vizualizări: 8.06K
Voturi: 8

Am înregistrat un tip personalizat de postare "object" și am înregistrat taxonomia "post_tag" pentru a putea eticheta aceste obiecte.

register_taxonomy_for_object_type('post_tag', 'object');

Când accesez domain.com/tag/{object-slug} nu găsește nicio postare, deși acestea există.

Iată cum am declarat CPT-ul:

register_post_type( 'objet', 
        array('labels' => array(/* eliminat pentru claritate */),
            'description' => __( 'blabla' ), 
            'public' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'show_ui' => true,
            'query_var' => true,
            'menu_position' => 3, 
            'menu_icon' => get_stylesheet_directory_uri() . '/library/images/custom-post-icon.png', 
            'rewrite'   => array( 'slug' => 'stock', 'with_front' => false ), 
            'has_archive' => 'stock',
            'capability_type' => 'post',
            'taxonomies' => array('post_tag'),
            'hierarchical' => false,
            'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'sticky')
        ) 
    );
1
Comentarii

Se pare că lipsește o parte din cod pentru add_action pentru a începe tipul de postare în codul de mai sus. De asemenea, ai putea să postezi aici codul de înregistrare a taxonomiei și versiunea actualizată a tipului de postare împreună?

sulfureous sulfureous
28 iul. 2013 04:45:07
Toate răspunsurile la întrebare 1
2
23

Interogările arhivei pentru etichete și categorii, în mod implicit, caută doar tipul de postare post. Pentru a adăuga tipul tău personalizat de postare la aceste interogări, poți folosi acțiunea pre_get_posts:

function wpa_cpt_tags( $query ) {
    if ( $query->is_tag() && $query->is_main_query() ) {
        $query->set( 'post_type', array( 'post', 'object' ) );
    }
}
add_action( 'pre_get_posts', 'wpa_cpt_tags' );
28 iul. 2013 03:51:47
Comentarii

Mulțumesc. Și pentru a include categorii în aceeași funcție cum aveam nevoie, condiția ar trebui să fie: if( ($query->is_tag() || $query->is_category()) && $query->is_main_query() ){}

Jonny Perl Jonny Perl
6 oct. 2016 19:44:49

Pentru cei care citesc acest lucru, se pare că slug-urile din array-ul din codul oferit reprezintă fiecare tip de postare care va fi inclus în arhivă. Astfel, dacă doriți să includeți tipul vostru de postare în arhivă, trebuie doar să adăugați slug-ul în array.

Squagem Squagem
18 apr. 2017 22:07:39