web-dev-qa-db-ja.com

wp_enqueue_script()がまったく機能しない

Wp_enqueue_script()を使用してJavaScriptファイルをエンキューしようとしていますが、まったく機能していません。これが私のコードです:

function load_css_js() {
    wp_enqueue_style('gdgt-base', get_template_directory_uri() . '/css/gdgt-base.css');
    wp_enqueue_style('gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css', true);
    wp_register_script('gdgt-base', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ) , true);
    wp_enqueue_script('gdgt-base');
}

add_action('wp_enqueue_scripts', 'load_css_js');

しかし、デフォルトのWP Javasciprtの登録を解除し、他の場所からjqueryを登録すると、うまくいきます。この問題の原因は何ですか?助けてくれてありがとう!

5
Mehedi Hassan

wp_enqueue_style および wp_enqueue_script は多くのパラメーターを受け入れます。正しい順序で使用することが非常に重要です。そうしないと、これらの関数は失敗します。

これは各機能のためのパラメータの完全なセットです。

wp_enqueue_style( $handle, $src, $deps, $ver, $media );
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );

あなたのwp_enqueue_styleでは、$handle$srcを正しく定義していますが、$depsからtrueまでは正しくありません。 wp_enqueue_scriptについても同様です。

だからここにあなたの固定機能です。

function load_css_js() {
    wp_enqueue_style( 'gdgt-base', get_template_directory_uri() . '/css/gdgt-base.css', false, NULL, 'all' );
    wp_enqueue_style( 'gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css', false, NULL, 'all' );

    wp_register_script( 'gdgt-base', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ), NULL, false );
    wp_enqueue_script( 'gdgt-base' );
}

add_action( 'wp_enqueue_scripts', 'load_css_js' );

詳細については、codexの各機能に関する文書を参照してください。

10
Robert hue

私のような他の馬鹿のために、私は私がここに貢献すると思いました。 :-)

依存関係にarray( '' )の代わりにarray()を書いていたので、たった1時間を費やしました。

違いは違います。

wp_enqueue_script( 'footerScript', get_stylesheet_directory_uri() . '/assets/js/appFooter.js', array( '' ), false, true );

そして

wp_enqueue_script( 'footerScript', get_stylesheet_directory_uri() . '/assets/js/appFooter.js', array(), false, true );

...最初のものはロードされません。第二のものになります。 :-)

@ Robert_Hueの答えが私の答えにつながりました。

0
Zeth

スクリプトを登録してエンキューするときは、wp_register_script()およびwp_enqueue_script()を呼び出す必要はありません。 wp_enqueue_script()を呼び出すだけです。

wp_enque_scriptの基本的な構文は次のとおりです。

wp_enqueue_script( string $handle, string $src = '', array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )


これであなたのコードによれば、次のようになるはずです。

function load_css_js() {
            wp_enqueue_style('gdgt-base-style', get_template_directory_uri() . '/css/gdgt-base.css');
            wp_enqueue_style('gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css');
            wp_enqueue_script('gdgt-base-script', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ) , '2019' true);
        }

add_action('wp_enqueue_scripts', 'load_css_js');

[訪問]: https://developer.wordpress.org/reference/functions/wp_enqueue_script/
詳細についてはのドキュメントを参照してください。

0
EGWorldNP