web-dev-qa-db-ja.com

wp_enqueue_scriptsフックが呼び出されててません

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');

しかし、どちらのスクリプトもキューに入れられていないようです。私は自分の問題が何であるかわからなかったので、フックが呼ばれているかどうかを調べるためにこのスクリプトを追加しました:

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);

そしてリストにwp_enqueue_scriptsは現れません。では、なぜフックが呼び出されないのですか。

1

関数名がすでに使用されている場合、私はコールバックを追加しませんが、あなたのコードは正しいです。他の誰かがその名前を使ったことがあるなら、あなたはあなたが何を追加しようとしているのかわかりません。

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

私はまたあなたの "フックダンプ"機能をテストしました - aal_handler()--そしてそれはうまくいきます。 wp_enqueue_scriptsは出力の一部です。

私はそのテーマに何か問題があると結論しなければなりません。 wp_enqueue_scriptswp_head にフックされ、 wp_head()関数 で起動します。最も明白な可能性はあなたのテーマがwp_head()を正しく使っていない、あるいはまったく使っていないことです。別の遠い可能性は、何かがあなたのコールバックを削除したということです - 例えば:

remove_all_filters('wp_enqueue_scripts');
3
s_ha_dum