J'ai la page appelée "Apple", l'identifiant de la page ID 2533.
Dans le fichier page.php, j'ai la ligne:
echo $bannerimg
Et cette fonction dans 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';
}
Le point important est que $ bannerimg renvoie "home.jpg" sur chaque page, y compris Apple, les tests et les admissions.
J'ai même vérifié tous les identifiants à l'aide de the_ID & $ page-> ID. Rien. Donc je suppose qu'il y a quelque chose qui cloche dans le code ci-dessus?
functions.php
est traité bien avant que vous puissiez savoir quelle page est en cours de chargement. Au lieu d'attribuer une valeur à une variable, mettez votre code dans une fonction et utilisez-la dans le modèle page.php
.
get_header
devrait travailler si vous voulez le laisser dans 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';
}
});
En étendant ce que @Rarst a posté et commenté, une solution plus élégante consisterait à créer votre propre filtre dans page.php et à y accrocher une fonction à l'intérieur du functions.php, par exemple:
dans votre page.php
$bannerimg = apply_filters('my_bannerimg','defualt_img.jpg');
et dans votre functions.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';
}
}
Ajoutez ceci à votre functions.php, changez le nom du script someCode et le nom de la page:
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);
}
}
Avez-vous correctement déclaré wp_head();
etc. dans votre thème?
De plus, is_page
accepte un identifiant sans guillemets.
Le problème peut également provenir du fait que vous êtes déjà sur le modèle de page. Il est donc préférable d’interroger le $post->ID
ou de configurer le page-Apple.php
.
Vous devez appeler votre fonction à un stade du processus WordPress une fois la requête configurée .
Dans 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;
}
Ensuite, dans votre fichier de modèle page.php
, à chaque fois que vous devez renvoyer/générer $bannerimg
:
<?php
$bannerimg = mytheme_get_banner_img();
?>
Ensuite, vous pouvez faire ce que vous voulez avec $bannerimg
: déposez-le dans une balise <img>
, etc.