JavaScriptの出力場所
-
投稿者投稿
-
2016年8月24日 1:12 PM #80244mint1414参加者
——————————————-
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本体の後に出力するように変更はできませんか?よろしくお願いします。
2016年8月25日 7:45 AM #80258uishi参加者もしかしてタイムリー?
[解決済]: wp_add_inline_style で既存のハンドルに依存してCSSを出力する方法についてよくわかりませんが、すでにwelcartのjavascriptが依存するjqueryを読み込んでるのにjquery削除して、望ましいjquery再読み込んでるからじゃないでしょうか。
2016年8月29日 4:51 PM #80284mint1414参加者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コードの外に記述されているので、この順番を変えるのは難しいのかな?と思いましたが、どうなんでしょうか?
2016年8月30日 8:21 AM #80286uishi参加者\plugins\usc-e-shop\includes\default_filters.phpの
add_action( 'wp_footer', array(&$usces, 'shop_foot'));
で
該当箇所を含むshop_footをwp_footerでフックしてるので、
順番の問題でも行けるのかなと思ったんですが、ちがうかな。フックが違うのかな。
2016年8月30日 10:03 AM #80292mint1414参加者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);
2016年9月13日 12:30 PM #80400nanbuキーマスターこんにちは
WordPressにはjqueryがバンドルされており、通常はテーマもプラグインもコンフリクトや様々な不具合を考慮してこのjqueryを利用するルールになっています。
古いバージョンのjquery利用したい理由は、恐らく使用したいライブラリが古いバージョンにしか対応していないからではないでしょうか。
テーマでjqueryを読み込むと、jqueryが重複して読み込まれることになります。何か別の方法を検討した方がよいのではないでしょうか。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。