"Apple"というページがあり、そのIDは2533です。
Page.phpファイルに次の行があります。
echo $bannerimg
そして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';
}
ポイントは、$ bannerimgがApple、テスト、入場許可証を含むすべてのページに "home.jpg"をエコーすることです。
私は_IDと$ page-> IDを使ってすべてのIDをチェックしました。何もない。それで、私は上のコードに何か問題があると思いますか?
どのページがロードされているかを知ることができる前に、functions.php
は処理されます。変数に値を代入する代わりに、あなたのコードをfunctionに入れて、その関数をpage.php
templateで使ってください。
get_header
に残しておきたい場合はfunctions.php
should work
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';
}
});
@Rarstが投稿したコメントを拡張して、より洗練された解決策は、page.php内に独自のフィルタを作成し、functions.php内の関数からそれにフックすることです。
あなたの中にpage.php
$bannerimg = apply_filters('my_bannerimg','defualt_img.jpg');
そしてあなたの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';
}
}
これを自分のfunctions.phpに追加し、スクリプトsomeCodeの名前とページの名前を変更する:
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);
}
}
あなたのテーマでwp_head();
などを正しく宣言しましたか?
また、is_page
は引用符なしでIDを受け入れます。
問題は、あなたがすでにページテンプレートにいるので、それはページであるという事実かもしれません、あなたは$post->ID
を問い合わせるかpage-Apple.php
をセットアップすることの方が良いかもしれません
あなたはWordPressプロセスの中のポイントであなたの関数を呼び出す必要があります クエリが設定された後 。
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;
}
それから、あなたのpage.php
テンプレートファイルで、$bannerimg
を返す/出力する必要があるところならどこでも:
<?php
$bannerimg = mytheme_get_banner_img();
?>
そうすれば、$bannerimg
を使って必要なことをすべて行うことができます。<img>
タグにドロップするなどです。