Devo ottenere l'URL della mia directory del tema per fare riferimento a un'immagine nella directory image / headers del tema. Come viene fatto in PHP?
Devo ottenere l'URL della mia directory del tema per fare riferimento a un'immagine nella directory image / headers del tema. Come viene fatto in PHP?
Risposte:
Questa funzione restituirà l'URL della directory del tema in modo da poterlo utilizzare in altre funzioni:
get_bloginfo('template_directory');
In alternativa, questa funzione farà eco all'URL della directory del tema nel browser:
bloginfo('template_directory');
Quindi un esempio per un'immagine nella images/headers
cartella dei temi sarebbe:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
Cosa ha detto @EAMann , con un avvertimento. Eric ha ragione sull'approccio generale e su come funzioni bloginfo()
e get_bloginfo()
funzioni e su come passare il parametro 'template_directory'
per ottenere il valore necessario per (la maggior parte) temi.
Tuttavia c'è un avvertimento e questo avvertimento è con i nuovi temi del bambino . Se si utilizza un tema figlio, 'template_directory'
probabilmente non è quello che si desidera a meno che non si stia effettivamente cercando di fare riferimento a un'immagine che si trova nella directory del tema principale. Invece per i temi dei bambini quello che probabilmente vorrai è passare stylesheet_directory
(lo so, lo so, i nomi non ti dicono quali sono ma ehi, è così che è!) Prendere in prestito un po 'dalla risposta di Eric usando stylesheet_directory
sarebbe simile a questo ( Ho abbreviato l'esempio in modo che non andasse a capo):
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
Per illustrare il punto in cui ho scritto un rapido file autonomo, puoi rilasciarlo come root del tuo sito Web test.php
ed eseguire per vedere cosa produce. Prima corri con un tema normale come TwentyTen, quindi corri con un tema figlio:
<?php
/*
* test.php - Test the difference between Regular and Child Themes
*
*/
include "wp-load.php";
$bloginfo_params = array(
'admin_email',
'atom_url',
'charset',
'comments_atom_url',
'comments_rss2_url',
'description',
'home',
'html_type',
'language',
'name',
'pingback_url',
'rdf_url',
'rss2_url',
'rss_url',
'siteurl',
'stylesheet_directory',
'stylesheet_url',
'template_directory',
'template_url',
'text_direction',
'url',
'version',
'wpurl',
);
echo '<table border="1">';
foreach($bloginfo_params as $param) {
$info = get_bloginfo($param);
echo "<tr><th>{$param}:</th><td>{$info}</td></tr>";
}
echo '</table>';
Se noti cose, potresti notare che c'è molto di più in ciò a cui puoi passare bloginfo()
e get_bloginfo()
; studiare il codice e lo screenshot qui sotto per idee.
Guardando lo screenshot puoi vedere che stylesheet_directory
restituisce la stessa cosa 'template_directory'
di un tema normale ma un valore diverso e probabilmente il valore che ti serve per un tema figlio.
(fonte: mikeschinkel.com )
Per chiarezza su questo screenshot,
wp30.dev
è un dominio che viene eseguito solo sul mio computer locale. Al momento è un'istanza di WordPress 3.0.1 ed è configurata sul127.0.0.1
(uguale alocalhost
) sul mio laptop e lo uso per testare esempi ad-hoc come questo. Ho usato VirtualHostX per praticità su Mac OS X per aiutarmi a configurare quei.dev
domini privati non instradabili, ma chiunque può farlo manualmente modificando il file hosts del computer e il? file httpd.conf.
A proposito, nel caso in cui non si abbia familiarità con Temi figlio in cui sono presenti altre due risposte WordPress che potrebbero essere di aiuto:
get_stylesheet_directory_uri()
. Dovrei usare plain ol ' get_stylesheet_directory()
?
L'intera struttura del tema si basa su due opzioni: template
(tenendo il nome della cartella del tema principale) e stylesheet
(tenendo il nome della cartella del tema figlio). Se non viene utilizzato alcun tema figlio, questi sono gli stessi.
Per avere la flessibilità dei filtri, piuttosto che accedere direttamente all'opzione, ci sono di conseguenza get_template()
e get_stylesheet()
.
Ora l'unica cosa che manca è combinare quelli con la posizione della cartella dei temi. Questo può essere fatto con get_theme_root_uri()
e di nuovo comodamente avvolto in get_template_directory_uri()
e get_stylesheet_directory_uri()
.
[get_]bloginfo()
con template_directory
o stylesheet_directory
argomenti semplicemente li avvolge e ci sono poche ragioni per usarlo in quel modo. Direi che è solo confuso avendo argomento dicendo directory (comunemente si riferisce a percorsi locali), ma restituendo URL.
Sumary:
get_template_directory_uri()
per fare riferimento solo al tema principale o genitoreget_stylesheet_directory_uri()
per solo o il bambino a tema