WordPress bedingte Tags sind ein großartiges Feature von WordPress, mit dem Sie steuern können, welche Inhalte auf einer Seite angezeigt werden. Es gibt bedingte Tags für verschiedene Bereiche Ihrer Website, wie z. B. Ihre Homepage, Blogbeiträge und Seiten. Dies ermöglicht es Ihnen, zu ändern, was auf Ihrer Website angezeigt wird. Sie könnten zum Beispiel Ihr Website-Logo in verschiedenen Bereichen Ihrer Website ändern.
In diesem Tutorial erkläre ich, welche bedingten Tags Ihnen zur Verfügung stehen und wie sie in Themes und Plugins verwendet werden können.
Wie WordPress bedingte Tags funktionieren
Bedingte Tags sind ein boolescher Datentyp, der nur true oder false zurückgeben kann. Der Tag is_home() bezieht sich zum Beispiel auf den Blog-Index. Wir können diesen Tag verwenden, um Besuchern unseres Blogs eine Nachricht anzuzeigen. Diese Nachricht wird nirgendwo anders angezeigt.
Der Code ist unkompliziert. Wir prüfen lediglich, ob die angezeigte Seite die Blog-Index-Seite ist. Wenn ja, zeigen wir unsere Nachricht an.
<?php
if ( is_home()) {
echo "Welcome to Our Blog!!";
}
?>
Das Obige ist ein grundlegendes Beispiel dafür, was mit bedingten Tags erreicht werden kann. Im Wesentlichen ist das alles, was es dazu gibt. Sie prüfen einfach die Art der angezeigten Seite. Abhängig davon, ob das Ergebnis true oder false ist, wird ein anderer Code ausgeführt.
Bevor wir uns weitere Beispiele für die Verwendung bedingter Tags ansehen, betrachten wir zunächst beliebte bedingte Tags, die Sie wahrscheinlich in Ihren WordPress-Themes sehen werden.
- is_home() – Prüft, ob der Blogbeitragsindex angezeigt wird. Dies kann Ihre Homepage sein oder auch nicht.
- is_front_page() – Prüft, ob Ihre Homepage angezeigt wird. Dies funktioniert, unabhängig davon, ob Ihre Frontpage-Einstellungen so eingerichtet sind, dass Blogbeiträge (d. h. Blog-Index) oder eine statische Seite angezeigt werden.
- is_single() – Prüft, ob irgendeine Art von einzelnen Beitrag angezeigt wird (ausgenommen Anhänge).
- is_attachment() – Prüft, ob ein Anhang angezeigt wird.
- is_page() – Prüft, ob eine Seite angezeigt wird.
- is_singular() – Prüft, ob ein einzelner Beitrag, ein Anhang oder eine Seite angezeigt wird. True wird zurückgegeben, wenn eine dieser Bedingungen erfüllt ist.
- is_category() – Prüft, ob eine Kategorie-Archivseite angezeigt wird.
- is_search() – Prüft, ob eine Suchergebnisseite angezeigt wird.
- is_tag() – Prüft, ob ein Tag-Archiv angezeigt wird.
- is_author() – Prüft, ob eine Autorenarchivseite angezeigt wird.
- is_archive() – Prüft, ob irgendeine Art von Archivseite angezeigt wird, einschließlich Kategorie-, Tag-, Datums- und Autorenarchiven.
- is_sticky() – Prüft, ob ein Beitrag als Sticky definiert wurde.
- is_multi_author() – Prüft, ob mehr als ein Autor Beiträge auf der Website veröffentlicht hat. True wird zurückgegeben, wenn zwei oder mehr Personen Beiträge veröffentlicht haben. Wenn nur ein Autor Beiträge veröffentlicht hat oder wenn überhaupt keine Beiträge veröffentlicht wurden, wird false zurückgegeben.
Es gibt sechs zeitbasierte bedingte Tags, die Sie ebenfalls nützlich finden werden. Diese Tags beziehen sich auf Datumsarchivseiten. Zum Beispiel ist die URL http://www.ihrewebsite.com/2013/12/ eine monatsbasierte Archivseite.
Wenn einer der folgenden bedingten Tags true zurückgibt, wäre is_archive() ebenfalls true.
- is_date() – Prüft, ob es sich um eine datumsbasierte Archivseite handelt.
- is_year() – Prüft, ob es sich um eine jahresbasierte Archivseite handelt.
- is_month() – Prüft, ob es sich um eine monatsbasierte Archivseite handelt.
- is_day() – Prüft, ob es sich um eine tagesbasierte Archivseite handelt.
- is_time() – Prüft, ob es sich um eine zeitbasierte Archivseite handelt.
- is_new_day() – Prüft, ob heute ein neuer Tag ist. Wenn der aktuelle Beitrag an einem anderen Tag als der vorherige Beitrag veröffentlicht wurde, würde er true zurückgeben. False wird zurückgegeben, wenn beide Beiträge am selben Tag veröffentlicht wurden.
Sie werden bedingte Tags wie is_home() und is_single() häufig antreffen, aber Sie müssen sich nicht alle dieser bedingten Tags merken. Die meisten WordPress-Benutzer konsultieren das WordPress-Codex nach dem entsprechenden bedingten Tag, wenn sie eine bedingte Funktion einrichten müssen.
Beispiele für bedingte Tags
Viele bedingte Tags erlauben die Übergabe von Parametern an die Funktion. Dies gibt Ihnen viel mehr Kontrolle darüber, welche Bedingungen erfüllt sein müssen, bevor etwas ausgeführt wird. is_page() ist ein gutes Beispiel dafür. Der Tag erlaubt Ihnen zu prüfen, ob die angezeigte Seite eine Seite ist. is_page() gibt einen Wert von true zurück, wenn irgendeine Seite angezeigt wird, aber Sie müssen den $page-Parameter angeben, wenn Sie spezifischer sein wollen. Der $page-Parameter kann die Seiten-ID, den Seitentitel oder den Seitenschnecken sein.
Betrachten wir eine normale Website mit einer Über-uns-Seite und Sie möchten die Über-uns-Seite anders als alle anderen Seiten anpassen. Zum Beispiel könnten Sie ein Foto Ihres Unternehmens am oberen Rand der Seitenleiste anzeigen oder zusätzliche Informationen am unteren Rand der Über-uns-Seite anzeigen.
Dazu müssen Sie den $page-Parameter definieren. Wenn die Seiten-ID 10 wäre, könnten Sie Ihre bedingte Anweisung etwa so eröffnen:
if ( is_page(10) ) {
Eine bestimmte Seite kann auch angegeben werden, indem der Seitentitel an die Funktion übergeben wird.
if ( is_page( 'About Us' ) ) {
Der Seitenschnecken kann ebenfalls verwendet werden. Wie Sie sich vielleicht erinnern, ist der Seitenschnecken der eindeutige benannte Bezeichner am Ende der URL. Wenn Ihre Über-uns-Seiten-URL www.ihrewebsite.com/about-our-company/ wäre, wäre der Seitenschnecken about-our-company.
if ( is_page( 'about-our-company' ) ) {
Einige bedingte Tags, wie is_page(), können auch Parameter in einem Array übergeben. Die folgende bedingte Anweisung gibt einen Wert von true zurück, wenn eine der Bedingungen wahr ist.
if ( is_page( array( 10, 'About Us', 'about-our-company' ) ) ) {
Es ist üblich, dass Entwickler mehr als eine Bedingung beim Verwenden von bedingten Tags festlegen. Kehren wir zur einfachen Aufgabe zurück, Blog-Besuchern eine Willkommensnachricht anzuzeigen. Dies ist etwas, das eine Unternehmenswebsite ihrem Blog-Bereich hinzufügen möchte, aber nicht anderen Bereichen ihrer Website (z. B. Homepage, Kontaktseite, Über-uns-Seite usw.).
Dies können sie mithilfe der bedingten Tags is_home() und is_single() tun, welche den Blogindex und einzelne Beiträge darstellen. Um eine Nachricht in beiden Bereichen anzuzeigen, müssen Sie den logischen ODER-Operator || verwenden. Dies wird im folgenden Code veranschaulicht. Die anfängliche if-Anweisung prüft, ob die Seite der Blogindex oder ein einzelner Beitrag ist. Wenn eine der beiden Bedingungen zutrifft, wird die Nachricht angezeigt.
<?php
if ( is_home() || is_single() ) {
echo "Welcome to Our Blog!!";
}
?>
Ein weiterer sehr nützlicher logischer Operator ist der UND-Operator &&. Dieser wird verwendet, wenn Sie möchten, dass zwei oder mehr Bedingungen erfüllt sind, bevor etwas ausgeführt wird. Die folgende if-Anweisung prüft, ob eine Seite sowohl eine Archivseite ist als auch unter der Kategorie „Nachrichten“ kategorisiert ist. Auf den Seiten der Kategorie „Nachrichten“ wird die Willkommensnachricht angezeigt. Auf anderen Kategorien wird nichts angezeigt.
<?php
if ( is_archive() && is_category( 'News' ) ) {
echo "Welcome to the News Archives";
}
?>
UND- und ODER-Operatoren können kombiniert werden. Das folgende Beispiel stammt aus der functions.php-Vorlage des Standard-WordPress-Themes Twenty Thirteen. Die Funktion wird verwendet, um den Seitentitel im Browser anzuzeigen, jedoch wird nur ein Teil der Funktion unten gezeigt.
Die if-Anweisung gibt den Wert true zurück, wenn eine Website-Beschreibung vorhanden ist und der Benutzer den Blogindex oder die Startseite aufruft. Die Website-Beschreibung kann über das Feld „Untertitel“ in Ihren allgemeinen Einstellungen eingegeben werden. Wenn Sie dieses Feld ausfüllen, wird in der Titelleiste auf Ihrem Blogindex und Ihrer Startseite „Seitentitel | Website-Beschreibung“ angezeigt (Hinweis: Der Trenner wird im folgenden Code mit der Zeichenfolge $sep angezeigt). Wenn Sie dies nicht tun, wird in der Titelleiste „Seitentitel“ angezeigt.
Wie Sie sehen können, werden is_home und _is_front_page aufgrund des ODER-Operators als eine Einheit betrachtet. Deshalb sind sie in Klammern eingeschlossen.
if ( $site_description && ( is_home() || is_front_page() ) ) $title = "$title $sep $site_description";
Ein weiterer PHP-Logikoperator, den Sie verwenden können, ist der NICHT-Operator !. Dieser ist unter vielen Umständen praktischer zu verwenden. Sagen wir zum Beispiel, Sie möchten ein Foto auf allen Ihren Seiten außer den Archiven anzeigen. Es ist nicht notwendig, eine lange bedingte Anweisung einzurichten, die fragt: „Ist dies die Startseite, ist dies ein einzelner Beitrag, ist dies eine Seite…“. Es ist praktischer, einfach zu fragen: „Ist dies keine Archivseite?“.
Um dies zu tun, fügen Sie einfach ein Ausrufezeichen vor das bedingte Tag. Der folgende Code zeigt, wie einfach dies in der Praxis ist. Er zeigt ein Bild auf jeder Seite Ihrer Website außer auf Archivseiten an.
<?php
if ( !is_archive() ) { ?>
<img src="photo.jpg" />
<?php
}
?>
Bisher haben wir uns grundlegende Beispiele für die Verwendung von bedingten Tags angesehen, bei denen etwas entweder ausgeführt wird oder nicht ausgeführt wird (d. h. wenn A wahr ist, tue B). In der Praxis gibt es normalerweise eine weitere Aktion, die ausgeführt werden muss, wenn eine Bedingung nicht erfüllt ist. Zusätzlich kann es mehrere Bedingungen geben, die erfüllt sein können, mit einer anderen Reaktion auf jede einzelne.
Anstatt viele einzelne Anweisungen dafür zu schreiben, ist es praktisch, else- und elseif-Anweisungen zu verwenden. Dies gibt Ihnen einen größeren Kontrollgrad darüber, was auf Ihrer Website angezeigt wird.
Dies können wir anhand eines Beispiels zeigen. Nehmen wir an, Sie möchten auf Ihrer Website in verschiedenen Bereichen ein anderes Logo anzeigen. Wie würden Sie das tun? Die Antwort ist einfach: Wir verwenden else- und elseif-Anweisungen. Der folgende Code zeigt, wie dies erreicht werden kann.
<?php
if ( is_home() || is_front_page() ) { ?>
<img src="logo-home.png" />
<?php
} elseif ( is_category() ) { ?>
<img src="logo-category.png" />
<?php
} elseif ( is_single() ) { ?>
<img src="logo-blog-post.png" />
<?php
} elseif ( is_page() ) { ?>
<img src="logo-page.png" />
<?php
}
else { ?>
<img src="logo-general.png" />
<?php
}
?>
Abhängig davon, welchen Bereich der Website ein Besucher gerade ansieht, würde eines von fünf Logos mit dem obigen Code angezeigt. Es ist ein einfaches Beispiel, das veranschaulicht, wie einfach else- und elseif-Anweisungen verwendet werden können, um viele verschiedene Bereiche Ihrer Website zu steuern.
Elseif-Anweisungen werden auch in anderen Teilen von WordPress verwendet. Die meisten functions.php-Vorlagen verwenden sie, und viele WordPress-Themes verwenden sie, um die Anzeige des Website-Titels in Browsern zu ändern.
Weitere bedingte Tags
Es gibt eine Reihe zusätzlicher bedingter Tags. Viele davon werden von Entwicklern in Themes und Plugins verwendet.
Nachfolgend finden Sie eine Liste einiger der anderen bedingten Tags, die Ihnen zur Verfügung stehen.
- is_tax() – Prüft, ob eine benutzerdefinierte Taxonomie-Archivseite angezeigt wird.
- has_term() – Prüft, ob der aktuelle Beitrag einen der angegebenen Begriffe hat.
- taxonomy_exists() – Prüft, ob der Taxonomie-Name existiert.
- post_type_exists() – Prüft, ob ein Beitragstyp existiert.
- is_post_type_hierarchical( $post_type ) – Prüft, ob der Beitragstyp hierarchisch ist.
- is_post_type_archive() – Prüft, ob die Archivseite eines bestimmten Beitragstyps angezeigt wird.
- is_comments_popup() – Prüft, ob das Kommentar-Popup-Fenster geöffnet ist.
- comments_open() – Prüft, ob Kommentare für den aktuellen Beitrag oder die Seite zulässig sind.
- pings_open() – Prüft, ob Pings für den aktuellen Beitrag oder die Seite zulässig sind.
- is_feed() – Prüft, ob die aktuelle Abfrage für einen Feed ist.
- is_404() – Prüft, ob ein 404-Fehler angezeigt wird.
- is_paged() – Prüft, ob die aktuell angezeigte Seite eine paginierte Seite außer Seite eins ist. Beiträge und Seiten werden paginiert, wenn Sie den nextpage-Quicktag in Ihrem Inhalt verwenden, um große Beiträge aufzuteilen.
- is_trackback() – Prüft, ob ein Trackback verwendet wird.
- is_admin() – Prüft, ob der Benutzer im Administratorbereich angemeldet ist. Es wird nicht geprüft, ob ein Benutzer Administratorrechte hat, sondern nur, ob er im WordPress-Dashboard angemeldet ist.
- is_page_template() – Prüft, ob die angezeigte Seite eine Seitenvorlage verwendet. Bei Bedarf kann eine bestimmte Seitenvorlage definiert werden.
- is_preview() – Prüft, ob ein Blogbeitrag im Entwurfsmodus angezeigt wird.
- has_excerpt() – Prüft, ob der aktuelle Beitrag einen Auszug hat. Bestimmte Beiträge können definiert werden.
- has_nav_menu() – Prüft, ob einer Menüposition ein Menü zugewiesen ist. Dies wird von Theme-Entwicklern verwendet, um etwas anzuzeigen, falls der Benutzer kein Menü hinzugefügt hat.
- in_the_loop() – Prüft, ob sich der Aufrufer noch innerhalb der WordPress-Schleife befindet.
- is_active_sidebar( $index ) – Prüft, ob eine bestimmte Seitenleiste verwendet wird.
- is_multisite() – Prüft, ob Multisite unterstützt wird.
- is_main_site() – Prüft, ob eine Multisite die Hauptseite im Netzwerk ist.
- is_super_admin() – Prüft, ob ein Benutzer ein Super-Administrator im Netzwerk ist.
- is_plugin_active( $plugin ) – Prüft, ob ein Plugin aktiviert ist.
- is_child_theme() – Prüft, ob ein Child-Theme verwendet wird.
- current_theme_supports( $feature ) – Prüft, ob ein Theme ein bestimmtes Feature wie Beitragsformate oder Beitragsbilder unterstützt.
Prüfen Sie auch: Standard-Taxonomien entfernen.
Bedingte Tags sind ein wichtiges Konzept in WordPress. Aufgrund ihrer Nützlichkeit gibt es nur wenige WordPress-Themes, die ohne sie entwickelt wurden. Sobald Sie Else-Anweisungen, Elseif-Anweisungen und logische Operatoren wie AND, OR und Not verstehen, können Sie jede bedingte Funktion bewältigen.
Ich hoffe, dieser Leitfaden hat Ihnen geholfen, WordPress-Bedingungs-Tags in Ihren Themes zu verwenden.
Wenn Ihnen dieser Artikel gefallen hat, dann folgen Sie IsItWP auf Twitter.
Hallo, ich habe ein Problem bei der Ausführung der bedingten Anweisung…
if ( is_home() || is_front_page() || is_page_template(‘templates/template-home.php’) ) { // } elseif ( is_page() && $inner_disable == ‘disable’ ) { // } elseif (is_singular( array( ‘products’ ) ) ) { trav_get_template( ‘inner-3.php’, ‘/templates/inners’ ); }////hat das zum Laufen gebracht elseif ( is_page() && is_page_template( ‘templates/custom-page.php’ ) ) { trav_get_template( ‘inner-p.php’, ‘/templates/inners’ );////aber das Ergebnis wird nicht erzielt… stattdessen wird für diese Bedingung auch das Folgende angezeigt. } else { trav_get_template( ‘inner-1.php’, ‘/templates/inners’ ); }
Gibt es eine Fehlermeldung?
Abgesehen davon, dass das Lehren: { ?> mit der geschweiften Klammer innerhalb des PHP-Schließungs-Tags ist eine unsachgemäße Syntax. Beziehen Sie sich auf WP- oder PHP-Code-Tuts.
Das ist ein wirklich schönes Tutorial. Es hat mir sehr geholfen, mein Child-Theme zu erstellen.
Hallo Martin, schön, dass es geholfen hat. Folgen Sie uns auf Facebook und Twitter für weitere Tutorials. :)
Gute Tipps. Das Verständnis, wie man bedingte Tags verwendet, ist eine Schlüsselvoraussetzung für WordPress-Entwickler. :)
Danke dafür, ich muss an der Website eines Kunden arbeiten, damit ein Link nur in einer bestimmten Shop-Kategorie erscheint. Das wird also hilfreich sein, danke.