Odpowiedzi:
Są one zdefiniowane w następujący sposób:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
dirname
jest funkcją PHP, która zwraca ścieżkę do katalogu nadrzędnego i wp-includes
jest dość oczywista.
Powiedziałbym, że ABSPATH
jest lepiej, ponieważ jest to jedna z pierwszych rzeczy, które WP ładuje, a także wygląda lepiej :) Ale nie ma prawdziwej „właściwej drogi”, ponieważ obie działają.
if ( ! defined( 'WPINC' ) ) die;
i if ( ! defined( 'ABSPATH' ) ) exit;
dodaj dodatkową warstwę bezpieczeństwa, uniemożliwiając bezpośredni dostęp do pliku wtyczki. ABSPATH
jest stałą PHP zdefiniowaną przez WordPress w jej rdzeniu.
Jeśli dostęp do pliku wtyczki jest uzyskiwany spoza WordPress, stała ABSPATH
lub WPINC
nie zostanie zdefiniowana, więc wychodzi z kodu wtyczki, zapobiegając nieautoryzowanemu dostępowi do twojego kodu.
ABSPATH
i WPINC
są zdefiniowane w rdzeniu WordPress jako:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
Oba są używane w tym samym celu.
Jakie są różnice między WPINC a ABSPATH?
Możesz się sprawdzić. Wystarczy spojrzećwp-load.php
na lustro WordPress na GitHub.
Nawet szybki rzut oka pokaże, że aktualnie wybrana odpowiedź nie jest już poprawna w zakresie ABSPATH
definicji. A jeśli porównasz różne tagi w GitHub, zobaczysz, że ABSPATH
definicja zmienia się z czasem.
Który jest „właściwym” sposobem na zrobienie tego?
Biorąc pod uwagę, że są one używane dla bezpieczeństwa, wybrałbym ABSPATH
. Uzasadnienie ABSPATH
jest nie tylko zdefiniowane jako pierwsze w bootstraperze WP, ale WPINC
również w tym samym pliku jest zdefiniowane warunkowo, w wyniku czego istnieje większe prawdopodobieństwo regresji w przyszłości.
Ponadto, chociaż nie zostało to wyraźnie zadane, podałeś przykłady, używając zarówno die
i exit
. Według devdocs.io
, która opiera się na oficjalnej dokumentacji API, die
jest równoważna exit
, więc możesz wybrać jedno z dwóch i to nie robi różnicy.
Zarówno die
i exit
przyjąć argumenty, więc można rozważyć użycie ich do produkcji kilka przydatnych informacji, takich jak informacje o wersji zaszyfrowanej zmiennej lub kontaktów na Abend, lub przekazać kod wyjścia, takich jak 0
lub -1
do dalszego przetwarzania.
Warto również zauważyć, że wp_die
to też jest rzecz. Nie należy mylić ich z wbudowanymi PHP, ale komplementuje je do wykorzystania w wyprowadzaniu HTML oprócz zwykłego tekstu i jest obecnie używany swobodnie w całym rdzeniu WordPress. Dowiedz się więcej owp_die
na WordPress.org.
if ( ! defined( 'ABSPATH' ) ) exit;
... ale, być może, uważają, że zakres tego fragmentu jest upewnić się, że WordPress jest załadowany „WPINC” jest lepszy, bo jest bardziej wordpressfull Staring „WP”.