Incluir arquivos no arquivo de funções do tema filho


8

Normalmente, no meu arquivo de função de tema, solicitarei outros arquivos para manter as coisas organizadas.

require_once("foo.php");

Agora, trabalhando em um tema infantil, eu gostaria de fazer o mesmo. Estou adicionando opções de administrador personalizadas e parece impossível incluir código. Eu ecoei o caminho para ter certeza de que estou chamando o arquivo correto e o local correto, mas nada dentro desse arquivo parece ser executado. O código funciona bem se colocado dentro do arquivo de funções do tema filho.


Você pode postar um pouco mais do seu código para mostrar exatamente o que está fazendo?
26610 MikeSchinkel

Respostas:


13

Os temas filhos referenciam os temas-pai pelo nome do diretório e, em uma instalação normal, todos os seus temas residem wp-content/themes/, então eu diria que é bom fazer referência a esses temas pelo caminho relativo:

include '../parent-theme/some-file.php';

Se isso lhe deixa desconfortável, observo as seguintes constantes no WordPress 3.0.1 com um tema de vinte filhos chamado tt-child :

TEMPLATEPATH     /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH   /home/adam/public_html/wp3/wp-content/themes/tt-child

Portanto, você pode fazer o seguinte no tema filho para fazer referência ao diretório de temas pai:

include TEMPLATEPATH . '/some-file.php';

O constante STYLESHEETPATH ​​é o que eu estava procurando. Inclui trabalho em um tema filho, se você o usar.
Curtismchale 26/10/10

Estou realmente surpreso que você possa considerar usar um caminho codificado ... um tema não deve funcionar apenas em um ambiente. Eu poderia entender se get_template_directory () não existia ... mas existe. Eu só percebi que é uma questão a partir de 2010 lol
Christian

A opção superior não funcionou para mim. Não sei por que motivo, quando eu certamente tinha o caminho relativo correto para o arquivo pai. A segunda opção funcionou para mim, então obrigado.
bowlerae

12

Em um tema infantil, a maneira correta é

require_once( get_stylesheet_directory() . '/foo.php');

Enquanto estiver no tema principal, você ainda pode usar

require_once ( get_template_directory() . '/foo.php' );

get_template_directory()ainda funciona no tema filho, infelizmente, tenha como alvo o diretório de temas pai. No seu caso, é útil


11
Eu tive que usar um '/', por exemplo, require_once (get_stylesheet_directory (). '/Foo.php');
ssaltman 2/01

obrigado @ssaltman. Você está certo, a documentação confirma: developer.wordpress.org/reference/functions/… Editei minha resposta
Christian

2

Olá @curtismchale :

Não sei se é isso ou não, mas você precisa incluir aspas foo.php, assim:

require_once('foo.php');

Isso resolve o seu problema?


Ha boa nota. Eu perdi aqui, mas eu tinha no tema infantil.
Curtismchale 26/10/10


2

Você definitivamente não deseja codificar o URL. A maneira correta de fazer isso é

require_once( get_stylesheet_directory(). '/my_included_file.php' );

Veja mais informações no Wordpress Codex

Agora, se você estiver modificando o header.php, que inclui um include, faça referência a ele da seguinte maneira:

require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );

0

É completamente possível e normal fazer inclusões functions.php.

Eu faço isso no meu tema filho ( phpé um subdiretório para código):

include 'php/core.php';

Se você tiver problemas sem motivo aparente, tente ativar o modo de depuração em wp-config.php:

define('WP_DEBUG', true);

Pode haver erros relevantes acontecendo, mas não exibidos.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.