So verwenden Sie bedingte Tags in WordPress

Veröffentlicht: 2020-06-09

Eines der Dinge, die ich an WordPress am meisten mag, ist, dass es viele Funktionen enthält, die unsere Arbeit als Entwickler erheblich vereinfachen. Betrachten Sie beispielsweise Funktionen wie esc_attr , die Text maskiert, damit er sicher in ein HTML-Tag-Attribut eingefügt werden kann, oder esc_html , die Text maskiert, damit er sicher in eine HTML-Seite eingefügt werden kann. Oder werfen Sie einen Blick auf einige der Funktionen, die wir benötigen, um die Daten zu bereinigen, die wir von einem Benutzer erhalten: sanitize_text_field , sanitize_textarea_field oder sanitize_email . Sie gewöhnen sich so an diese wohldefinierten Funktionen, dass Sie sie wirklich vermissen, wenn Sie etwas außerhalb des WordPress-Bereichs entwickeln müssen und feststellen, dass sie nicht mehr verfügbar sind!

Die Sammlung an Funktionen, die uns beim Entwickeln auf WordPress zur Verfügung stehen, ist unglaublich groß. Und je vertrauter wir mit ihnen sind, desto einfacher ist es, qualitativ hochwertigen Code zu schreiben.

Heute möchte ich Ihnen etwas über bedingte Tags in WordPress erzählen: was sie sind, wie man sie verwendet, was an ihnen irreführend sein kann und warum sie so nützlich sind. Wenn Sie ein Plugin- oder Theme-Entwickler sind und diese noch nicht kennen, verpassen Sie diesen Beitrag nicht.

Was sind die bedingten Tags von WordPress?

Bedingte Tags sind in WordPress definierte Funktionen, deren Ergebnis ein boolescher Wert ist (also entweder true oder false ). Dies sind Funktionen, die wir sowohl in unseren Plugins als auch in unseren Themes verwenden können, um bedingte Entscheidungen basierend auf dem Inhalt zu treffen, den wir rendern möchten.

Was Bedingungs-Tags großartig macht, ist, dass ihre Namen im Allgemeinen selbsterklärend sind und zu Code führen, der sehr einfach zu verstehen ist. Wenn Sie beispielsweise das bedingte Tag is_sticky in Ihrem Plugin verwenden, wird es eindeutig true zurückgeben, wenn wir innerhalb der WordPress-Schleife einen Sticky -Post verarbeiten. Kein Zweifel an seiner Semantik, oder?

Bevor wir mit ein paar Beispielen beginnen, bedenke bitte, dass bedingte Tags erst verfügbar sind, wenn WordPress festgestellt hat, welche Inhalte der Besucher angefordert hat. Wenn wir vorher versuchen, sie zu verwenden, wird ihr Ergebnis immer false sein. Mit anderen Worten, wir können sie erst verwenden, nachdem die Aktion posts_selection ausgeführt wurde.

Die häufigsten bedingten Tags

Die meisten bedingten Tags in WordPress beginnen mit is_ , da die Antwort auf eine Frage wie „ist blah blah?“ ist ein boolescher Wert: entweder „ja“ oder „nein“. Aber leider wird dieses Kriterium nicht immer eingehalten (wie wir weiter unten sehen werden).

Es gibt viele bedingte Tags in WordPress, mit denen Sie sich bei Bedarf vertraut machen werden. Aber es gibt einige, die sehr häufig vorkommen, und je früher Sie sie kennenlernen, desto besser. Schauen wir uns diese also genauer an:

  • is_single . Es prüft, ob das aktuelle Element ein WordPress-Beitrag oder eine Instanz eines anderen benutzerdefinierten Beitragstyps ist (wie beispielsweise ein WooCommerce- Produkt ).
  • is_page . Es prüft, ob das aktuelle Element eine WordPress-Seite ist.
  • is_attachment . Es prüft, ob das aktuelle Element ein Anhang ist. Anhänge sind die Dateien, die Sie in Ihre Medienbibliothek hochladen, z. B. Bilder, Videos, Dateien usw.
  • is_singular . Es prüft, ob eine der drei vorherigen Funktionen true ist. Das heißt, es prüft, ob das aktuelle Element ein Beitrag, eine Seite, ein Anhang oder ein anderer Beitragstyp ist.
  • comments_open . Es gibt true zurück, wenn Besucher das aktuelle Element kommentieren können. Sehen? Hier haben Sie ein Beispiel, bei dem das bedingte Tag nicht mit is_ .
  • is_category . Es prüft, ob wir gerade eine Archivseite einer Kategorie betrachten.
  • in_category . Es gibt true zurück, wenn sich der aktuelle Beitrag in der angegebenen Kategorie befindet.
  • is_tag . Es überprüft, ob wir gerade eine Tag-Archivseite betrachten.
  • has_tag . Es prüft, ob der aktuelle Beitrag mit dem angegebenen Tag getaggt ist.
  • is_main_query . Es prüft, ob wir uns in der Hauptschleife von WordPress befinden.

Wussten Sie, dass es bedingte Tags gibt, die irreführend sein können?

Es gibt einige Fälle, in denen bedingte Tags Namen haben, die zu Verwirrung führen können, da das, was sie auszuwerten scheinen , und das, was sie tatsächlich auswerten , unterschiedliche Dinge sind:

  • is_admin . Sie denken vielleicht, dass diese Funktion prüft, ob der aktuelle Benutzer ein Administrator ist, richtig? Falsch! Es prüft, ob wir uns auf einer Seite innerhalb des WordPress-Dashboards (und dann wäre das Ergebnis true ) oder im Frontend (d. h. false ) befinden.
  • is_home . Früher dachte ich, dass diese Funktion überprüft, ob die aktuelle Seite Ihre Homepage ist. Auf unserer Website wäre dies beispielsweise https://neliosoftware.com . Aber leider ist das nicht der Fall. WordPress wurde als Blogging-Plattform geboren und ich denke, dies ist ein Beispiel für einen „Legacy-Code“. is_home ist eine bedingte Funktion, die überprüft, ob die aktuelle Seite Ihre Blog -Seite ist. Wenn Sie also beispielsweise das Standard-Setup von WordPress verwenden, gibt is_home tatsächlich true zurück, wenn sich ein Besucher auf der Startseite ( https://yourweb.com ) befindet, da diese Seite Ihre neuesten Blog-Posts anzeigt. Wenn Sie Ihre Blog-Seite jedoch auf etwas anderes einstellen (z. B. https://yourweb.com/blog ), ist is_home true wenn der Besucher https://yourweb.com/blog anfordert, und andernfalls false .
  • is_front_page . Und dies ist das bedingte Tag, das Sie darüber informiert, wenn sich der Besucher auf der „Startseite“ befindet.
  • is_dynamic_sidebar . Diese Funktion prüft, ob Ihr Design über eine oder mehrere Widget-Seitenleisten verfügt, und gibt in diesem Fall „ true “ zurück, wenn mindestens eine dieser Seitenleisten nicht leer ist.

Bedingte Tags parametrisieren

Obwohl die meisten bedingten Tags Funktionen sind, die ohne Parameter aufgerufen werden können, unterstützen viele von ihnen Parameter. Wenn wir sie verwenden, können wir genauer sagen, welche Kriterien der aktuelle Beitrag erfüllen sollte. Und sie tun dies auf eine ziemlich logische Weise.

Abhängig von der spezifischen Funktion, die wir verwenden, möchten wir möglicherweise überprüfen, ob das aktuelle Element eine bestimmte ID oder einen bestimmten Slug hat, ob es sich um eine Instanz eines bestimmten Beitragstyps handelt oder ob es sogar einen bestimmten Titel hat. Zum Beispiel:

  • is_singular( 'product' ) prüft, ob das aktuelle Element ein Produkt ist.
  • is_page( 'Contact Us' ) überprüft, ob der Titel der aktuellen Seite „Contact Us“ lautet. Diese Funktion akzeptiert verschiedene Arten von Argumenten und überprüft, je nachdem, was Sie angeben, das eine oder das andere. Sie können beispielsweise überprüfen, ob das aktuelle Element eine bestimmte ID oder einen bestimmten Titel oder Slug hat. Ziemlich ordentlich, oder? Sie können sogar Listen als Parameter verwenden!
  • is_single( [ 5, 10, 11 ] ) prüft, ob die ID des aktuellen Elements entweder 5, 10 oder 11 ist. Es ist ziemlich ähnlich zu is_page , aber, wie wir bereits gesagt haben, funktioniert es für andere Posts als page.

So verwenden Sie bedingte Tags

Werfen wir einen Blick auf ein paar Beispiele, bei denen bedingte Tags nützlich sein könnten.

Anpassen von Vorlagen

Wie Sie wahrscheinlich vorausgesehen haben, sind bedingte Tags in Themen offensichtlich nützlich. Wenn Sie möchten, dass das Thema die eine oder andere Information anzeigt, abhängig von der Art des angezeigten Inhalts zu einem bestimmten Zeitpunkt (und das möchten wir oft tun), sind bedingte Tags Ihre Verbündeten:

 <?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...

Auf diese Weise können Sie dieselbe Vorlage für verschiedene Arten von Inhalten verwenden und jede von ihnen mit bedingten Tags anpassen.

Bedingtes Einreihen von Assets

Bedingte Tags sind jedoch auch für Plugin-Entwickler äußerst nützlich. Insbesondere helfen sie uns, Teile unseres Plugins bedingt zu laden, abhängig von den Ergebnissen, die wir von bedingten Tags erhalten.

Stellen Sie sich zum Beispiel vor, wir entwickeln ein Plugin, das unseren Blog-Beiträgen eine Art Funktionalität hinzufügt. Angenommen, diese Funktionalität erfordert, dass wir ein Skript und ein Stylesheet in das Front-End einreihen. Um Skripte und Stile in WordPress einzureihen, haben wir einen Filter namens wp_enqueue_scripts :

 function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

Das Problem mit dem vorherigen Snippet besteht darin, dass es unsere Assets immer in die Warteschlange einreiht, unabhängig davon, was der Besucher angefordert hat. Immer wenn wp_enqueue_scripts (und dies bei jeder Front-End-Anfrage), wird unsere Callback-Funktion aufgerufen und unser Skript und Stylesheet werden hinzugefügt. Aber wir sagten, dass unsere Funktion nur Blog-Posts betrifft, also … müssen wir diese Assets wirklich immer in die Warteschlange stellen? Natürlich nicht! Und wir können dies verbessern, indem wir das entsprechende bedingte Tag verwenden:

 function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

Zusammenfassend

Mit den bedingten Tags von WordPress können wir verschiedene Kriterien unserer Inhalte testen und so anpassen, was auf dieser Grundlage passieren wird. Trotz ihrer extremen Einfachheit sind sie sehr nützliche Funktionen, die unseren Code verständlicher und effizienter machen.

Ich hoffe, Sie haben heute etwas gelernt, und wenn Sie Fragen oder Kommentare haben, teilen Sie uns dies bitte im Kommentarbereich unten mit.

Beitragsbild von Justin Luebke auf Unsplash.