get_template_directory_uri apontando para o tema pai, não o tema filho

35

O problema que estou tendo é que o get_template_directory_uri está apontando para o tema pai como site/wp-content/themes/twentythirteen/myGallery/gallery_functions_include.php

mas quero que aponte para o meu tema filho, que deve ser site/wp-content/themes/child-twentythirteen/myGallery/gallery_functions_include.php

o que eu estou usando é include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php');

Elroy Fernandes
fonte

Respostas:

70

get_template_directory_uri() sempre retornará o URI do tema pai atual.

Para obter o URI do tema filho, é necessário usar get_stylesheet_directory_uri().

Você pode encontrá-los na documentação , juntamente com uma lista de outras funções úteis para obter vários locais de diretório de temas.


Se você preferir usar uma constante, TEMPLATEPATHé semelhante à chamada get_template_directory()(ou seja, o tema pai) e STYLESHEETPATHé semelhante à chamada get_stylesheet_directory()(ou seja, o tema filho).

Essas constantes são definidas pelo núcleo do WordPress wp-includes/default-constants.phpe basicamente são assim:

define('TEMPLATEPATH', get_template_directory());
...
define('STYLESHEETPATH', get_stylesheet_directory());

Se não houver tema filho, as funções 'modelo' e 'folha de estilo' retornarão o local do tema pai.

Observe a diferença entre essas funções e as funções terminadas em _uri- elas retornarão o caminho absoluto do servidor (por exemplo /home/example/public_html/wp-content/yourtheme), enquanto as _urifunções retornarão o endereço público (também conhecido como URL) - por exemplo. http://example.com/wp-content/themes/yourtheme.

Tim Malone
fonte
que tal incluir (TEMPLATEPATH. '/myGallery/gallery_functions_include.php'); este também vai para o diretório pai
Elroy Fernandes
@ElroyFernandes Adicionei isso à minha resposta. STYLESHEETPATH ​​é a constante que você deseja em vez disso
Tim Malone
2
Obrigado por responder à pergunta em vez de apenas dizer RTM. Isso apareceu primeiro nos meus resultados de pesquisa.
Rinogo 4/04
2
Boa resposta, mas ruim nomeação por parte do WordPress - não é apenas para as folhas de estilo, é para JS, ativos, inclui etc.
Paul Feakins
1
@PaulFeakins Não comece a inconsistências de nomes no WordPress - essa é uma estrada longa e cheia de vento que leva quem sabe aonde! ;)
Tim Malone
0

Você deve mover seus modelos personalizados, aqueles que não são controlados pelo tema ativo, para uma pasta filho.

Mantenha o tema separado de todos os arquivos personalizados para que o tema possa ser atualizado sem perder seu trabalho personalizado.

Seu tema pronto para uso vive aqui
------------------------------------
\\ Site \ wp-content \ themes \ some_theme
Seu tema filho mora aqui
---------------------------
\\ Site \ wp-content \ themes \ some_theme-child

Seus estilos e modelos personalizados e todas as suas inclusões (itens como javascript personalizado, imagens que não são salvas no WP, fontes personalizadas, arquivos de dados json e plugins que você pode enfileirar) devem ser movidos para a pasta filho FORA do tema.

\ themes \ some_theme
\ themes \ some_theme-child \ (todos os seus arquivos de modelo php personalizados aqui)
\ themes \ some_theme-child \ images
\ themes \ some_theme-child \ inclui 
\ themes \ some_theme-child \ languages
\ themes \ some_theme-child \ json 
\ themes \ some_theme-child \ style

Para suas páginas de estilo personalizadas ( não o estilo substituído.css do tema ) enfileire com wp_enqueue_style ('some-css', get_stylesheet_directory () . '/Style/some.css', false, '0.0.1', 'all');

Use get_stylesheet_directory_uri () com suas chamadas xhr, etc.

Greg Bologna
fonte