Verwenden Sie has_tag () außerhalb der Schleife

Ich möchte, wenn der nächste Post einen bestimmten Tag hat. Ich habe den folgenden Code ausprobiert, aber es funktioniert nicht, da has_tag() nur in der Schleife funktioniert. Ich möchte es außerhalb der Schleife verwenden.

 ID ) ) : ?> my content  

Der folgende Code listet die Tags aus dem Post auf, aber ich weiß nicht, wie man mit einer if() / else() Bedingung arbeiten kann:

 global $post; foreach ( get_the_tags( $post->ID ) as $tag ) { echo $tag->name . ', '; } 

Solutions Collecting From Web of "Verwenden Sie has_tag () außerhalb der Schleife"

Die Bedingung has_tag() muss nicht innerhalb der Schleife verwendet werden. Es kann ein $post Objekt als zweiter Parameter übergeben werden:

 has_tag( $tag, $post ); 

Da has_tag() standardmäßig auf den aktuellen Post has_tag() , müssen Sie ihm einfach das Objekt für den nächsten angrenzenden Post übergeben. Glücklicherweise bietet WordPress eine function zum Abrufen benachbarter Posts: get_adjacent_post() :

 get_adjacent_post( $in_same_cat, $excluded_categories, $previous ); 

Der Parameter $in_same_cat ist standardmäßig auf ” false , der Parameter ” $excluded_categories ist standardmäßig auf '' und der Parameter ” $previous ist standardmäßig auf ” true . Also müssen wir nur diesen dritten Parameter in false ändern, um den nächsten Post anstelle des vorherigen Posts zu erhalten:

 get_adjacent_post( false, '', true ); 

Kombiniere es mit deiner has_tag() Bedingung:

 if ( has_tag( 'mario', get_adjacent_post( false, '', true ) ) { // Next post has the 'mario' post tag; // do something } 

Sie sollten in der Lage sein, etwas wie dieses zu verwenden:

 $post_id = 123; $posttags = get_the_tags($post_id); if (!is_wp_error($posttags) && $posttags) { foreach($posttags as $tag) { if ($tag->name == 'mario') { echo 'yup'; } } } 

Was du tust ist:

  • Ergreife die Tags
  • Wenn es irgendwelche Tags gibt, führe jeden von ihnen durch eine foreach
  • Wenn einer dieser foreach-Instanzen mit dem Fall von mario , etwas tun (in diesem Fall Echo ‘yup’)

Lass es mich wissen, wenn das hilft.