Utilizzo di require_once in un Plugin?

30 nov 2011, 04:07:12
Visualizzazioni: 19.2K
Voti: 5

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' );
1
Commenti

Il primo, perché il secondo non funzionerà.

Otto Otto
30 nov 2011 04:12:33
Tutte le risposte alla domanda 1
0
11

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 cartella inc il file canagan_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' );
}
30 nov 2011 04:30:36