こんな疑問を今回は解消します。Diverでh2直前の広告表示位置に頭を悩ませている方は参考にしてみてください。
- DiverとTOC+の表示位置関係
- Diverのh2直前ウィジェットをTOC+の目次の上に表示させる方法
ワードプレスの中身はよく知りません
今回広告位置の変更をする上でコードを少し見たりして、何となくなんでこういう状況になっているのかは分かりました。ただ自分ワードプレスの開発などはほとんど経験がないのであくまで予測ということになります。まあやっていきましょう。
デフォルトだとh2直前の広告ウィジェットはTOC+の目次下に表示される
自分の場合ですが、h2の直前に入れるアドセンス広告はDiverのウィジェットにあるh2直前ウィジェットの中に【Diver】広告エリアっていうのを入れて表示しています。
そして目次の表示にはプラグインのTable Of Contents Plusを使っての表示です。これですね。
TOC+の設定
TOC+の設定はこんな感じで、位置は最初の見出しの前(デフォルト)です。
ただこうしたときにTOC+で作成された目次の後にアドセンス広告が表示されます。
アドセンス広告の表示を目次の上にしたかったので、設定項目などを見てもそれができる部分はありません。
調べても出てこないし、こうなるとテーマやプラグインのコードを見るしかなくなってしまいます。ただコードを見ていたら何となく原因は分かったので、解決策を記載しておきます。
アドセンスをTOC+の目次の上に表示する方法
[外観→テーマファイルエディター]と進んでDiverのテーマから[lib→functions→adsense.php]の最終行に注目しましょう。こんな風に書かれています。ここの最後の100を99に変更する。
これで広告がTOC+で作成した目次の上に表示されるようになります。
ウィジェットの表示順を変更しているよ
単純に目次とDiverで設定した広告ウィジェットの表示順番を変えているだけです。TOC+もDiverのh2直前ウィジェットもh2の直前に入れる設定になっているようなので、その順番をコードで変更してあげた次第です。
解消に至った流れをメモしておく
自分ワードプレスのテーマなんて開発したことないし、ワードプレスがどういう作りになっているのかは分かりません。ただ今回この問題を解消するためにどこが要因になっているのかなー?ってコードを眺めていました。
今回調べた点を備忘録的に残しておこうと思います。ワードプレスのことは分からないので、あくまで予測です。
ワードプレスの中身がどう動いているのか知らないので、パパっと原因が掴めるものではないですが、何となくコードを見ればやっていることの雰囲気は読み取れます。
ウィジェットの登録はDiverテーマの中のlib→widgetの中で行われているみたい
DiverのウィジェットはDiverテーマファイル内のlib→widget内のファイルで行われています。例として広告管理のウィジェットを見てみると書かれていますね。
これがおそらくこのウィジェット。
h2直前広告の挿入はlib→adsense.phpのaddfilterで行われている
add_filterはワードプレスの関数なんだけど、フィルタとかいうものを追加できるらしいです。以下の記事が参考になりました。
>> WordPressのadd_filterとapply_filtersのまとめ
調べるとワードプレスはウィジェット呼ぶときはdynamic_sidebar()っていう関数を使うらしかったら、個別記事(single.php)で広告ウィジェット呼び出すdynamic_sidebar()が書かれているのかな?と思って見たんだけど書かれていなかったんですよね。
じゃあ別の何かかなって思っていろいろ見ていたらそれっぽいものを見つけた次第です。the_contentが記事本文を呼び出すようなものらしいから、それが目印になったかな。
でこのadd_filterの3番目の引数を999から99に変更したんだけど、これはTOC+との兼ね合いで表示順を変更するためです。
TOC+のコードを見てみる
きっとTOC+でも同じように記事本文前に挿入するようなコードになっているんだろうなあ・・・っていうのを思ったので、TOC+のコードを見てみました。ワードプレスの管理画面からは見れなかったので、エックスサーバーのファイルマネージャーから確認しました。
すると同じようにadd_filterっていうのがありますね。
ここの値が100になっていたので、Diverの方ではそれより前の99にすれば順番も入れ替わるかな?と仮定して実行してみると目次と広告の順番が入れ替わった次第です。
まとめ
うーん、コードまでいじって変更しないといけないのはちょっと面倒ですよね。ワードプレスで使われている関数のこと調べないと何やっているか分からない部分も多いし、原因の発見までたどり着くのに時間がかかってしまいます。
ワードプレス力があれば問題ないんだろうけど、そんな力はなかったです。
とはいえなんとなくやっていることは分かったので良かったです。ただワードプレスの中身に関しては本当に分からないので、今回書いた内容はあくまで予測にすぎません。