web-dev-qa-db-fra.com

pourquoi is_home () ne fonctionne-t-il pas dans functions.php

Je tire scripts.php à travers functions.php. c'est dans scripts.php mais pour une raison quelconque, wordpress ne reconnaît pas is_home (). J'ai essayé de réinitialiser la requête, mais en vain. Suis-je accroché à la bonne fonction?

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

Au moment où functions.php est inclus lors du démarrage, WordPress n’a aucune idée du contenu de la requête et ne connaît pas la nature de la page. is_home retournera false.

Enveloppez le code dans une fonction et faites-le déclencher par le crochet wp, qui survient après l'hydratation de l'objet de requête globale avec des données.

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

function my_scripts() {
    ...
}

L'action wp_enqueue_scripts est exécutée après wp.

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

9
soulseekah