Preciso obter o URL do meu diretório de temas para fazer referência a uma imagem no diretório image / headers do tema. Como isso é feito em PHP?
Preciso obter o URL do meu diretório de temas para fazer referência a uma imagem no diretório image / headers do tema. Como isso é feito em PHP?
Respostas:
Esta função retornará o URL do diretório de temas para que você possa usá-lo em outras funções:
get_bloginfo('template_directory');
Como alternativa, esta função fará eco do URL do diretório de temas para o navegador:
bloginfo('template_directory');
Portanto, um exemplo para uma imagem na images/headers
pasta de temas seria:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
O que @EAMann disse, com uma ressalva. Eric está certo sobre a abordagem geral, como as funções bloginfo()
e o get_bloginfo()
trabalho e sobre como passar o parâmetro 'template_directory'
para obter o valor necessário para a maioria dos temas.
No entanto, há uma ressalva e essa ressalva é com os Temas filho mais recentes . Se você estiver usando um tema filho, 'template_directory'
provavelmente não é o que deseja, a menos que esteja realmente tentando se referir a uma imagem que esteja no diretório do tema pai. Em vez disso, para temas filhos, o que você provavelmente quer é passar stylesheet_directory
(eu sei, eu sei, os nomes não dizem o que são, mas ei, é assim que as coisas são!) stylesheet_directory
. Abreviei o exemplo para que não fosse quebrado):
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
Para ilustrar o ponto em que escrevi um arquivo autônomo rápido, você pode soltar na raiz do seu site test.php
e executar para ver o que ele gera. Primeiro, execute com um tema regular como o TwentyTen e, em seguida, execute com um tema filho:
<?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 você notar coisas, pode perceber que há muito mais para o que você pode passar bloginfo()
e get_bloginfo()
; estude o código e a captura de tela abaixo para obter idéias.
Observando a captura de tela, você pode ver que stylesheet_directory
retorna a mesma coisa que 'template_directory'
para um tema comum, mas com um valor diferente e provavelmente o valor necessário para um tema filho.
(fonte: mikeschinkel.com )
Para maior clareza nesta captura de tela,
wp30.dev
é um domínio que roda apenas no meu computador local. Atualmente, é uma instância do WordPress 3.0.1 e está configurada no127.0.0.1
(igual alocalhost
) no meu laptop e eu a uso para testar exemplos ad-hoc como este. Usei o VirtualHostX como uma conveniência no Mac OS X para me ajudar a configurar.dev
domínios privados não roteáveis , mas qualquer um pode fazê-lo manualmente editando o arquivo hosts do computador e o? arquivo httpd.conf.
A propósito, caso você não esteja familiarizado com os Temas filho, há outras duas respostas do WordPress que podem ajudar:
get_stylesheet_directory_uri()
. Devo estar usando simples ol ' get_stylesheet_directory()
?
Toda a estrutura do tema se baseia em duas opções - template
(mantendo o nome da pasta do tema pai) e stylesheet
(mantendo o nome da pasta do tema filho). Se não houver um tema filho usado, eles serão os mesmos.
Para ter flexibilidade de filtros, em vez de acessar a opção diretamente, existem get_template()
e get_stylesheet()
.
Agora, a única coisa que falta é combiná-los com o local da pasta dos temas. Isso pode ser feito com get_theme_root_uri()
e novamente convenientemente envolvido em get_template_directory_uri()
e get_stylesheet_directory_uri()
.
[get_]bloginfo()
com template_directory
ou stylesheet_directory
argumentos apenas os envolve e há poucas razões para usá-lo assim. Eu diria que é apenas confuso ter argumento dizendo diretório (geralmente relacionado a caminhos locais), mas retornando URLs.
Sumário:
get_template_directory_uri()
para se referir apenas ao tema ou paiget_stylesheet_directory_uri()
para tema único ou filho