Qual è il modo migliore per includere immagini dalla cartella immagini del template?

12 ago 2010, 18:32:16
Visualizzazioni: 13.7K
Voti: 8

Qual è il modo migliore per includere immagini dalla cartella immagini del template? È meglio usare get_bloginfo('template_url')? Ho capito che potrebbe essere preferibile hardcodare il percorso alla cartella immagini per evitare chiamate di funzione in PHP..

Quali sono i vostri pensieri?

0
Tutte le risposte alla domanda 5
1

Ho capito che è meglio hardcodare il percorso alla cartella delle immagini in questo modo si risparmiano chiamate a funzioni in PHP..

Personalmente non mi preoccuperei delle chiamate a funzione, la cache degli oggetti di WordPress gestirà il caching di tutto quel codice. Potresti definire il percorso come una costante se volessi, ma generalmente non ne varrebbe la pena.

Farei semplicemente:

<img src="<?php bloginfo('stylesheet_directory')"?>/images/image.png" />

L'ho modificato in

<img src="<?php bloginfo('stylesheet_directory');?>/images/image.png" /> (quello sopra dava errori)

12 ago 2010 18:53:18
Commenti

Solo un paio di note: prima, userei get_stylesheet_directory_uri() invece di bloginfo( 'stylesheet_directory' ); secondo, se l'immagine non è destinata a essere sovrascritta da un Child Theme, allora userei get_template_directory_uri().

Chip Bennett Chip Bennett
9 feb 2012 15:48:54
5

Il modo più semplice e diretto per farlo è definire una variabile unica nel file functions.php del tuo tema.

Ad esempio:

<?php
$theme_name_images = get_bloginfo('stylesheet_directory') . '/images/';
?>

Non è necessario utilizzare classi come suggerito in una risposta precedente.

EDIT: Dovrebbe essere get_bloginfo, invece di bloginfo(), come giustamente segnalato da Viper007Bond.

12 ago 2010 18:58:08
Commenti

Ma questo può sporcare il namespace globale.

WhIteSidE WhIteSidE
12 ago 2010 19:03:31

vero, ma è il metodo più semplice. Non ho mai detto che fosse il modo più pulito per farlo.

john010117 john010117
12 ago 2010 19:52:12

Sì, ma il problema dello sporcare il namespace globale si presenta solo se non si usa una buona convenzione di denominazione per le variabili. Ad esempio, potrebbe usare amits_stylesheet_directory e amits_template_url oppure, invece di "amits", usare il nome del cliente.

MikeSchinkel MikeSchinkel
12 ago 2010 19:52:22

bloginfo() visualizza direttamente. Vuoi get_bloginfo() che restituisce il valore.

Viper007Bond Viper007Bond
12 ago 2010 22:37:48

@Viper007Bond - Grazie. Ho corretto il mio post.

john010117 john010117
13 ago 2010 01:44:36
0

@Amit: Dipende. La maggior parte delle chiamate di funzione in PHP sono piuttosto veloci, quindi se stai cercando prestazioni non mi preoccuperei troppo. Tuttavia capisco come ti senti nel vedere tutte quelle chiamate. Ciononostante, non vorrei mai hardcodare i percorsi.

Se hai intenzione di usare get_bloginfo('template_url') molte volte nel tuo tema, perché non assegnarlo a una variabile globale nel tuo file functions.php e poi farvi riferimento ovunque avresti normalmente usato la chiamata alla funzione? Assicurati di darle un nome improbabile che possa creare conflitti, come amits_template_url. Quindi fai questo in functions.php:

global $amits_template_url;
$amits_template_url = get_bloginfo('template_url');

E poi nel tuo tema farai riferimento a questa variabile ovunque avresti usato get_bloginfo('template_url').

12 ago 2010 19:49:25
1

Beh, dipende dal tipo di sviluppo che stai facendo. Se stai sviluppando un plugin, devi utilizzare le funzioni perché non potrai mai sapere con certezza quale sarà la struttura degli URL. Se stai lavorando su un sito web specifico, tecnicamente è accettabile hardcodare gli URL, ma è comunque sconsigliato, poiché impedisce la possibilità che la struttura degli URL possa cambiare in futuro.

Ogni volta che sviluppo plugin o temi, strutturo il programma in una classe; in questo modo, posso salvare valori ripetitivi come proprietà dell'oggetto (ad esempio, l'URL di WordPress e template_url). Così posso utilizzarli rapidamente senza dover chiamare ripetutamente le funzioni.

12 ago 2010 18:39:03
Commenti

La mia intenzione era lo sviluppo di un tema specifico per un cliente specifico (non un tema "distribuibile"), puoi fornire un esempio di codice per una classe di questo tipo per favore?

Amit Amit
12 ago 2010 18:41:32
0

Collega semplicemente i tuoi file immagine dal tuo file CSS, il che significa che puoi utilizzare il percorso relativo dal file CSS alle immagini. Questa è una soluzione esclusivamente CSS. Non è necessario alcun codice PHP. Il lavoro viene svolto dal browser.

24 ago 2010 17:58:36