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? Welches ist der 'richtige' Weg, dies zu tun?
Sie sind wie folgt definiert:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
dirname
ist eine PHP -Funktion, 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 wirklichen "richtigen Weg", weil beide funktionieren.
if ( ! defined( 'WPINC' ) ) die;
und if ( ! defined( 'ABSPATH' ) ) exit;
fügen eine zusätzliche Sicherheitsebene hinzu, indem sie den direkten Zugriff auf Ihre Plug-in-Datei verhindern. ABSPATH
ist eine PHP Konstante, die von WordPress in ihrem Kern definiert wird.
Wenn auf Ihre Plugin-Datei von außerhalb von WordPress zugegriffen wird, wird die Konstante ABSPATH
oder WPINC
nicht definiert, sodass der Plugin-Code beendet wird und ein unbefugter Zugriff auf Ihren Code verhindert wird.
ABSPATH
und WPINC
sind in WordPress Core wie folgt definiert:
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 von GitHub an.
Selbst ein kurzer Blick zeigt, dass die aktuell ausgewählte Antwort hinsichtlich der Definition von ABSPATH
nicht mehr korrekt ist. Und wenn Sie verschiedene Tags auf GitHub vergleichen, werden Sie feststellen, dass sich die Definition von ABSPATH
im Laufe der Zeit tatsächlich ändert.
Welches ist der 'richtige' Weg, dies zu tun?
Aus Sicherheitsgründen würde ich ABSPATH
wählen. Der Grund dafür ist, dass ABSPATH
nicht nur zuerst im WP-Bootstrapper definiert wird, WPINC
wird unter einer Bedingung in derselben Datei definiert und infolgedessen wahrscheinlich eine zukünftige Regression erfährt.
Auch wenn Sie nicht ausdrücklich dazu aufgefordert wurden, haben Sie Beispiele angegeben, die sowohl die
als auch exit
verwenden. Gemäß devdocs.io
, der sich auf die offizielle API-Dokumentation stützt, entspricht die
exit
, sodass Sie eine der beiden Optionen auswählen können und es keinen Unterschied macht.
Sowohl die
als auch exit
akzeptieren Argumente, sodass Sie in Betracht ziehen können, sie zum Ausgeben einiger nützlicher Informationen zu verwenden, z. B. eines verschlüsselten Versions-Tags oder von Kontaktinformationen, oder einen Beendigungscode wie 0
oder -1
für die weitere Verarbeitung zu übergeben.
Erwähnenswert ist auch, dass wp_die
ebenfalls eine Sache ist. Nicht zu verwechseln mit den PHP -Einbauten, sondern als Kompliment für die Ausgabe von HTML zusätzlich zu einfachem Text und wird derzeit im gesamten WordPress-Kern großzügig verwendet. Erfahren Sie mehr über wp_die
auf WordPress.org.