Care sunt diferențele dintre WPINC și ABSPATH?
Este comun pentru dezvoltatorii de plugin-uri să își protejeze plugin-urile împotriva accesului direct. Am văzut două modalități de a face acest lucru:
if ( ! defined( 'WPINC' ) ) die;
și
if ( ! defined( 'ABSPATH' ) ) exit;
Care sunt diferențele dintre WPINC și ABSPATH? Care este modalitatea "corectă" de a face acest lucru?

Sunt definite după cum urmează:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
dirname
este o funcție PHP care returnează calea directorului părinte, iar wp-includes
este destul de explicativ.
Aș spune că ABSPATH
este mai bun pentru că este unul dintre primele lucruri pe care WordPress le încarcă și arată mai bine:) Dar nu există o cale "corectă" întrucât ambele funcționează.

Nu există o metodă cu adevărat corectă, iar eu folosesc întotdeauna if ( ! defined( 'ABSPATH' ) ) exit;
... dar, poate, ia în considerare că scopul acestui fragment de cod este să asiguri că WordPress este încărcat, 'WPINC' este mai bun deoarece este mai wordpressfull începând cu 'WP'.

if ( ! defined( 'WPINC' ) ) die;
și if ( ! defined( 'ABSPATH' ) ) exit;
adaugă un strat suplimentar de securitate prin prevenirea accesului direct la fișierul pluginului tău. ABSPATH
este o constantă PHP definită de WordPress în nucleul său.
Dacă fișierul pluginului este accesat din afara WordPress, constanta ABSPATH
sau WPINC
nu va fi definită, astfel încât se va ieși din codul pluginului, prevenind orice acces neautorizat la codul tău.
ABSPATH
și WPINC
sunt definite în nucleul WordPress astfel:
define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );
Ambele sunt utilizate în același scop.

Care sunt diferențele dintre WPINC și ABSPATH?
Poți verifica singur. Doar uită-te la wp-load.php
în oglinda WordPress pe GitHub.
Chiar și o scurtă privire va arăta că răspunsul selectat în prezent nu mai este corect în ceea ce privește modul în care este definit ABSPATH
. Și dacă compari diferite tag-uri pe GitHub, vei vedea că definiția ABSPATH
se schimbă de fapt în timp.
Care este metoda „corectă” de a face acest lucru?
Având în vedere că acestea sunt folosite pentru securitate, aș alege ABSPATH
. Raționamentul este că ABSPATH
nu este doar definit primul în bootstrapper-ul WP, WPINC
este definit sub o condiție în același fișier și, ca rezultat, este mai probabil să întâmpine o regresie în viitor.
De asemenea, deși nu a fost întrebat explicit, ai furnizat exemple folosind atât die
cât și exit
. Conform devdocs.io
, care se bazează pe documentația oficială API, die
este echivalent cu exit
, așa că poți alege oricare dintre cele două și nu va face nicio diferență.
Atât die
cât și exit
acceptă argumente, așa că ai putea lua în considerare utilizarea lor pentru a afișa informații utile, cum ar fi o versiune criptată sau informații de contact, în caz de eroare, sau pentru a transmite un cod de ieșire precum 0
sau -1
pentru procesare suplimentară.
De menționat este și faptul că wp_die
există și el. Nu trebuie confundat cu funcțiile PHP încorporate, dar le completează pentru utilizarea în afișarea HTML în plus față de text simplu și este utilizat în mod liber în întregul nucleu WordPress în prezent. Află mai multe despre wp_die
pe WordPress.org.

De asemenea, este bine de știut că nu există nicio diferență între die
și exit
.
Vezi: https://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php

În forma sa actuală, răspunsul tău este neclar. Te rugăm să [editezi] pentru a adăuga detalii suplimentare care să ajute pe alții să înțeleagă cum acest lucru răspunde la întrebarea pusă. Poți găsi mai multe informații despre cum să scrii răspunsuri bune în centrul de ajutor.

Acest lucru nu oferă un răspuns la întrebare. Odată ce vei avea suficiente reputație vei putea să comentezi orice postare; în schimb, oferă răspunsuri care nu necesită clarificări din partea celui care a întrebat. - Din Revizuire
