web-dev-qa-db-ja.com

Functions.phpファイルにis_pageを入れると、なぜis_pageが機能しないのですか。

"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をチェックしました。何もない。それで、私は上のコードに何か問題があると思いますか?

10
Wordpressor

どのページがロードされているかを知ることができる前に、functions.phpは処理されます。変数に値を代入する代わりに、あなたのコードをfunctionに入れて、その関数をpage.php templateで使ってください。

15
Rarst

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';
    }  
});
5
Bryan Willis

@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';
    }  
}
4
Bainternet

これを自分の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);
        }
    }
1
Vasyl Gutnyk

あなたのテーマでwp_head();などを正しく宣言しましたか?

また、is_pageは引用符なしでIDを受け入れます。

問題は、あなたがすでにページテンプレートにいるので、それはページであるという事実かもしれません、あなたは$post->IDを問い合わせるかpage-Apple.phpをセットアップすることの方が良いかもしれません

0
Alex Older

あなたは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>タグにドロップするなどです。

0
Chip Bennett