Examinando a documentação do Wordpress , ele diz que se is_page_template()
compara a um "nome de modelo", se houver.
Eu tenho um modelo armazenado page-homepage.php
chamado Homepage
:
/*
* Template Name: Homepage
* Description: The template for displaying the homepage
*/
E eu tenho algum código que desejo executar no meu functions.php quando estou usando esse modelo:
if (is_page_template('Homepage')) {
...
Mas não está sendo acionado quando estou em uma página que usa esse modelo.
Quando olho para o código que o Wordpress executa is_page_template()
, parece que ele realmente verifica o nome do documento, não o nome do modelo ...?
function is_page_template( $template = '' ) {
$page_template = get_page_template_slug( get_queried_object_id() );
if ( $template == $page_template )
return true;
Na minha instância parece que $page_template
é page-homepage.php
- não o nome do modelo, como a documentação sugere ...?
Estou fazendo algo errado?
page-template
codex
Django Reinhardt
fonte
fonte
Respostas:
Sua condição deve ser escrita assim:
Eu acredito que a confusão é resultado de duas coisas:
is_page_template()
mostra aget_page_template_slug()
função em seu núcleo. Essa função realmente retorna um nome de arquivo, não a lesma do modelo. https://codex.wordpress.org/Function_Reference/get_page_template_slugAo especificar um argumento para a
is_page_template()
função (como no exemplo acima), o caminho do arquivo é relativo à raiz do tema.Esta função não funcionará dentro do loop.
fonte
get_page_template_slug()
isso não retorne uma lesma!Acho que a melhor coisa a dizer é que ele verifica o nome do ARQUIVO e, no seu caso, seria page-homepage.php. tão:
Outras coisas em que pensar é se o arquivo de modelo é realmente armazenado em outra pasta dentro do tema. consulte Mais informação
Mais uma coisa,
Template Name: Homepage
geralmente é o que é usado para identificar o modelo ao criar uma página ou postagem.fonte
page-templates/page-homepage.php
é diferente do modelo na raiz do tema.