web-dev-qa-db-fra.com

le hook wp_enqueue_scripts n'est pas appelé

J'ai ajouté le code suivant à mon functions.php:

if(!function_exists('bi_frontend_scripts')) {
    function bi_frontend_scripts() {
        wp_enqueue_script('jquery');
        // I originally wanted to do:
        wp_enqueue_script('jQuery.bxSlider', get_bloginfo('template_url').'/scripts/jquery.bxslider/jquery.bxslider.min.js', array('jquery'));
    }
}
add_action('wp_enqueue_scripts', 'bi_frontend_scripts');

Mais apparemment, aucun des scripts n'est mis en file d'attente. Je n'ai pas compris quel était mon problème, j'ai donc ajouté ce script pour savoir si le hook s'appelle:

function aal_handler() {
    static $list = array();
    // exclude certain actions:
    $exclude = array('gettext', 'gettext_with_context');

    $action = current_filter();

    if(!in_array($action, $exclude)) {
        $list[] = $action;
    }
    // shutdown is the last action
    if ('shutdown' == $action) {
        print '<pre>' . implode( "\n", $list ) . '</pre>';
    }
}
add_action('all', 'aal_handler', 99999, 99);

Et dans la liste, wp_enqueue_scripts n'apparaît pas. Alors pourquoi le crochet ne s'appelle pas?!

1
Julian F. Weinert

Votre code est correct, bien que je n’ajoute pas le rappel si le nom de la fonction a déjà été utilisé. Si quelqu'un d'autre a utilisé le nom, vous ne savez pas ce que vous pourriez ajouter.

if(!function_exists('bi_frontend_scripts')) {
    function bi_frontend_scripts() {
        wp_enqueue_script('jquery');
        // I originally wanted to do:
        wp_enqueue_script('jQuery.bxSlider', get_bloginfo('template_url').'/scripts/jquery.bxslider/jquery.bxslider.min.js', array('jquery'));
    }
    add_action('wp_enqueue_scripts', 'bi_frontend_scripts');
}

J'ai aussi testé votre fonction "hook dump" - aal_handler()--, et ça marche. wp_enqueue_scripts fait partie de la sortie.

Je dois conclure qu'il y a quelque chose qui ne va pas avec le thème. wp_enqueue_scripts EST RELIÉ À wp_head , qui se déclenche dans la fonction wp_head() . La possibilité la plus évidente est que votre thème n'utilise pas wp_head() correctement ou pas du tout. Une autre possibilité lointaine est que quelque chose a supprimé votre rappel - par exemple, avec:

remove_all_filters('wp_enqueue_scripts');
3
s_ha_dum