Wie kann ich die Randleiste des Archivs und der Beiträge jedes Autors von jedem Autor bedingt ausgeben?

Insbesondere versuche ich, einen Testimonial-Rotator in die Seitenleiste bestimmter Autorenarchive und einzelner Posts für jeden spezifischen Autor zu hängen.

Obwohl ich unten ein bestimmtes Beispiel verwende, ist die allgemeine Antwort, die ich brauche, wie ich bedingt überprüfen kann, ob ich in einem Autorenarchiv oder einem einzelnen Beitrag von diesem Autor bin und eine eindeutige Zeichenfolge für die Verwendung in einem anderen Teil des Codes festlegen.

In Nicht-Code-Sprache ist das, wonach ich suche:

Wenn im Archiv von Autor-1 oder in einem einzelnen Beitrag von Autor-1, $ var = x.

Wenn auf dem Archiv von Autor-2 oder in einem einzelnen Beitrag von Autor-2, $ var = y.

Hinweise darauf, warum mein Code nicht funktioniert, würden wir uns wünschen.

Das Ergebnis meiner function unten ist nicht wie erwartet, es gibt die Daten des letzten Autors (in diesem Fall Autor-2) in alle Autoren-Archiv- und Post-Sidebars zurück, egal welches Autorenarchiv oder wer der einzelne Postautor ist.

Hier arbeite ich mit:

add_action ('genesis_before_sidebar_widget_area','user_testimonials',10); // Genesis action hook. function user_testimonials(){ global $post; $author_id = $post->post_author; //Get the ID of the current author $authornicename = get_the_author_meta( 'user_nicename', $author_id ); //get the author nicename by ID if (is_author() || is_singular('post')){ // First make sure we are on an author archive or a single post. if (is_author('author-1') || $authornicename ='author-1' ){$rotatorid=445;} //Here I have manually looked up and inserted the author nice-name into is_author() //The expected result would be to return true if we are on that author's archive page //Next I checked the value of $authornicename against a manually inserted and known nice-name. //This should return true when on a single post by that author. //The last part manually sets the $rotatorid to the known ID of the rotator that I want to display to be used to dynamically generate the output. if (is_author('author-2') || $authornicename ='author-2' ){$rotatorid=451;} echo "

Testimonials

"; echo do_shortcode('[testimonial_rotator id='. $rotatorid .' hide_title="true" format="list"]') . '
'; //A shortcode is used to output the testimonial rotator. //$rotatorid is inserted to dynamically output the rotator for that author. } }

Solutions Collecting From Web of "Wie kann ich die Randleiste des Archivs und der Beiträge jedes Autors von jedem Autor bedingt ausgeben?"

Wie so oft zeigt die Frage die Antwort:

Verwenden Sie globale $ authordata ;. Repariere PHP-Fehler: == Operator. Fix $ rid = ‘445’, nicht $ rid = 445.

Hier ist der Arbeitscode:

 add_action ('genesis_before_sidebar_widget_area','user_testimonials',10); function user_testimonials(){ if (is_author() || is_singular('post')){ global $authordata; //using global $authordata is more direct $authorlogin = $authordata->user_login; //print_r( $authordata ); //to see everything if (is_author('author-1') || ($authorlogin=="author-1") ) //Fix the == operators { $rid='445'; } elseif (is_author('author-2') || ($authorlogin=='author-2') ) { $rid='451'; } echo "

Testimonials

"; echo do_shortcode(' [testimonial_rotator id='. $rid .' hide_title="true" format="list"]') . '
'; } }