サポート » 使い方全般 » wp_enqueue_scripts が効かない

  • 解決済 bigi879

    (@bigi879)


    よろしくお願いいたします。

    function load_cdn_func() {
    		wp_deregister_script('jquery');
    		wp_enqueue_script('my-jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js', array(), '1.11.1');
    }
    add_action('wp_enqueue_scripts', 'load_cdn_func');

    上のようなソースをfunctions.phpに書いていますが実際のサイトでhttp://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.jsが読み込まれません。

    add_action(‘wp_enqueue_scripts’, ‘load_cdn_func’);
    この部分を
    add_action(‘init’, ‘load_cdn_func’);
    にすると読み込まれます。

    なぜだかわかりますでしょうか?
    お手数ですが、よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • add_action(‘wp_enqueue_scripts’, ‘load_cdn_func’);
    この部分を
    add_action(‘init’, ‘load_cdn_func’);

    に変更して利用することに、何か問題はありますでしょうか?

    すいませんが教えていただければ幸いです。
    よろしくお願いいたします。

    こんにちは

    wp_print_stylesを使わないで、wp_enqueue_scriptsを使ったほうがいいという話みたいですが、こちらを見てみてはどうでしょうか?

    Use wp_enqueue_scripts, not wp_print_styles, to enqueue scripts and styles for the frontend

    bigi879さんのコードは、一応ためしましたが、動作しているようでした。

    jQueryとそれに、に依存するスクリプトは、出力されなくなり、指定したスクリプトが出力されるようになりました。

    どういう用途かわかりませんが、バージョンの異なるjQueryも読み込めるという話も聞いたことがあるので、デフォルトのバージョンを削除するというのは、ちょっと心配です。

    モデレーター Seisuke Kuraishi (tenpura)

    (@tenpura)

    色々問題がありますが、そもそもなぜ WordPress に付いている jQuery を利用したくないのでしょうか?グローバルな $ が使えないことが理由なら、以下を参考にしてスクリプトを書き直してみてください。
    http://eastcoder.com/2014/07/using-jquery-with-wordpress/

    問題点は様々です。

    まず、wp_deregister_script('jquery') して my-jquery ハンドルで置き換えてしまったら依存関係の不整合が起きると思います。jquery というハンドルはコアを含めプラグインやテーマなどで共有して利用されますので、削除してしまうと WordPress 自体が壊れてしまいます。せめて同じ jquery で再登録するべきです。

    この部分を
    add_action(‘init’, ‘load_cdn_func’);
    に変更して利用することに、何か問題はありますでしょうか?

    init フックでこれを行うと管理画面にも影響が及びます。管理画面で jquery を deregister すると _doing_it_wrong() エラーを引き起こします。これも同じく管理画面を壊す可能性がありますので行うべきではありません。

    WordPress で外部スクリプトを読み込む仕組みについては以下を参考にしてください。

    WordPress で CSS、JavaScript ファイルを読み込む正しい方法

    nobita様

    わざわざ私のコードを試して頂いたようで、ありがとうございました。
    nobita様の方はうまく行っているということですので不思議です。
    参考URLを確認させていただきます。

    Seisuke Kuraishi様

    詳しくご説明いただきありがとうございました。
    ご説明いただいたことを確認し、今回WPのjQueryを使用することにします。

    再度ご質問があります。
    参考サイトにありました、以下のコードを使いました。

    function my_scripts() {
    	wp_enqueue_script( 'jquery' );
    }
    add_action( 'wp_enqueue_scripts', 'my_scripts' );

    するとjqueryが、

    <script type=’text/javascript’ src=’http://www.venture-house.jp/avhwp/wp-includes/js/jquery/jquery.js?ver=1.11.0′></script>
    <script type=’text/javascript’ src=’http://www.venture-house.jp/avhwp/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1′></script>

    と2つ読み込まれているようです。
    これは無駄のような気がしますが、必要なのでしょうか?
    またもし無駄の場合、どちらかを削除することは可能でしょうか?

    お手数ですが、よろしくお願いいたします。

    モデレーター gatespace

    (@gatespace)

    http://kwski.net/wordpress/1034/
    http://c-brains.jp/blog/wsg/13/11/14-142300.php

    WordPress本体のバージョンによって同報されているjQueryのバージョンが異なります。
    プラグインなどによってはプラグインで想定しているjQueryと、本体のバージョンが異なる場合はあります。
    jquery-migrate.min.js は jQuery の下位互換のためにあるので、そのままにしておいた方が良いです。

    gatespace様

    早速のご回答ありがとうございました。
    なるほど、理解出来ました。

    皆様のご好意により問題が解決しましたので、ここでトピックを解決済みにさせていただきます。

    どうもありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「wp_enqueue_scripts が効かない」には新たに返信することはできません。