Es ist üblich, dass Plugin-Entwickler ihre Plugins vor direktem Zugriff schützen. Ich sah zwei Möglichkeiten, das zu tun:
if ( ! defined( 'WPINC' ) ) die;
und
if ( ! defined( 'ABSPATH' ) ) exit;
Was sind die Unterschiede zwischen WPINC und ABSPATH? Welcher ist der richtige Weg?
Sie sind wie folgt definiert:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' ); define( 'WPINC', 'wp-includes' );
dirname
ist eine PHP-function, die den Pfad des übergeordneten Verzeichnisses zurückgibt, und wp-includes
ist ziemlich selbsterklärend.
Ich würde sagen, ABSPATH
ist besser, weil es eines der ersten Dinge ist, die WP lädt und es sieht auch besser aus 🙂 Aber es gibt keinen richtigen “richtigen Weg”, weil beide funktionieren.
if ( ! defined( 'WPINC' ) ) die;
und if ( ! defined( 'ABSPATH' ) ) exit;
Fügen Sie eine zusätzliche Sicherheitsebene hinzu, indem Sie direkten Zugriff auf Ihre Plugin-Datei verhindern. ABSPATH
ist eine PHP-Konstante, die im core von WordPress definiert wird.
Wenn auf Ihre Plugin-Datei von außerhalb von WordPress WPINC
wird, wird die Konstante ABSPATH
oder WPINC
nicht definiert, sodass der WPINC
in-Code beendet wird und nicht autorisierter Zugriff auf Ihren Code verhindert wird.
ABSPATH
und WPINC
sind im WordPress-core definiert als:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' ); define( 'WPINC', 'wp-includes' );
Beide werden für den gleichen Zweck verwendet.
Was sind die Unterschiede zwischen WPINC und ABSPATH?
Sie können sich selbst überprüfen. Schauen Sie sich einfach wp-load.php
auf dem WordPress-Spiegel auf GitHub an.
Schon ein kurzer Blick zeigt, dass die aktuell ausgewählte Antwort nicht mehr korrekt ist, wie ABSPATH
definiert ist. Und wenn Sie verschiedene Tags auf GitHub vergleichen, sehen Sie, dass sich die ABSPATH
Definition im Laufe der Zeit ändert.
Welcher ist der richtige Weg?
Wenn diese für die Sicherheit verwendet werden, würde ich für ABSPATH
gehen. ABSPATH
nicht nur im WP-Bootstrapper WPINC
definiert wird, wird WPINC
unter einer Bedingung in derselben Datei definiert, und es ist daher wahrscheinlicher, dass eine zukünftige Regression WPINC
.
Auch wenn Sie nicht explizit gefragt werden, haben Sie Beispiele bereitgestellt, die sowohl die
als auch exit
. Laut devdocs.io
, das auf der offiziellen API-Dokumentation devdocs.io
, ist die devdocs.io
gleichbedeutend mit ” exit
. Sie können also eines der beiden auswählen und es wird keinen Unterschied machen.
Sowohl die
Argumente ” die
als auch ” exit
akzeptieren Argumente, sodass Sie diese verwenden können, um nach dem Abbruch einige nützliche Informationen wie ein verschlüsseltes Versions-Tag oder Kontaktinformationen auszugeben oder einen Exit-Code wie 0
oder -1
zur weiteren Verarbeitung zu übergeben.
Bemerkenswert ist auch, dass wp_die
eine Sache ist. Nicht zu verwechseln mit den PHP-Einbauten, sondern ergänzt sie für die Ausgabe von HTML zusätzlich zum Klartext und wird derzeit im ganzen WordPress-core großzügig verwendet. Erfahren Sie mehr über wp_die
auf WordPress.org.