@toscho hat einen Kommentar zu dieser Antwort hinterlassen , über den ich noch einmal nachgedacht habe. Wie viel Vertrauen sollten wir in die globale Reichweite haben, insbesondere in Bezug auf die Post-Globals wie $post
?
Na und? Die globale Variable kann von jedem Benutzer überschrieben werden, bevor Ihre Prüfung ausgeführt wird. Das ist der Punkt globaler Variablen: globaler Zugriff.
$post
Zum Beispiel ist es sicherlich einer der Globals, der meistens entweder innerhalb des Themas selbst oder durch Plugins modifiziert wird. Es ist jedoch auch das weltweit am häufigsten in anderen Anwendungen innerhalb einer bestimmten Vorlage verwendete Verfahren, um beispielsweise verwandte Posts einzurichten.
Aus der Beantwortung (und Kommentierung) mehrerer Posts mit bestimmten Problemen, die durch die Verwendung benutzerdefinierter Abfragen verursacht wurden , geht hervor, dass die meisten Probleme darauf zurückzuführen sind, dass benutzerdefinierte Abfragen nicht zurückgesetzt werden (benutzerdefinierte Abfragen ändern die von der Hauptabfrage festgelegten globalen Werte).
Daraus ist ersichtlich, dass dies $post
nicht zuverlässig ist. Jeder schlecht geschriebene Code, der eine benutzerdefinierte Abfrage verwendet, kann den $post
globalen Code ändern , was wiederum zu Problemen führt (z. B. bei verwandten Posts).
Nur eine Handvoll von WordPress-Entwicklern kennt sich im Kern gut aus und weiß, was zu vermeiden ist und was nicht. Die größere Anzahl von Benutzern hat keine Ahnung, wie der WordPress-Kern funktioniert.
Sie laden einfach nur ein Thema herunter und installieren Plugins, um das zu tun, was benötigt wird, oder kopieren einfach den Code aus einem Tutorial. Angenommen, sie installieren ein schlecht geschriebenes Plugin, das ihre verwandten Posts auf ihren einzelnen Posts bricht. Woher wissen sie, was das verursacht hat? Werden sie in der Lage sein, das selbst zu klären, oder werden sie die hundertste Person sein, die eine E-Mail an den Autor des Themas über dieses Problem schreibt oder eine Frage auf dieser Website veröffentlicht?
Meine Frage: Wie können Sie sich vor solchen Problemen schützen, die durch anderen importierten Code verursacht werden, wenn ein globales Like $post
so unzuverlässig ist? Sollen wir überhaupt ein globales wie verwenden $post
? Was sind die Alternativen?
Bevor ich zum Schluss komme, möchte ich hier kurz meine Meinung mitteilen: Ich habe darüber nachgedacht (und in einigen Themen und Plugins auch darüber nachgedacht), ob wp_reset_postdata()
oder wp_reset_query()
bevor ich davon Gebrauch mache $post
, um sicherzustellen, dass die globale Abfrage auf die Hauptabfrage zurückgesetzt wird $post
. Aber warum sollte ich meinen Code in meinem Theme aufblasen, weil jemand anderes sein Plugin nicht richtig codiert hat? Und wenn jemand seine benutzerdefinierte Abfrage ordnungsgemäß zurückgesetzt hat, wird dieser Vorgang ein unnötiges zweites Mal ausgeführt, was nicht gut ist.
Die zweite Methode, die ich mir überlegt habe, ist, die $wp_query
Methoden von und zu verwenden, so etwas wie $wp_query->post
.
Alle Gedanken dazu werden geschätzt.