web-dev-qa-db-ja.com

is_home()がfunctions.phpで機能しない理由

Functions.phpを通してscripts.phpを取り入れています。これはscripts.phpにありますが、何らかの理由で、ワードプレスはis_home()を認識しません。クエリをリセットしようとしましたが、役に立ちません。私は正しい機能に夢中になっていますか?

if(is_home()){

function my_scripts_method2() {
    wp_register_script('cycle', get_template_directory_uri() . '/js/cycle.js', array('jquery'));
    wp_enqueue_script('cycle');
}
add_action('wp_enqueue_scripts', 'my_scripts_method2');

function my_scripts_method() {
    wp_register_script('homepage', get_template_directory_uri() . '/js/homepage.js', 'cycle');
    wp_enqueue_script('homepage');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
}
3
Kegan Quimby

起動時に functions.php が含まれているときは、WordPressはクエリの内容を知らず、ページの性質も知りません。 is_homeはfalseを返します。

コードを関数にラップして、グローバルクエリオブジェクトがデータでハイドレートされた後に来るwpフックによってトリガされるようにします。

add_action( 'wp', 'wpse47305_check_home' );
function wpse47305_check_home() {
    if ( is_home() )
        add_action( 'wp_enqueue_scripts', 'my_scripts' );
}

function my_scripts() {
    ...
}

wp_enqueue_scriptsアクションはwpの後に実行されます。

http://codex.wordpress.org/Plugin_API/Action_Reference#Actions_Run_During_a_Typical_Request

9
soulseekah