Benutzerdefinierte Kombination aus Posttyp und Taxonomie

Ist es möglich, eine Permalink / Template-Struktur wie folgt zu erstellen:

www.example.com/attractions <-- post type archive www.example.com/attractions/museums <-- taxonomy archive www.example.com/attractions/van-gogh-museum <-- custom post type 

Nachdem ich Tage versucht habe, kann ich nur eine der 2 Kombinationen zum Arbeiten bringen: entweder Post-Typ + Post-Typ-Archiv oder Taxonomie + Taxonomie-Archiv

Ich bin mir nicht sicher, was ich als nächstes tun soll: Überlege ich etwas, brauche ich ein Plugin, sollte ich das anders einrichten?

=== Bearbeiten ===

(nur laut nachdenken)

Im Moment benutze ich post-type und taxonomy rewrite Fähigkeiten, wie folgt:

 'rewrite' => array('slug'=>'attractions'), 

aber vielleicht sollte ich eine andere Route gehen und “Attraktionen” manuell als die übergeordnete Seite des benutzerdefinierten Post-Typs und des Taxonomie-Archivs festlegen.

=== / bearbeiten ===

Ich hoffe, jemand kann mich in die richtige Richtung weisen. Alle Vorschläge werden sehr geschätzt!

Solutions Collecting From Web of "Benutzerdefinierte Kombination aus Posttyp und Taxonomie"

 // Add the new post_type and taxonomy add_action('init', function(){ // Add a post_type named 'testype' register_post_type($postype = 'testype', $arguments = array( 'name' => $postype, 'label' => 'Test', 'public' => true, 'exclude_from_search' => true, 'capability_type' => 'post', 'supports' => array( 'title', 'excerpt', 'editor', 'custom-fields', 'comments', ), 'show_in_nav_menus' => false, 'hierarchical' => false, 'publicly_queryable' => true, 'rewrite' => array( 'with_front' => false, 'pages' => true, 'feeds' => true, 'slug' => 'test/read', // This is my custom work, not stock functionality // 'permastruct' => '%id%' ), 'query_var' => 'testing', 'has_archive' => true, 'show_ui' => true, 'can_export' => true, '_builtin' => false, )); register_taxonomy($postax = 'testax', $postype, array( 'label' => 'Tax', 'hierarchical' => false, 'rewrite' => array( 'with_front' => false, 'pages' => true, 'feeds' => true, 'slug' => 'test/browse', ), 'public' => true, 'show_ui' => true, 'query_var' => true, 'show_in_nav_menus' => true, 'show_tagcloud' => false, )); }); // Add the 'snippet' postype to the loop. add_action('pre_get_posts', function(\WP_Query $query){ if(!is_archive()) return; // Only for archives! // If suppress_filters is on, bail here :) (no idea what this really does) if(!empty($query->query_vars['suppress_filters'])) return; // Add a new post type to the loop if we are visiting the archive // of a taxonomy assigned to the post. if(!empty($query->query_vars['testax'])){ $post_types = $query->get('post_type'); if(empty($post_types)) $post_types = array('post'); elseif(is_string($post_types)) $post_types = array($post_types); // Add the new post_type now $query->set('post_type', array_merge($post_types, array('testype'))); } return; }); 

Prost! Dies ist voll funktionsfähig und kommentiert. Es hat PHP 5.3-Syntax wie ich 5.2 nicht mehr tun und ich bin auch irgendwie faul. Ich bin sicher, dass Sie mit der functionsextraktion umgehen können, wenn Sie immer noch 5.2 verwenden.

Lass mich wissen wie es geht und wenn du Fragen hast.

Sehen Sie, wenn diese Antwort hilft: Wie man eine Verbindung (href) hinzufügt, also, wenn ich es anklicke, stellt es (Pfosten) des kundenspezifischen Beitragstyps (rich_media), von der gegenwärtigen Kategorie dar?

Sie müssen den neuen post_type zu pre_get_posts hinzufügen , damit die Dinge in Term Archives (Categories, Tags) richtig funktionieren. Und stellen Sie sicher, dass Sie Archiv für Ihren benutzerdefinierten Beitragstyp aktivieren.