Erstellen Sie eine Archivseite für benutzerdefinierten Posttyp mit benutzerdefinierter Taxonomie

Ich habe einen benutzerdefinierten Nachrichtentyp namens “Nachrichten” mit einer benutzerdefinierten Taxonomie namens “Nachrichtenkategorie”. Ich möchte eine wp-Abfrage erstellen, um alle “Nachrichten” -Beiträge einer bestimmten “Nachrichtenkategorie” zurückzugeben, zum Beispiel “drücken”. Gibt es eine Möglichkeit, dies zu schreiben, die universell ist, so dass ich nicht für jede “Nachrichtenkategorie” einen erstellen muss?

Ich denke, es ist etwas Ähnliches

$args = array( 'post_type' => 'news', 'news category' => *GET THE LABEL FROM THE PAGE SLUG SOMEHOW* ); $query = new WP_Query( $args ); 

EDIT: Hier ist mein Code aus meiner functions.php Datei

 function my_custom_post_news() { $labels = array( 'name' => _x( 'News', 'post type general name' ), 'singular_name' => _x( 'News', 'post type singular name' ), 'add_new' => _x( 'Add New', 'book' ), 'add_new_item' => __( 'Add New News' ), 'edit_item' => __( 'Edit News' ), 'new_item' => __( 'New News' ), 'all_items' => __( 'All News' ), 'view_item' => __( 'View News' ), 'search_items' => __( 'Search News' ), 'not_found' => __( 'No News found' ), 'not_found_in_trash' => __( 'No News found in the Trash' ), 'parent_item_colon' => '', 'menu_name' => 'News' ); $args = array( 'labels' => $labels, 'description' => 'Holds our news and news specific data', 'public' => true, 'menu_position' => 5, 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ), 'has_archive' => true, ); register_post_type( 'news', $args ); } add_action( 'init', 'my_custom_post_news' ); function mav_taxonomies_news() { $labels = array( 'name' => _x( 'News Categories', 'taxonomy general name' ), 'singular_name' => _x( 'News Category', 'taxonomy singular name' ), 'search_items' => __( 'Search News Categories' ), 'all_items' => __( 'All News Categories' ), 'parent_item' => __( 'Parent News Category' ), 'parent_item_colon' => __( 'Parent News Category:' ), 'edit_item' => __( 'Edit News Category' ), 'update_item' => __( 'Update News Category' ), 'add_new_item' => __( 'Add New News Category' ), 'new_item_name' => __( 'New News Category' ), 'menu_name' => __( 'News Categories' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'has_archive' => true, ); register_taxonomy( 'news_category', 'news', $args ); register_taxonomy_for_object_type( 'news_category', 'news' ); } add_action( 'init', 'mav_taxonomies_news', 0 ); 

/news funktioniert und /news/sample-news-article funktioniert. news_category/events gibt mir jedoch alle news nicht nur die event .

BEARBEITEN: geändertes ‘Etikett’ zu ‘Nachrichtenkategorie’

Solutions Collecting From Web of "Erstellen Sie eine Archivseite für benutzerdefinierten Posttyp mit benutzerdefinierter Taxonomie"

Gute Nachrichten – es gibt nichts, was Sie tun müssen. WordPress macht das für Sie out of the box, vorausgesetzt, Sie haben Ihren Post-Typ und Taxonomie dafür eingerichtet.

Sie sollten unter http://example.com/labels/events auf Ihre Beiträge zugreifen können, nachdem Sie Folgendes überprüft haben:

  • dass Ihr Post-Typ publicly_queryable abfragbar ist (das Argument public oder das Argument public_queryable wird von Ihrem Aufruf register_post_type() auf true gesetzt),
  • Ihr Taxonomie-Slug ist nicht auf etwas anderes eingestellt (im rewrite -> slug Argument Ihres register_taxonomy () -Aufrufs), und
  • Ihre Permalinks wurden gelöscht, seit der Post-Typ und die Taxonomie registriert wurden (um Permalinks zu löschen, gehen Sie einfach auf Einstellungen -> Permalinks und klicken Sie auf Speichern).

Es gibt noch ein paar andere Dinge, auf die Sie achten sollten, einschließlich:

  • das rewrite -> with_front Argument, das an register_taxonomy() gesendet wird, welches definiert, ob deine Standard-Permalink-Basis enthalten sein soll (zB benutzen einige Leute ‘/ blog’ vor allen Permalinks),
  • ob Sie oder irgendwelche Plugins, die Sie add_rewrite_rule() , andere benutzerdefinierte Umschreibungen eingerichtet haben (dh Aufrufe von add_rewrite_rule() ) – diese können das Standardverhalten ändern und
  • ob der dringend empfohlene Aufruf von register_taxonomy_for_object_type () nach dem Aufruf von register_taxonomy() ,
  • und ob all dies innerhalb der init Aktion geschieht.

Wenn dies nicht für Sie funktioniert, kann ein anderes Argument das Standardverhalten ändern. In diesem Fall könnten Sie Ihre Frage immer bearbeiten, um Ihren Post-Typ- und Taxonomie-Registrierungscode hinzuzufügen.