Come convertire il percorso del file in URL dello stesso file?
Come posso convertire un percorso del file system in un URL? Ho trovato alcune soluzioni PHP generiche che possono essere soggette a errori.
Esiste un modo specifico di WordPress per farlo?

Cosa intendi con o globale? Probabilmente sarebbe utile se aggiungessi una spiegazione su cosa fa il tuo codice, perché aiuta a risolvere il problema e come usarlo.

Scusa per essere stato troppo breve. Basta incollare la funzione sopra nel tuo codice (ad esempio functions.php) e poi puoi ottenere l'URL dello script dal file php così: $url = abs_path_to_url( dirname(__FILE__) . '/css/styles.css' );
assumendo che la cartella css con il file styles.css sia nella stessa cartella del tuo script.

qui globale significa che la funzione sopra funziona sia nei temi che nei plugin

Dipende da dove ti trovi nell'ambiente WordPress.
Plugin
Se sei in un plugin, puoi usare plugins_url
.
<?php
$url = plugins_url('css/admin.css', __FILE__);
Il codice sopra ti darà il percorso relativo al file passato come secondo argomento. Quindi se sei nel file principale del plugin potresti ottenere qualcosa come http://example.com/wp-content/plugins/tuo-plugin/css/admin.css
.
C'è anche plugin_dir_url
per ottenere l'URL di una directory. Uno schema abbastanza comune è definire una costante con l'URL del plugin nel file principale del plugin.
<?php
/** plugin name: esempio wpse216913 */
define('WPSE216913_PLUGINURL', plugin_dir_url(__FILE__));
// wp_enqueue_style('example', WPSE216913_PLUGINURL.'css/admin.css');
Temi
I temi, invece, dovrebbero usare get_template_directory_uri
o get_stylesheet_directory_uri
.
get_template_directory_uri
restituirà l'URI della directory del tema genitore se esiste un tema genitore. get_stylesheet_directory_uri
restituirà l'URI del tema figlio se esiste un tema figlio, altrimenti quello del tema genitore. Leggi il codex per maggiori informazioni sulle differenze. Il tema twenty fifteen ha alcuni esempi di come vengono utilizzati.
wp_enqueue_style(
'twentyfifteen-ie',
get_template_directory_uri().'/css/ie.css',
array('twentyfifteen-style'),
'20141010'
);
Upload
Usa wp_get_attachment_image_src
per le immagini caricate. Il valore restituito includerà anche la larghezza e l'altezza dell'immagine. Questo ti permette anche di specificare la dimensione desiderata.
Oppure c'è wp_get_attachment_url
per recuperare l'URL dell'allegato che è stato caricato. Se usato sulle immagini, restituirà l'URL dell'immagine originale.
Se hai bisogno dell'URL (o del percorso) della directory degli upload per fare qualcosa come un caricamento personalizzato o altro, puoi usare wp_upload_dir
che restituisce un array con tutte le informazioni di cui avrai bisogno.
print_r(wp_upload_dir())
/*
Array
(
[path] => /percorso/verso/wordpress/wp-content/uploads/2016/02
[url] => http://example.com/wp-content/uploads/2016/02
[subdir] => /2016/02
[basedir] => /percorso/verso/wordpress/wp-content/uploads
[baseurl] => http://example.com/wp-content/uploads
[error] => false
)
*/
Altre Funzioni Utili per gli URL
Tutte queste hanno la stessa firma, urlFunc($path, $scheme)
, e entrambi gli argomenti sono opzionali.
home_url
restituisce un percorso relativo alla home page del sito.
echo home_url('/example'); // http://example.com/example
site_url
restituisce un URL relativo a dove si trovano i file core di WordPress. Supponi di avere WordPress nella directory wp
...
echo site_url('/example'); // http://example.com/wp/example
admin_url
restituisce un URL relativo al percorso wp-admin
. Utile quando hai bisogno del percorso per admin-ajax.php
, ad esempio.
echo admin_url('admin-ajax.php'); // http://example.com/wp/wp-admin/admin-ajax.php
Ce ne sono alcune altre come content_url
e includes_url
che restituiscono rispettivamente i percorsi alle directory WP content e includes (o percorsi relativi ad esse).
