Redirect to Archiv ist einzelnen Post hat einen bestimmten Begriff zugewiesen?

Ich möchte jeden einzelnen Beitrag auf die Archivseite seines Taxonomiebegriffs redirect, wenn ihm ein bestimmter Begriff zugeordnet ist.

Also, wenn ein Beitrag von einem Begriff “Serie” bei:
domain/series/post/
Ich möchte diesen einzelnen Beitrag zurückleiten zu:
domain/series/

Ich habe versucht, mit der function header () von PHP zu arbeiten, aber ich weiß, dass das verwendet werden muss, bevor irgendwelche andere Überschriften gesendet werden. Ich kann nicht scheinen, die Begriffe zu erkennen UND Header () an der gleichen Stelle verwenden.

Jede Hilfe wird sehr geschätzt!
Vielen Dank!

Solutions Collecting From Web of "Redirect to Archiv ist einzelnen Post hat einen bestimmten Begriff zugewiesen?"

Es gibt einen template_redirect hooks, der perfekt für solche Aufgaben geeignet ist.

  1. Haken Sie sich in template_redirect
  2. Überprüfen Sie Ihren Kontext ( is_single() , etc)
  3. Redirect mit wp_safe_redirect() (wenn es in einer Site ist)
  4. die() , um zu verhindern, dass die Ausführung fortgesetzt wird

Danke an Rarst für den Tipp.
Hier ist der Code, den ich entwickelt habe, um Redirects für zwei ähnliche Taxonomie- / Post-Typ-Setups zu erstellen.
Dies entspricht im Wesentlichen dem, was ich im OP angegeben habe. Wenn ich einen einzelnen Beitrag mit einem ihm zugewiesenen Top-Level-Begriff triff, geht die URL von dort ab
domain/series/post/
zu
domain/series/

Es löscht einfach den Pfropfen des Pfostens vom Ende der URL.

Offensichtlich müssen die CPTs, Taxonomien und Umschreibungen richtig eingerichtet werden, um damit zu arbeiten.

Ich habe der function theme_perform_redirect() den Parameter $type hinzugefügt, damit ich später für andere Arten von Weiterleitungen functionen hinzufügen kann.

 function theme_perform_redirect($post, $taxonomy, $type) { if ($type == 'top-level') { $top_level_terms = get_top_level_term_ids( $taxonomy ); $post_terms = wp_get_post_terms( $post->ID, $taxonomy ); if ( in_array($post_terms[0]->term_id, $top_level_terms)) { // This is the main/top post, redirect it to the archive $to_strip = $post->post_name; $permalink = get_permalink( $post->ID ); $go_here = str_replace($to_strip."/", "", $permalink); wp_redirect( $go_here ); exit(); } } } function theme_redirects() { global $post; if ( is_single() ) { if (is_singular( 'cartoon-series' )) { heman_perform_redirect($post, 'cartoon-features', 'top-level'); } else if (is_singular( 'movies' )) { heman_perform_redirect($post, 'movie-features', 'top-level'); } } } add_action( 'template_redirect', 'theme_redirects' ); 

Beachten Sie, dass get_top_level_term_ids() meine eigene function ist. Es ergreift nur alle Begriffe mit einem Elternteil von 0 …. nur in einem besseren Paket. 🙂

Vielen Dank!