C’è una differenza sostanziale tra percorsi ed URL quando si parla di plugin e più in generale di tutto ciò che ha a che fare con WordPress.
Un percorso (path) fa riferimento al file system del server che ospita WordPress, mentre un URL fa riferimento al protocollo HTTP e al dominio su cui risiedono i file.
Quindi /home/nomeutente/sito.com/public_html/wp-content/plugins/my_plugin
è un percorso, mentre http://sito.com/wp-content/plugins/my_plugin/
è un URL.
I percorsi vengono usati per includere i file PHP, mentre gli URL per includere i file CSS, JavaScript e le immagini.
WordPress gestisce i percorsi tramite la funzione plugin_dir_path() che restituisce il percorso alla directory del plugin compreso lo slash finale.
Quindi nel file principale del plugin possiamo scrivere:
define( 'MY_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
// /home/nomeutente/sito.com/public_html/wp-content/plugins/my_plugin/
E quindi includere i file PHP in questo modo:
require_once( MY_PLUGIN_PATH . 'framework/MyClass.php' );
Al contrario la funzione plugin_dir_url() restituisce l’URL assoluto alla directory principale del plugin compreso lo slash finale.
Quindi nel file principale del plugin possiamo scrivere:
define( 'MY_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
// http://sito.com/wp-content/plugins/my_plugin/
E quindi usare l’URL in questo modo:
wp_register_script( 'my', MY_PLUGIN_URL . 'js/my.js', array( 'jquery' ), '1.0', true );
Da segnalare anche la funzione plugins_url() che ha uno scopo identico anche se con parametri diversi.
Ricordate che tutte queste funzioni si basano sul file o sulla directory passata come parametro per restituire il percorso o l’URL corretto. In PHP __FILE__
fa riferimento al file corrente in cui viene invocato. Quindi usarlo in my_plugin/my_plugin.php
e in my_plugin/framework/MyClass.php
restituirà due valori distinti poiché i file non si trovano nella stessa directory.