Wie kann man einzelne Postvorlagen basierend auf dem Autor anzeigen?

Meine aktuelle singlepost.php verwendet die folgenden Bedingungen und rendert die entsprechende Vorlage.

post; if ( in_category('4') || in_category('59') ) { include(TEMPLATEPATH . '/review-post.php'); } elseif (in_category('5')) { include(TEMPLATEPATH . '/promo-post.php'); } else { include(TEMPLATEPATH . '/regular-post.php'); } ?> 

Ich möchte das so ändern, dass die Post-Vorlage /123-author.php gerendert wird, wenn ein Beitrag von einem bestimmten Autor veröffentlicht wird.

Wie kann ich die obigen Bedingungen ändern / anhängen, sodass der einzelne Beitrag nach einer bestimmten Vorlage sucht, wenn er einen von 123author erstellten Beitrag bemerkt?

Vielen Dank.

Solutions Collecting From Web of "Wie kann man einzelne Postvorlagen basierend auf dem Autor anzeigen?"

Ich mache ein paar Annahmen darüber, wie dein Theme eingerichtet ist:

  • Sie haben zwei Dateien:
    • index.php. Dies ist die Datei, die mit der Ausführung der Schleife beginnt.
    • Inhalt.php. Dies ist die Datei, in der Ihre generische Inhaltsvorlage vorhanden ist.
  • Sie kennen sich mit get_template_part () aus . Wenn nicht, ist es einfach zu implementieren.

Zum Beispiel habe ich zwei Benutzer in meinem System, von denen jedes durch “admin” und “user” identifiziert wird.

An dieser Stelle erstellen wir eine zweite Vorlage für die Anzeige von Inhalten eines bestimmten Autors. Fügen Sie im Stammverzeichnis Ihres Themenverzeichnisses eine neue Vorlagendatei hinzu – diese Datei wird zum Rendern von Inhalten für einen bestimmten Autor verwendet.

Angenommen, Ihre grundlegende Vorlagendatei ist content.php, fügen Sie content-user.php. Sie können zu dieser Datei hinzufügen, was Sie wollen – ein guter Ausgangspunkt ist das Kopieren und Einfügen des Inhalts aus content.php. Beachten Sie, dass der Name des neuen Templates keine Rolle spielt, aber es ist ein wenig klarer, da es den Inhalt nach Autor mit dem Namen “Benutzer” rendern wird.

Als nächstes springen Sie in Ihre index.php Datei und lokalisieren Sie die Schleife. Wahrscheinlich sieht es ungefähr so aus :

 while( have_posts() ) : the post(); get_template_part( 'content', get_post_format() ); endwhile; 

Wenn Ihr Design keine Postformate unterstützt und / oder Sie Standard-Include-Dateien wie oben erwähnt verwenden, sieht es möglicherweise so aus:

 while( have_posts() ) : the post(); include_once( 'content.php' ) endwhile; 

Für die Zwecke dieser Antwort werde ich mit dem ersten Beispiel gehen. Das ist die beste Vorgehensweise, um unterschiedliche Vorlagendateien in Ihren Inhalt aufzunehmen.

An diesem Punkt müssen wir eine Überprüfung einrichten, um die Vorlage basierend auf dem Benutzer einzuschließen. Ich werde meine Loop-Anzeige eine Vorlage für alle von ‘Benutzer’ geschriebenen Artikel einrichten und eine separate Vorlage für alle Artikel anzeigen, die von ‘admin’ und anderen geschrieben wurden:

 while( have_posts() ) : the post(); if( get_the_author() == 'user' ): get_template_part( 'content-user', get_post_format() ); else: get_template_part( 'content', get_post_format() ); endif; endwhile; 

Der Code sollte leicht genug lesen, aber um klar zu sein:

  • Zuerst überprüfen wir den Autor des aktuellen Posts
  • Wenn der Autor “Benutzer” ist, verwenden wir die zweite Vorlage, die wir erstellt haben
  • Ansonsten verwenden wir die Standardvorlage

Ihre Laufleistung kann je nach Konfiguration des Themas variieren, aber die function get_the_author () sollte Ihnen bei der dynamischen Auswahl einer Vorlage helfen.

Update basierend auf Antwort Kommentar

Sie können get_the_author_meta verwenden .

Ohne mehr Code zu sehen, kann ich nicht sicher sein, wie Ihr Theme eingerichtet ist, aber wenn ich basierend auf dem von Ihnen bereitgestellten Code raten müsste, würde ich Ihnen vorschlagen, so etwas zu versuchen:

 $post = $wp_query->post; if(get_the_author_meta('user_nicename', $post->post_author) == 'user') { /* Do your author-specific work */ } else { if ( in_category('4') || in_category('59') ) { include(TEMPLATEPATH . '/review-post.php'); } elseif (in_category('5')) { include(TEMPLATEPATH . '/promo-post.php'); } else { include(TEMPLATEPATH . '/regular-post.php'); } } 

Irgendwann mussten wir unsere Detailseite (also single.php) in verschiedenen Stilen zeigen. Für diesen Sinn schreibe ich einen Beitrag auf http://www.webinbangla.com/2012/05/different-style-of-single-php/