Wie kann ich von einer Taxonomieseite auf den Post redirect?

Ich möchte zu einem Post redirect, wenn der Taxonomiebegriff, zu dem er gehört, nur einen Post zugewiesen hat und bisher habe ich Folgendes:

$term_id = get_queried_object()->term_id; $taxonomy_name = 'product_range'; $term_children = get_term_children( $term_id, $taxonomy_name ); foreach ( $term_children as $child ) { $term = get_term_by( 'id', $child, $taxonomy_name ); if($term->count <= 1 ) { echo 'name.'">'.$term->name.''; } } 

Dieser Link führt zur Archivseite, aber ich möchte, dass der Benutzer zum entsprechenden Post weitergeleitet wird. Ich bin mir nicht sicher, was ich tun muss, um den Permalink zu ändern, um zur einzelnen Post-Seite zu gelangen.

Solutions Collecting From Web of "Wie kann ich von einer Taxonomieseite auf den Post redirect?"

Ich denke, Sie können einfach die $count WP_Term , die die Anzahl der Beiträge enthält, die an diesen aktuellen Begriff angehängt sind.
Dann, wenn nur ein Beitrag an diesen Begriff angehängt ist, fragen Sie dieses Postobjekt ab und machen Sie Ihre Sachen damit …

 $term = get_queried_object(); if ( $term->count === 1 ) { $args = array( 'tax_query' => array( array( 'taxonomy' => 'product_range', 'field' => 'term_id', 'terms' => array( $term->term_id ), 'include_children' => false, ), ) ); $query = new WP_Query( $args ); $posts = $query->posts; $post = $posts[0]; /** * IMPORTANT FOR SEO... * Temporary redirection until your category is populated - Use 301 instead of 302 to redirect permanently... */ if ( wp_redirect( get_permalink( $post->ID ), 302 ) ) { exit; } } 

@ClemC Ich habe es herausgefunden, indem ich eine WP_Query hinzugefügt habe, um die Beiträge abzufragen und die Anzahl zu überprüfen, hier ist mein Code:

  $term_id = get_queried_object()->term_id; $taxonomy_name = 'product_range'; $custom_terms = get_term_children( $term_id, $taxonomy_name ); echo '
'; foreach($custom_terms as $custom_term) { $term = get_term_by( 'id', $custom_term, $taxonomy_name ); wp_reset_query(); $args = array( 'post_type' => 'product', 'posts_per_page' => 1, 'tax_query' => array( array( 'taxonomy' => 'product_range', 'field' => 'slug', 'terms' => $term->slug, ), ), ); $loop = new WP_Query($args); if($loop->have_posts()) { while($loop->have_posts()) : $loop->the_post(); // If only one post exists link to product if($term->count === 1 ) { echo '
'; echo '
'; echo ''; echo ''; echo '

'.$term->name .'

'; echo '

'.wp_trim_words($term->description, 23, '...').'

'; echo '
'; echo '
'; } //else link to the listing page else { echo '
'; echo '
'; echo ''; echo ''; echo '

'.$term->name .'

'; echo '

'.wp_trim_words($term->description, 23, '...').'

'; echo '
'; echo '
'; } endwhile; } else { echo "no posts found."; } //endforeach echo '
';