自分で作った静的サイトにScrollHintというJavaScriptのライブラリを入れ、画面が小さい時はスクロールヒントが出るようにしたいと考えました。
https://appleple.github.io/scroll-hint/
ScrollHintを使うためにはscroll-hint.cssとscroll-hint.jsの2つのファイルが必須となります。
それ以外に私がコードを書いたファイル(myscript.js)も必要です。
myscript.jsにはScrollHintの設定のコードの他にjQueryのコードも書いています。
こうして作った静的サイトですが、ScrollHintはきちんと動いてくれました。
そこで次にこの静的サイトをWordPress化したのですが、WordPress化するとScrollHintが動きません。
一方、jQueryのほうはきちんと動いてくれます。
ScrollHintとjQueryはwp_enqueue_style関数とwp_enqueue_script関数を使って、functions.phpから読み込ませています。
コードは以下の通りです。
php
1<?php 2 3function mytheme_enqueue() { 4 5 // 「料金」のページのみscroll-hint.cssを読み込む 6 if(is_page('price')) { 7 wp_enqueue_style( 8 'scroll-hint-style', 9 get_stylesheet_directory_uri().'/css/scroll-hint.css', 10 ); 11 } 12 13 // jQueryを読み込む 14 wp_enqueue_script( 15 'jquery-script', 16 get_template_directory_uri().'/js/jquery-3.5.1.min.js' 17 ); 18 19 // 「料金」のページのみscroll-hint.jsを読み込む 20 if(is_page('price')) { 21 wp_enqueue_script( 22 'scroll-hint-script', 23 get_template_directory_uri().'/js/scroll-hint.js', 24 ); 25 } 26 27 // myscript.jsを読み込む 28 wp_enqueue_script( 29 'myscript', 30 get_template_directory_uri().'/js/myscript.js', 31 ); 32 33} 34add_action('wp_enqueue_scripts', 'mytheme_enqueue');
なぜScrollHintだけが動かないのか原因を調べたのですが、よく分かりませんでした。
たとえばScrollHintのファイルがきちんと読み込めていないのではないか? と思い、ブラウザのディベロッパーツールからscroll-hint.css、scroll-hint.js、myscript.jsの3つのファイルを検索したところ、きちんと発見できました。
またディベロッパーツールのコンソールにエラーが出ていないことから、phpのコードが間違っているわけではないようです。
WordPress化したことから余計な<p>タグや<br>タグが入ったのかとも思いましたが、そのようなタグも入っていません。
いろいろ悩んで調べたところ、静的ファイル時には付いていたクラス名などが、WordPress化の時には付いていないことに気づきました。
どういうことかというと、ScrollHintを使いたいときは、JavaScriptファイルで(私の場合はmyscript.jsで)セレクターを指定して設定をおこなうのですが、設定をおこなうとScrollHintライブラリが自動的に独自のクラス名などを付けてくれます。
私の場合だと、myscript.jsに
JavaScript
1new ScrollHint('.price-table', { 2 applyToParents: true, 3 i18n: { 4 scrollable: 'スクロールできます' 5 } 6});
というコードを書いたのですが、そうするとディベロッパーツールで見たときに、静的サイトではprice-tableの親要素にscroll-hintやis-scrollableといったクラス名が付いたり、あるいはstyle="position:relative" overflow:auto;というスタイルが付きました。
ところがWordPress化したサイトをディベロッパーツールで確認したところ、これらのクラス名やスタイルは設定されていないことに気づきました。。
なぜWordPress化するとこれらのクラス名やスタイルが設定されないのかがわかりません。
先ほども書いたとおり、scroll-hint.css、scroll-hint.js、myscript.jsの3つのファイルはきちんと読み込まれているはずです。それなのになぜクラス名やスタイルが付かないのか? その理由がわかりません。
なんとかこれらのクラス名やスタイルがきちんと設定されるようにしたいのですが、どのようにすればよいでしょうか?
ScrollHintは大勢に使われているライブラリのようですし、ScrollHint自体にバグがあるとは思えません。
とすると私のおこなったWordPress化の過程に問題があるのでしょうが、どこが悪かったのか分かりません。
問題のありそうな点やWordPress化する際のチェック事項などを指摘してくださると助かります。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー