Quali sono le differenze tra WPINC e ABSPATH?


34

È comune per gli sviluppatori di plug-in proteggere i propri plug-in dall'accesso diretto. Ho visto due modi per farlo:

if ( ! defined( 'WPINC' ) ) die;

e

if ( ! defined( 'ABSPATH' ) ) exit;

Quali sono le differenze tra WPINC e ABSPATH? Qual è il modo "giusto" per farlo?

Risposte:


19

Sono definiti come segue:

define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );

dirnameè una funzione PHP che restituisce il percorso della directory principale ed wp-includesè piuttosto autoesplicativa.

Direi che ABSPATHè meglio perché è una delle prime cose che WP carica e ha anche un aspetto migliore :) Ma non esiste un vero "modo giusto" perché funzionano entrambi.


4
Non esiste un vero modo giusto, e io uso sempre if ( ! defined( 'ABSPATH' ) ) exit;... ma, forse, considera che lo scopo di questo frammento è garantire che il wordpress caricato "WPINC" sia migliore perché è più wordpressful che fissa con "WP".
gmazzap

4

if ( ! defined( 'WPINC' ) ) die;e if ( ! defined( 'ABSPATH' ) ) exit;aggiungi un ulteriore livello di sicurezza impedendo qualsiasi accesso diretto al tuo file plugin. ABSPATHè una costante PHP definita da WordPress nel suo nucleo.

Se si accede al file del plug-in dall'esterno di WordPress, la costante ABSPATHo WPINCnon verrà definita, quindi esce dal codice del plug-in, impedendo qualsiasi accesso non autorizzato al codice.

ABSPATHe WPINCsono definiti nel core di WordPress come:

define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );

Entrambi sono usati per lo stesso scopo.


1

Quali sono le differenze tra WPINC e ABSPATH?

Puoi controllare te stesso. Basta osservarewp-load.php sullo specchio WordPress su GitHub.

Anche una rapida occhiata mostrerà che la risposta attualmente selezionata non è più corretta su come ABSPATHviene definita. E se confronti diversi tag su GitHub vedrai che la ABSPATHdefinizione cambia nel tempo.

Qual è il modo "giusto" per farlo?

Dato che questi sono usati per la sicurezza, vorrei andare ABSPATH. Essendo la logica che ABSPATHnon solo viene definita per prima nel bootstrapper WP, WPINCviene definita in base a una condizione nello stesso file e, di conseguenza, è più probabile che si verifichi una regressione futura.

Inoltre, sebbene non esplicitamente richiesto, hai fornito esempi usando sia diee exit. Secondo devdocs.io, che si basa sulla documentazione ufficiale dell'API, dieequivale a exit, quindi puoi scegliere uno dei due e non farà differenza.

Entrambi diee exitaccettano argomenti, quindi potresti considerare di usarli per produrre alcune informazioni utili, come un tag di versione crittografato o le informazioni di contatto, al momento della sospensione o passare un codice di uscita come 0o -1per un'ulteriore elaborazione.

Vale anche la pena notare che anche questa wp_dieè una cosa. Da non confondere con gli built-in di PHP, ma li complimenta per l'uso nell'output di HTML oltre al testo normale e attualmente viene utilizzato liberamente in tutto il core di WordPress. Ulteriori informazioniwp_die su WordPress.org.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.