functions.php
é processado antes que você possa saber qual página está sendo carregada. Em vez de atribuir valor à variável, coloque seu código em função e use essa função em page.php
template.
Eu tenho uma página chamada "Apple", o ID de identificação da página 2533.
No arquivo page.php eu tenho uma linha:
echo $bannerimg
E esta função em functions.php:
if ( is_page( '2533' ) ) {
// also tested with 'Apple'
$bannerimg = 'apple.jpg';
} elseif ( is_page( 'test' ) ) {
$bannerimg = 'test.jpg';
} elseif ( is_page( 'admissions' ) ) {
$bannerimg = 'admissions.jpg';
} else {
$bannerimg = 'home.jpg';
}
O ponto é o $ bannerimg ecoa "home.jpg" em todas as páginas, incluindo Apple, testes e admissões.
Eu até verifiquei todos os IDs usando the_ID & $ page- > ID. Nada. Então eu acho que tem algo errado com o código acima?
functions.php
é processado antes que você possa saber qual página está sendo carregada. Em vez de atribuir valor à variável, coloque seu código em função e use essa função em page.php
template.
Estendendo o que o @Rarst postou e você comentou, uma solução mais elegante seria criar seu próprio filtro dentro de page.php e ligar a ele de uma função dentro do functions.php, por exemplo:
em você page.php
$bannerimg = apply_filters('my_bannerimg','defualt_img.jpg');
e nas suas funções.php
add_filter('my_bannerimg','what_page_is_it');
function what_page_is_it($img){
if ( is_page( '2533' ) ) {
return 'apple.jpg';
} elseif ( is_page( 'test' ) ) {
return 'test.jpg';
} elseif ( is_page( 'admissions' ) ) {
return 'admissions.jpg';
} else {
return 'home.jpg';
}
}
get_header
deve funcionar se você quiser deixá-lo em functions.php
add_action('get_header', function() {
if ( is_page( '2533' ) ) {
// also tested with 'Apple'
$bannerimg = 'apple.jpg';
} elseif ( is_page( 'test' ) ) {
$bannerimg = 'test.jpg';
} elseif ( is_page( 'admissions' ) ) {
$bannerimg = 'admissions.jpg';
} else {
$bannerimg = 'home.jpg';
}
});
Adicione isto ao seu functions.php, altere o nome do script someCode e o nome da página:
add_action('wp_enqueue_scripts', 'wpt_theme_js');
function wpt_theme_js() {
if ( is_page('somePage') ) {
wp_enqueue_script('someCode_js', get_template_directory_uri() . '/js/someCode.js', '', '', true);
}
}
Você precisa chamar sua função em um ponto no processo do WordPress depois que a Consulta estiver configurada .
Em functions.php
:
function mytheme_get_banner_img() {
if ( is_page( '2533' ) ) {
// also tested with 'Apple'
$bannerimg = 'apple.jpg';
} elseif ( is_page( 'test' ) ) {
$bannerimg = 'test.jpg';
} elseif ( is_page( 'admissions' ) ) {
$bannerimg = 'admissions.jpg';
} else {
$bannerimg = 'home.jpg';
}
return $bannerimg;
}
Em seguida, no seu arquivo de modelo page.php
, sempre que você precisar retornar / saída $bannerimg
:
<?php
$bannerimg = mytheme_get_banner_img();
?>
Depois, você pode fazer o que precisar com $bannerimg
: soltá-lo em uma tag <img>
, etc.
Você declarou corretamente wp_head();
etc no seu tema?
Além disso, is_page
aceita um ID sem aspas.
O problema também pode estar relacionado ao fato de você já estar no modelo de página, portanto, é uma página, talvez seja melhor consultar o $post->ID
ou configurar page-apple.php