Quando sviluppi un tema o un plugin, troverai spesso che devi includere un URL nel tuo codice. Ad esempio, in un plug-in potrebbe essere necessario un collegamento a un foglio di stile in bundle con il plug-in, mentre in un tema probabilmente si desidera codificare l'URL del sito nell'intestazione.
Potrebbe essere tentato di codificare semplicemente l'URL nello stesso modo in cui lo si potrebbe trovare in un sito statico, ma è una cattiva idea. In questo tutorial spiegherò perché non dovresti farlo e mostrarti le funzioni che puoi utilizzare per creare gli URL in modo dinamico.
Iniziamo con i temi. Se stai sviluppando un tema da utilizzare su un sito specifico, potrebbe non sembrare troppo dannoso aggiungere da qualche parte il dominio del sito nei file del tema, ma ci sono alcuni rischi e svantaggi:
Quindi non farlo!
Ma per quanto riguarda i plugin? Bene, questo è ancora più rischioso. Non è raro sviluppare un tema solo per un sito, ma la maggior parte dei plugin verrà utilizzata su più siti. È improbabile che tu possa mai codificare un URL completo in un plug-in, ma potresti essere tentato di utilizzare una funzione per recuperare l'URL del sito e quindi codificare il percorso della directory del plug-in. Di nuovo, questo è rischioso:
Ciò potrebbe comportare il tuo plugin semplicemente non funziona affatto.
Quindi, cosa fai per evitare gli URL hard-coding in WordPress?
Ci sono una varietà di funzioni che usi per evitare gli URL hard-coding in WordPress. Li dividerò in cinque categorie:
Iniziamo con le funzioni per recuperare e generare un collegamento alla home page.
I seguenti tag di modello recuperano o restituiscono l'URL della home page per il tuo sito:
bloginfo ('url')
: visualizza l'home URL come specificato nelle impostazioni di lettura nell'amministratore.get_bloginfo ('url')
: recupera l'URL del sito senza visualizzarlo.HOME_URL ()
: recupera l'URL della home page senza visualizzarlo: use echo esc_url (home_url ('/'));
per visualizzare l'URL principale con una barra finale. Questo richiede due parametri opzionali: $ path
se si desidera aggiungere un percorso a una pagina specifica o aggiungere una barra finale, e schema di $
per specificare lo schema per l'URL, ad esempio http
, https
e parente
.get_home_url ()
recupera l'URL per la pagina iniziale e supporta Multisite: è possibile includere l'ID del blog come parametro.indirizzo del sito()
: l'URL in cui è stato salvato WordPress, quindi se l'installazione di WordPress si trova nella sottodirectory wordpress, questo recupererà l'URL http://mysite.com/wordpress
. get_site_url ()
: Recupera l'URL del sito senza emetterlo. Può anche essere utilizzato con parametri per generare l'URL di un sito in una rete multisito, aggiungere un percorso e utilizzare uno schema specifico.network_home_url ()
: l'home URL per il sito principale in una rete Multisito, utile se si desidera includere un collegamento al sito principale nel footer di ciascun sito sulla rete, ad esempio.network_site_url ()
: l'URL del sito per il sito principale in una rete multisito.Come puoi vedere, ci sono alcuni tag diversi che puoi usare per visualizzare l'URL. Che usi dipenderà da un numero di attori:
Si dovrebbe usare uno di questi nei file del modello del tema in cui si desidera inserire un collegamento alla home page, ad esempio se un logo nella testa del sito collega alla home page. Potrebbero esserci anche casi in cui un plugin dovrà recuperare o visualizzare l'URL della home page.
Oltre all'URL della pagina iniziale, potrebbero esserci delle volte in cui desideri codificare i collegamenti ad altre pagine del tuo sito. Ciò includerà pagine, post, allegati e tipi di post personalizzati. Ecco le funzioni che dovresti usare:
post_permalink ()
genera un collegamento a un post, con l'ID del post come parametro.get_page_link ()
recupera (ma non emette) il collegamento a una pagina, con l'ID della pagina come parametro.get_permalink ()
recupera (ma non emette) il permalink per un post o una pagina, con l'ID del post o della pagina come parametro.get_category_link ()
recupera il collegamento a un archivio di categorie, con l'ID della categoria come parametro.get_tag_link ()
recupera il link alla pagina di archivio di un tag, con l'ID del tag come parametro.get_post_type_archive_link ()
recupera il collegamento all'archivio di un tipo di post, con il tipo di post come parametro.get_term_link ()
recupera il collegamento a un termine di tassonomia, con il termine e la tassonomia come parametri.the_attachment_link ()
genera il collegamento a un allegato, con l'ID allegato come primo parametro. Usa altri parametri per definire la dimensione dell'immagine e se il link porterà al file stesso o alla sua pagina di allegato.get_attachment_link ()
recupera il collegamento per un allegato, con l'ID allegato come parametro.wp_get_attachment_link ()
inoltre recupera il collegamento a un allegato, ma in aggiunta consente di visualizzare l'immagine se l'allegato è un'immagine, in base alla dimensione specificata.get_search_link ()
recupera il link alla pagina di ricerca. È possibile definire una query come parametro o lasciarla vuota, nel qual caso utilizzerà la query corrente.Se stai creando un plugin o un tema con le schermate delle impostazioni nell'amministratore di WordPress, o stai personalizzando le schermate di amministrazione, potresti voler aggiungere dei link alle schermate di amministrazione. Anche in questo caso, non è necessario codificare a fondo gli URL, ma utilizzare uno di questi tag:
ADMIN_URL ()
recupera (ma non emette) un URL nell'admin. È necessario includere il percorso dell'URL come parametro e, se necessario, includere lo schema. Quindi, ad esempio, per generare l'URL per lo schermo per creare un nuovo post, useresti echo admin_url ('post-new.php');
.get_admin_url ()
è simile a ADMIN_URL ()
ma supporta reti multisito: è possibile includere l'ID del blog come parametro.edit_post_link ()
visualizza un collegamento alla pagina di modifica per un post. Può essere usato nel loop o fuori dal ciclo con l'ID del post come parametro.get_edit_post_link ()
recupera il collegamento alla schermata di modifica di un post, con l'ID del post come parametro.Proprio come quando stai codificando gli URL nelle schermate front-end o di amministrazione, dovresti anche codificare correttamente URL e percorsi quando fai riferimento ai file nel tuo plugin o nelle cartelle dei temi.
Innanzitutto, ecco le funzioni che dovresti usare nei file del tema:
get_stylesheet_directory ()
recupera il percorso completo del server (non l'URL) per la directory del tema attualmente attivato. Usalo per chiamare i file include piuttosto che per i link di output.get_stylesheet_directory_uri ()
recupera l'URL per il tema attualmente attivato, senza una barra finale. Usalo nei file di modello per recuperare le risorse memorizzate nella cartella del tema: ad esempio, per visualizzare un'immagine memorizzata nella cartella delle immagini del tema, usa
.get_bloginfo ('stylesheet_directory')
recupera l'URL per il tema attualmente attivato: utilizzando get_stylesheet_directory_uri ()
è più ordinato.get_template_directory_uri ()
è simile a get_stylesheet_directory_uri ()
ma se stai usando un tema figlio, recupera l'URL per il tema principale. allo stesso modo, get_template_directory ()
funziona allo stesso modo di get_stylesheet_directory ()
ma per il tema genitore.Ci sono anche funzioni per l'uso nei file plugin:
plugins_url ()
recupera l'URL assoluto della directory dei plug-in (senza una barra finale). Sono necessari due parametri opzionali: il percorso da aggiungere dopo l'URL e il plug-in al quale si desidera che l'URL sia relativo.plugin_dir_url ()
recupera l'URL per la directory in cui si trova un file (con una barra finale), con quel file come parametro. Normalmente lo useresti __FILE__
come parametro per indicare il file corrente.Ecco un esempio di ciascuno di questi. In primo luogo, per recuperare l'URL di un file nella directory include del plugin corrente:
plugins_url ('includes / myfile.php', __FILE__);
E per recuperare lo stesso URL usando plugin_dir_url ()
:
plugin_dir_url (__FILE__). 'include / myfile.php';
Nota che con il secondo esempio devi echo il percorso dopo la funzione: preferisco il primo in quanto è più ordinato. Non dimenticare che il secondo restituisce una barra finale e la prima no.
Non devi mai codificare i collegamenti a fogli di stile e script nei tuoi file modello o plug-in: usa invece una funzione e collegala al gancio corretto. Questo evita problemi con i file che vengono spostati, garantisce che stai usando gli script corretti senza duplicazione ed è anche più efficiente.
Per chiamare un foglio di stile, utilizzare wp_register_style ()
e wp_enqueue_style ()
in una funzione e agganciarlo al wp_enqueue_scripts
gancio. La funzione seguente farebbe questo in un plugin:
Nota che ho usato __FILE__
sopra, che indica a WordPress che il percorso del foglio di stile è relativo al file corrente.
Chiamare uno script è simile, ma usa wp_register_script ()
e wp_enqueue_script ()
nella tua funzione, e li attacca al wp_enqueue_scripts
gancio. L'esempio seguente registra un nuovo script e lo chiama:
function register_my_scripts () wp_register_script ('my_script', plugins_url ('/js/script.js', __FILE__)); wp_enqueue_script ('my_script'); add_action ('wp_enqueue_scripts', 'register_my_scripts');
Se il tuo script usa uno script in bundle con WordPress, come jQuery, non è necessario registrarlo; basta accodarlo come segue:
function register_my_scripts () wp_enqueue_script ('my_script', plugins_url ('/js/script.js', __FILE__), 'jquery',, 'true'); add_action ('wp_enqueue_scripts', 'register_my_scripts');
Maggiori informazioni su wp_enqueue_scripts
aggancio in questo tutorial sull'inclusione di JavaScript e CSS nei temi e nei plugin.
Spero di averti convinto che gli URL hard-coding in WordPress sono una cattiva idea: possono portare a tutti i tipi di problemi in futuro, ed è meno efficiente. A seconda di dove è necessario collegarsi, WordPress fornisce una funzione per sostituire qualsiasi URL hard-coded, nei temi o nei plugin. Puoi utilizzare le funzioni e i tag dei modelli per collegarti alle pagine nel front-end del tuo sito, inclusa la home page, alle schermate sull'amministratore di WordPress e ai file nei tuoi modelli o plug-in.