Como obtenho a URL do tema em PHP?

36

Eu preciso que o URL do diretório do meu tema faça referência a uma imagem no diretório image / headers do tema. Como isso é feito em PHP?

    
por mac9416 21.08.2010 / 02:46
fonte

4 respostas

43

Esta função irá retornar o URL do diretório do tema para que você possa usá-lo em outras funções:

get_bloginfo('template_directory');

Em alternativa, esta função irá echo a URL do diretório do tema para o navegador:

bloginfo('template_directory');

Então, um exemplo para uma imagem na pasta themes images/headers seria:

<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
    
por EAMann 21.08.2010 / 05:19
fonte
32

O que @EAMann disse, com uma ressalva. Eric está certo sobre a abordagem geral e sobre como as funções bloginfo() e get_bloginfo() funcionam e sobre como passar o parâmetro 'template_directory' para obter o valor necessário para (a maioria) temas.

No entanto, há uma ressalva e essa ressalva é com os Temas Infantis mais recentes. Se você estiver usando um tema filho, 'template_directory' provavelmente não será o que você deseja, a menos que você esteja realmente tentando se referir a uma imagem que esteja no diretório do tema pai. Em vez disso, para temas infantis, o que você provavelmente quer é passar stylesheet_directory (eu sei, eu sei, os nomes não dizem o que são, mas ei, é assim mesmo!) Tomando emprestado um pouco da resposta de Eric usando stylesheet_directory ficaria assim (eu encurtei o exemplo para que ele não fosse quebrado):

  

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

Para ilustrar o ponto em que escrevi um arquivo rápido e autônomo, você pode inserir a raiz do seu site como test.php e executar para ver o que é gerado. Primeiro, corra com um tema regular, como o TwentyTen, e corra 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ê perceber coisas, poderá notar que há muito mais para o que pode passar para bloginfo() e get_bloginfo() ; Estude o código e a imagem abaixo para obter ideias.

Olhando para a captura de tela, você pode ver que stylesheet_directory retorna a mesma coisa que 'template_directory' para um tema regular, mas um valor diferente e provavelmente o valor que você precisa para um tema filho.

  

Paraesclarecerestaimagem,  wp30.devéumdomínioqueéexecutadosomente  nomeucomputadorlocal.Atualmenteé  umainstânciadoWordPress3.0.1e  estáconfiguradoem127.0.0.1(omesmoque  localhost)nomeulaptopeeuuso  paratestarexemplosad-hoccomoeste.  Euusei VirtualHostX como uma conveniência no Mac OS X para me ajudar a configurar esses .dev domínios não roteáveis mas qualquer um pode fazer manualmente,   editando o arquivo de hosts do computador e   ? arquivo httpd.conf.

A propósito, caso você não esteja familiarizado com Temas Infantis , onde estão outras duas respostas do WordPress que podem ajudar:

por MikeSchinkel 21.08.2010 / 12:50
fonte
11

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 infantil, estes são os mesmos.

Para ter flexibilidade de filtros, em vez de acessar a opção diretamente, há get_template() e get_stylesheet() .

Agora, a única coisa que falta é combinar aqueles com a localização da pasta de temas. Isso pode ser feito com get_theme_root_uri() e novamente convenientemente agrupado em get_template_directory_uri() e get_stylesheet_directory_uri() .

[get_]bloginfo() com os argumentos template_directory ou stylesheet_directory limitam-se a envolvê-los e há poucos motivos para usá-los Curtiu isso. Eu diria que é apenas confuso por ter argumento dizendo diretório (comumente se relaciona com os caminhos locais), mas retornando URLs.

Sumary:

  • use get_template_directory_uri() para se referir apenas ao tema ou ao pai
  • use get_stylesheet_directory_uri() apenas para ou tema filho
por Rarst 26.03.2012 / 21:59
fonte
-1

Eu uso isso (dirname(get_bloginfo('stylesheet_url')))

    
por fja3omega 26.03.2012 / 21:31
fonte