Domanda

Ho bisogno di ottenere l'URL della mia cartella del tema per fare riferimento a un'immagine nella directory di immagini / header del tema. Come è questo fatto in PHP?

È stato utile?

Soluzione

Questa funzione ritorno l'URL cartella del tema in modo da poter utilizzare in altre funzioni:

get_bloginfo('template_directory');

In alternativa, questa funzione sarà echo l'URL cartella del tema al browser:

bloginfo('template_directory');

Così, un esempio per un'immagine nei temi images/headers cartella potrebbe essere:

<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />

Altri suggerimenti

Cosa @EAMann ha detto, con un avvertimento. Eric è di destra circa l'impostazione generale e di come le funzioni bloginfo() e get_bloginfo() lavoro e su come passare il parametro 'template_directory' per ottenere il valore necessario per (la maggior parte) i temi.

Tuttavia, v'è un avvertimento e che avvertimento è con il più recente Temi figlio . Se si utilizza un tema figlio allora 'template_directory' non è probabilmente quello che si vuole a meno che non si sta in realtà cercando di fare riferimento a un'immagine che si trova nella cartella del tema genitore. Invece per i temi bambino quello che probabilmente si desidera è passare stylesheet_directory (lo so, lo so, i nomi non vi dicono quello che sono, ma hey, questo è solo il modo in cui è!) Prendendo in prestito un po 'dalla risposta di Eric utilizzando stylesheet_directory sarebbe simile questo (ho accorciato l'esempio in modo che non sarebbe avvolgere):

<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />

Per illustrare questo punto ho scritto un file autonomo rapido si può cadere nella radice del tuo sito web come test.php e correre a vedere che cosa uscite. Prima esecuzione con un tema regolare come TwentyTen quindi eseguire con un tema bambino:

<?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 si nota cose che si potrebbe notare che c'è molto di più per quello che è possibile passare a bloginfo() e get_bloginfo(); studiare il codice e screenshot qui sotto per le idee.

Guardando la schermata si può vedere che i rendimenti stylesheet_directory la stessa cosa di 'template_directory' per un tema regolare, ma un valore diverso, e probabilmente il valore che serve per un tema bambino.

I valori di ritorno di get_bloginfo () con e senza un Tema Bambino in WordPress
(fonte: mikeschinkel.com )

Per chiarezza su questo screenshot, wp30.dev è un dominio che viene eseguito solo sul mio computer locale. Attualmente è un'istanza di WordPress 3.0.1 e è configurato in 127.0.0.1 (uguale localhost) sul mio computer portatile e lo uso per testare gli esempi ad hoc come questo. Ho usato VirtualHostX come vantaggio su Mac OS X per aiutarmi a impostare tali domini privati ??.dev non instradabili ma chiunque può farlo manualmente modifica file hosts del computer e la ? httpd.conf file.

A proposito, nel caso in cui non hanno familiarità con Temi figlio in cui sono altre due risposte WordPress che potrebbero aiutare:

L'intera struttura del tema si basa sulla parte superiore delle due opzioni - template (azienda cartella tema genitore namre) e stylesheet (tenendo tema bambino cartella namr). Se non c'è tema bambino usato questi sono gli stessi.

Per avere la flessibilità di filtri, piuttosto che un'opzione di accesso direttamente, ci sono di conseguenza get_template() e get_stylesheet()

.

Ora l'unica cosa che manca è di combinare quelle con i temi delle cartelle posizione. Questo può essere fatto con get_theme_root_uri() e ancora convenientemente avvolti in get_template_directory_uri() e get_stylesheet_directory_uri() .

[get_]bloginfo() con template_directory o stylesheet_directory argomenti meramente avvolge queste e ci sono pochi motivi per usarlo in quel modo. Direi che è solo fonte di confusione avendo argomento dicendo directory (comunemente si riferisce a percorsi locali), ma tornando URL.

Sumary:

  • uso get_template_directory_uri() per fare riferimento a solo genitore o tema
  • uso get_stylesheet_directory_uri() a solo o un bambino tema

Io uso questo (dirname(get_bloginfo('stylesheet_url')))

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top