Utilizzo di require_once in un Plugin?
Qual è la differenza tra questi due frammenti di codice e quale dovrei usare per un plugin WordPress?
// Utilizza il percorso assoluto del file relativo alla posizione dello script corrente
require_once(dirname(__FILE__).'/inc/canagan_admin_functions.php');
// Utilizza un percorso relativo che potrebbe non funzionare in tutti i contesti
require_once( '/inc/canagan_admin_functions.php' );

Il primo è come dire...
Includi il file presente nella directory
inc
, sopra la directory dove si trova questo file.
La seconda affermazione sta dicendo...
nella root del server (
/
) cerca nella cartellainc
il filecanagan_admin_functions.php
e includilo.
Il primo funzionerà, il secondo no. Nel secondo stai cercando nella root dell'intero filesystem, dove il tuo file sicuramente non sarà.
Come nota a margine, ogni volta che inizio un plugin che si svilupperà su più file e/o caricherà file CSS o JS, di solito imposto alcune costanti per semplificarmi il lavoro. Ecco un esempio.
<?php
define( 'CD_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
define( 'CD_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
plugin_dir_path
e plugin_dir_url
sono utili perché restituiscono sempre percorsi/URL con slash finali.
Poi per includere/richiedere file, uso le costanti. Evita di dover chiamare dirname(__FILE__)
su ogni include.
Puoi quindi usare le costanti per includere file...
require_once( CD_PLUGIN_PATH . 'path/to/file.php' );
o per caricare script/stili...
<?php
add_action( 'wp_enqueue_scripts', 'wpse35088_enqueue' );
function wpse35088_enqueue()
{
wp_enqueue_script( 'wpse35088-script', CD_PLUGIN_URL . 'path/to/script.js' );
}
