JavaScriptの出力場所

フォーラム 要望と提案 JavaScriptの出力場所

  • このトピックには5件の返信、3人の参加者があり、最後にnanbuにより8年、 2ヶ月前に更新されました。
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #80244
    mint1414
    参加者

    ——————————————-
    WordPress のバージョン:4.6
    Welcart のバージョン:1.8.8
    ご利用のテーマ:welcart_default
    症状を確認したブラウザ:
    サーバー(会社名、サービス名):
    SSLの利用: 
    WordPress のパーマリンク設定:
    ——————————————–

    お世話になります。

    現在、welcartのデフォルトテンプレートをカスタマイズ中で、
    jsファイルを</body>の手前にまとめたいと思い、
    テンプレートフォルダ内のfunctions.phpに下記のように記述しました。

    function my_scripts() {
      wp_deregister_script('jquery');
      wp_enqueue_script('jquery', get_template_directory_uri() . '/js/jquery-1.12.4.min.js', array(), '1.12.4', true);
      wp_enqueue_script('bootstrap', get_template_directory_uri() . '/js/bootstrap.min.js', array('jquery'), '3.3.7', true);
    }
    add_action('wp_enqueue_scripts', 'my_scripts');
    

    welcartで使用するjavascriptの記述は、jQUERY本体の前に表示されてしまいます。
    contactform7というプラグインも使用していますが、こちらは
    jQuery本体とBootstrapの間に表示されるのですが。
    contactform7と同じようにjQuery本体の後に出力するように変更はできませんか?

    よろしくお願いします。

    #80258
    uishi
    参加者

    もしかしてタイムリー?
    [解決済]: wp_add_inline_style で既存のハンドルに依存してCSSを出力する方法について

    よくわかりませんが、すでにwelcartのjavascriptが依存するjqueryを読み込んでるのにjquery削除して、望ましいjquery再読み込んでるからじゃないでしょうか。

    #80284
    mint1414
    参加者

    uishiさん

    お返事ありがとうございます。
    「[解決済]: wp_add_inline_style で既存のハンドルに依存してCSSを出力する方法について」を読んでみたのですが、理解力がないのもありますが、ちょっと違うような気がしました。

    現在は下記のように出力されています。
    jquery-1.12.4.min.jsより前に出力されているのが、welcartプラグインが出力しているJavaScriptなのですが、これを、jquery-1.12.4.min.jsの後に出てほしいです。

    <script type='text/javascript'>
      uscesL10n = {
        'ajaxurl': "http://localhost/shopwelcart/wordpress4/wp-admin/admin-ajax.php",
        'loaderurl': "http://localhost/shopwelcart/wordpress4/wp-content/plugins/usc-e-shop/images/loading.gif",
        'post_id': "194",
        'cart_number': "4",(以下省略)
      }</script>
    <script type='text/javascript' src='http://localhost/shopwelcart/wordpress4/wp-content/plugins/usc-e-shop/js/usces_cart.js'></script>
    <!-- Welcart version : v1.8.8.1608161 -->
    <script type='text/javascript' src='http://localhost/shopwelcart/wordpress4/wp-content/themes/welcart_default/js/jquery-1.12.4.min.js?ver=1.12.4'></script>
    <script type='text/javascript' src='http://localhost/shopwelcart/wordpress4/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js?ver=3.51.0-2014.06.20'></script>
    <script type='text/javascript' src='http://localhost/shopwelcart/wordpress4/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=4.5'></script>
    <script type='text/javascript' src='http://localhost/shopwelcart/wordpress4/wp-content/themes/welcart_default/js/bootstrap.min.js?ver=3.3.7'></script>
    

    welcartが出力しているファイル(wp-content/plugins/usc-e-shop/classes/usceshop.class.php)を見ると、記述がphpコードの外に記述されているので、この順番を変えるのは難しいのかな?と思いましたが、どうなんでしょうか?

    #80286
    uishi
    参加者

    \plugins\usc-e-shop\includes\default_filters.phpの
    add_action( 'wp_footer', array(&$usces, 'shop_foot'));

    該当箇所を含むshop_footをwp_footerでフックしてるので、
    順番の問題でも行けるのかなと思ったんですが、ちがうかな。

    フックが違うのかな。

    #80292
    mint1414
    参加者

    uishiさん、私の問題に付き合ってくれてありがとうございます。

    \plugins\usc-e-shop\includes\default_filters.phpの
    add_action( ‘wp_footer’, array(&$usces, ‘shop_foot’));
    を確認しました。

    そうですよね、出力される最終の部分を制御したらよかったんですね。
    途中経過を見てました。。
    アクションフックとフィルターフックについて、理解が足りなかったので
    改めて勉強しました。

    そして、テンプレートフォルダ内のfunctions.phpに下記のように
    読み込み順序が遅くなるように数値を指定したら、
    希望通り、後に表示されました。
    ありがとうございました。

    remove_action('wp_footer', array(&$usces, 'shop_foot'));
    remove_action('wp_footer', array(&$usces, 'lastprocessing'));
    remove_action('wp_footer', 'usces_action_footer_comment');
    add_action( 'wp_footer', array(&$usces, 'shop_foot'), 20);
    add_action( 'wp_footer', array(&$usces, 'lastprocessing', 21));
    add_action( 'wp_footer', 'usces_action_footer_comment', 22);
    
    #80400
    nanbu
    キーマスター

    こんにちは

    WordPressにはjqueryがバンドルされており、通常はテーマもプラグインもコンフリクトや様々な不具合を考慮してこのjqueryを利用するルールになっています。

    古いバージョンのjquery利用したい理由は、恐らく使用したいライブラリが古いバージョンにしか対応していないからではないでしょうか。

    テーマでjqueryを読み込むと、jqueryが重複して読み込まれることになります。何か別の方法を検討した方がよいのではないでしょうか。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • このトピックに返信するにはログインが必要です。