Wie können Sie die Umschreibungsregeln für benutzerdefinierte Post-Typen mit der Option zum Filtern nach benutzerdefinierten Taxonomie-Begriffen umgehen?

Ich habe diese Frage gesehen , kann mich aber nicht darum kümmern, die Taxonomie zu filtern.

Im Wesentlichen, was ich suche, ist eine Archivseite für die Taxonomie wie mysite.com/movies (die die vorherige Frage beantwortet), aber auf benutzerdefinierte Taxonomie innerhalb der benutzerdefinierten Beitragstyp wie Einstellungen => New York, Berlin so zu filtern dass Sie Links wie mysite.com/movies/new-york verwenden können.

Irgendwelche Hinweise darauf, was meine Rewrite-Regeln sein sollten, würden sehr geschätzt werden.

Solutions Collecting From Web of "Wie können Sie die Umschreibungsregeln für benutzerdefinierte Post-Typen mit der Option zum Filtern nach benutzerdefinierten Taxonomie-Begriffen umgehen?"

Dies ist, was ich in der Vergangenheit für eine ähnliche Anforderung verwendet habe;

register_post_type('movie', array( 'rewrite' => array('slug' => 'movie') )); register_taxonomy('movie_location', 'movie', array( 'rewrite' => array('slug' => 'movies') )); /** * Add rewrite rules for 'base' archives. * @param object $r Instance of {@see WP_Rewrite} */ function my_custom_rewrite_rules(&$r) { $rules = array( 'movies/page/?([0-9]{1,})/?$' => 'post_type=movie&paged=' . $r->preg_index(1), 'movies/?$' => 'post_type=movie' ); foreach ($rules as &$rule) $rule = $r->index . '?' . $rule; $r->rules = array_merge($rules, $r->rules); } add_action('generate_rewrite_rules', 'my_custom_rewrite_rules'); 

Siehe das rewrite Argument in register_taxonomy() ? WordPress erstellt automatisch die richtigen Umschreibungsregeln, einschließlich Archivseitenumbruch!

Beachten Sie auch die singuläre Verwendung von movie im Argument rewrite register_post_type() rewrite – teilweise, weil IMO, es ist semantisch korrekt, aber mehr, so dass Sie nicht eine ganze Dose Würmer öffnen.

Was ist das für Würmer genau?

Nun, sonst wirst du mit zwei Rewrite-Regeln enden;

 'movies/([^/]+)/?$' => 'post_type=movie&movie_location=$matches[1]' 'movies/([^/]+)/?$' => 'post_type=movie&name=$matches[1]' 

Dasjenige, das zuerst im Array rewrite rules indiziert wird, wird immer ausgetriggers und das andere ignoriert .

Also sagen Sie, Sie haben einen Film namens made-in-britain , aber die Rewrite-Regel für das Taxonomie-Archiv steht an erster Stelle, WordPress wird immer nach Filmen mit dem made-in-britain Begriff suchen, und nicht nach dem Film selbst!