Konditionale Abfragen in WordPress & WooCommerce

WordPress und WooCommerce haben einige hilfreiche Funktionen die es euch ermöglichen eure Inhalte, Funktionen und so ziemlich alles Andere an eine Bedingung zu knüpfen. In diesem Artikel geht es um die konditionalen Abfragen, welche euch die beiden Systeme ab Werk zur Verfügung stellen.

Was sind konditionale Abfragen?

Nehmen wir als Beispiel die Startseite. Ihr möchtet gern einen zusätzlichen Widgetbereich (z.B. für ein Umfrage-Formular) auf eurer Startseite unterbringen. Platziert ihr diesen nun einfach in euren Header-oder Footerbereich eures Themes wird dieser selbstverständlich auf allen Unterseiten geladen. Er soll aber nur auf der Startseite angezeigt werden. Die unsaubere Methode wäre die Vergabe einer CSS-Klasse und dann die Ausblendung des Containers mit display:none. Viel schöner und sauberer lässt sich das mit einer kleinen Abfrage lösen.

Warum sollte ich konditionale Abfragen einsetzen?

Neben der Möglichkeit Inhalte nur auf bestimmten Seiten anzuzeigen, eignen sich diese Funktionen auch besonders gut für die Einbindung von Scripten jeglicher Art. So kommt es nicht selten vor, dass schlecht programmierte Plugins ihre Scripte (für z.B. die Anzeige einer Masonry-Galerie) einfach überall im Footer platzieren und damit eure Seiten-Performance schnell in den Keller ziehen. Dieses Problem löst man ebenfalls mit konditionalen Abfragen. Hierzu gibt es wieder ein kleines Beispiel:
https://gist.github.com/44a2c37e520b274ecfb748de194a1758.git

Somit wird eure JavaScript-Datei für die Galerie auch nur auf der Seite „Galerie“ geladen und nicht auf allen anderen Unterseiten. Das spart wichtige Ladezeit und gerade Google gab ja vor einiger Zeit bekannt, schnelle Seiten besonders gern zu haben.

Welche konditionalen Abfragen gibt es denn?

WordPress und WooCommerce geben euch zahlreiche Möglichkeiten von konditionalen Abfragen, aber auch andere Plugins nutzen mittlerweile die Möglichkeiten, so verfügt z.B. Buddypress ebenfalls über diverse Möglichkeiten. Wir haben euch dazu eine Liste mit möglichen konditionalen Abfragen erstellt.

Übersicht: konditionale Abfragen

WordPress

    • is_home()

Diese Abfrage nutzt ihr immer, wenn ihr etwas nur auf eurer Blog-Startseite ausgeben wollt. Verwendet ihr hingegen eine statische Seite als Startseite nutzt ihr is_front_page()

    • is_page()

Diese Abfrage nutzt ihr, wenn ihr etwas auf einer bestimmten Seite ausgeben wollt. So könnt ihr Seiten z.B. an Hand des Namens is_page('Kontakt') oder mit Hilfe der ID is_page(45) unterscheiden. Eine ausführliche Liste der möglichen Parameter findet ihr im WP-Codex unter is_page().

    • is_single()

Diese Abfrage funktioniert genauso wie is_page(), mit dem Unterschied, dass es sich hierbei nicht um Seiten, sondern Beiträge handelt.

    • is_front_page()

Wenn ihr eure Ausgabe auf eine statische Startseite beschränken möchtet, so nutzt ihr is_front_page(). Der Unterschied zu is_home() wurde ja bereits weiter oben erläutert.

    • is_page_template()

Nicht selten habt ihr auch eigene Page-Templates in eurem Theme, so z.B. für die Darstellung einer Google Maps Karte auf eurer Kontaktseite. Um eure Ausgabe auf diesen Template-Typen zu begrenzen, nutzt ihr die Abfrage is_page_template('kontaktseite')

    • is_category()

Seit den Neuerungen der Kategorie-und Tag-Templates (Ergänzung der Metafelder) ist es möglich umfangreiche Kategorieseiten zu erstellen. Umso wichtiger scheint es auch hier mit kondotionalen Abfragen zu Arbeiten. Die Eingrenzung erfolgt mit is_category()

    • is_tag()

is_tag() funktioniert wie is_category() mit dem Unterschied, dass hierbei eure Tag-Seiten berücksichtigt werden.

    • is_user_logged_in()

Wenn man mit Nutzerkonten arbeitet, möchte man seinen Nutzern in der Regel eine veränderte Navigation zur Verfügung stellen. Das kann z.B. sein um sein Premium-Angebot verfügbar zu machen. Die notwendige Abfrage dafür ist is_user_loggeld_in()

    • has_post_thumbnail()

Nichts ist unschöner in einer Übersichtsseite, als Leerraum, weil kein Beitragsbild vergeben wurde. Um nun nicht zwangsweise für jeden eurer Artikel ein Beitragsbild finden zu müssen, könnt ihr has_post_thumbnail() nutzen und z.B. ein Standardbild statt des Leerraums anzeigen

    • is_customize_preview()

Der Customiser erfreut sich großer Beliebtheit bei den Endnutzern. Mit is_customize_preview() haben Entwickler die Möglichkeit z.B. weitere Hilfestellungen und Tipps direkt bei der Bearbeitung mittels des Customisers zur Verfügung zu stellen.

WooCommerce

    • is_shop()

Die Sidebar muss weg? Ihr möchtet eine auf eine spezielle Aktion in eurem Online Shop hinweisen? Dann ist is_shop() genau das Richtige für euch.

    • is_woocommerce()

Ihr seit im Urlaub oder der euer Online Shop ist in der Wartung? Dann teilt das euren Kunden mit. Eine kurze Nachricht „Aktuell werden keine Bestellungen bearbeitet“ kann beim potenziellen Kunden wahre Wunder wirken. Umsetzen lässt sich das mit der Abfrage is_woocommerce()

    • is_product()

Ihr wollt Veränderungen an der Darstellung eines bestimmten Produktes vornehmen? z.B. weil es nur auf Anfrage erworben werden kann? Dann nutzt die konditionale Abfrage is_product('mein-produkt')

    • is_cart()

Mit der Abfrage is_cart() könnt ihr sehr einfach auf Coupons, Sonderangebote oder bestimmte Cross-Selling-Kampagnen verweisen. Außerdem wäre auch die Integration von Warenkorb-Abbrüchen hier an der richtigen Stelle untergebracht.

    • is_checkout()

Ihr möchtet etwas in den Kassenbereich eurer Website einfügen? Dann macht ihr das mit is_checkout(). Das macht z.B. Sinn, wenn ihr eure Zahlungsmittel oder den generellen Aufbau des Kassenbereiches anpassen wollt, ohne direkte Modifikationen am checkout-Template vorzunehmen (Thema: Updatesicherheit).

    • is_account_page()

Um den Nutzerkonten-Bereich auszubauen, ist es notwendig seine Erweiterungen in diesem Bereich unterbringen zu können. Mit is_account_page() könnt Ihr sicher gehen, dass alle eure Änderungen im gesamten Account-Bereich eurer Kunden wirken.

    • is_wc_endpoint()

WooCommerce selbst bietet einige Endpunkte, bei denen ihr bestimmte Aktionen ausführen lassen könnt, so z.B. die Meldung von durchgeführten Bestellungen an eine Warenwirtschaft oder ein externes Newsletter-System. Die konditionale Abfrage is_wc_endpoint() steht hierbei stellvertretend für alle Endpunkt-Abfragen. So gebt ihr als Parameter nur den notwendigen Endpunkt an z.B. is_wc_endpoint('order-received'). Eine vollständige Liste aller aktuellen Endpoints findet ihr unter hier

Fazit

Konditionale Abfragen sind neben dem Hook-System von WordPress und WooCommerce eine der mächtigsten Funktionalitäten in der Entwicklung von modernen und effizienten Online Shops & Websites. Richtig eingesetzt, beschleunigt es das System wesentlich. Die Verwendung ist denkbar einfach und benötigt nach der Lektüre dieses Artikels auch nicht zwingend einen Programmierer ;-).