it-swarm.com.de

Was sind die Unterschiede zwischen WPINC und ABSPATH?

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?

32
Daniel

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.

18
Wyck

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.

3
P M Aagjal

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 dieexit , 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.

1
Josh Habdas