Kategorieseite zeigt nur die Beiträge eines benutzerdefinierten Typs an

Lage

Ich habe zwei cpt:

  1. Projekte
  2. functioniert

In diesen beiden CPT teile ich die gleiche Taxonomie “Kategorie” und die gleichen Begriffe:

  1. Die Architektur
  2. Landschaft
  3. Innenarchitektur

Ich habe URLs wie

projects/architecture works/architecture so on... 

Problem

Nun ist das Problem, dass die beiden obigen URLs den gleichen Inhalt zurückgeben, alle Archive des Begriffs Architektur, was auch immer die cpt.

Gibt es eine Möglichkeit, dass projects/architecture nur den gesamten Beitrag unter Projekte mit Termarchitektur zurückgeben ?

Hinweis

Ich verwende benutzerdefinierte Post-Typ-Permalinks , um Permalink zu verwenden, das wie /cpt/term/post_title

Bearbeiten

Hier ist meine Kategorievorlage (category.php)

    

post_type), 'boilerplate' ); ?>

Hier ist meine Kategorie-Schleife (loop-category.php)

   'attachment', 'post_parent' => $post->ID, 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 1 ) ); ?> ID, 'full');?> 
  • <a href="https://wordpress.stackexchange.com/questions/91558/category-page-only-displaying-the-posts-from-a-custom-type/" title="" class='th'> <img src='https://wordpress.stackexchange.com/questions/91558/category-page-only-displaying-the-posts-from-a-custom-type/'> ID, 'category'); ?>
    name; ?>

  • Solutions Collecting From Web of "Kategorieseite zeigt nur die Beiträge eines benutzerdefinierten Typs an"

    Ok, ich habe eine Lösung gefunden, indem ich die Empfehlung von s_ha_dum zur Verwendung von pre_gets_posts befolgt habe.

    Der gesamte folgende Code geht an functions.php

    1 Erstellen Sie eine neue Rewrite-Regel

     function rewrite_clean() { // my CPTs $types = array('projects', 'works'); foreach($types as $type) { add_rewrite_rule('^'.$type.'/([^/]*)/?$', 'index.php?post_type='.$type.'&term=$matches[1]','top'); } } add_action('init', 'rewrite_clean'); 

    wandle das folgende Format um

    ? post_type = projekte & term = architektur

    in das folgende Format

    Projekte / Architektur

    2 Überschreiben Sie die Post-Abfrage

     // check the vars in url and if there is term then only display from this term function add_cat_cpt_filter($query) { if($query->is_archive() && get_query_var( 'term' ) && get_query_var( 'post_type' )) { // get the id of the category by using the slug $id = get_category_by_slug(get_query_var( 'term' ))->term_id; if($id){ // add a filter to the query $query->set('cat', $id); } else{ // redirect if the term doesn't exist wp_redirect( '/'.get_query_var( 'post_type' )); exit; } return; } } add_action( 'pre_get_posts', 'add_cat_cpt_filter' ); 

    Der obige Code filtert die aktuelle Archivseite mit dem in der URL verwendeten Begriff.

    Erwischt

    Dann bekam ich ein Problem aufgrund des Custom Post Type Permalinks Plugins, es zeigte weiterhin eine Kategorievorlage, während ich meine CPT- Custom Post Type Permalinks beibehalten und nur einen Filter hinzufügen wollte.

    Die Lösung ist einfach, das Plugin zu deaktivieren und wieder zu aktivieren, es hat den Trick für mich getan.