サブサイトのフォーラムで以下のような質問がありました。
実は、moreタグ部分にプラグインなしでアドセンスを表示したく、色々探してみたところ、…(中略)
プラグインなしでmoreタグにアドセンスを表示させることはできますでしょうか?
てことで、今回は「プラグインを使わずWordpressのカスタマイズでmoreタグを広告に置換する方法」の紹介です。
目次
moreタグとは
とその前に、moreタグの簡単な説明をしておきます。
WordPressには、一覧ページなどで「続きを読む」を表示させるmoreタグという機能があります。
投稿管理画面のテキストエディターでは、「more」ボタンを押すと<!–more–>と入ります。
ビジュアルエディターだとボタンのやつです。
これにより、インデックス(一覧)リストなどで投稿が表示された際には、「続きを読む」と出てmoreタグ以降が表示されなくなる仕様です。
それで、個別の投稿ページを表示させると、moreタグ以降も全文が表示されます。
投稿ページには、当然ながらmoreタグらしきものは表示されていませんが、moreタグがあった部分には、以下のようなHTML要素が挿入されています。
<p>WordPressの投稿本文の前文です。</p> <p><span id="more-87"></span></p> <p>ここから投稿内容の本題に入ります。</p>
moreタグがあった部分には「<p><span id=”more-[投稿ID]”></span></p>」といったようなHTML要素が挿入されます。
今回は、このタグを本文から置換することで「moreタグ」を「アドセンス等の広告」に変更する方法を紹介したいと思います。
moreタグを広告に置換する方法
その方法は非常に簡単で、テーマのfunctions.phpに以下を追記でコピペするだけです(子テーマを利用している場合は子テーマのfunctions.phpにコピペしてください)。
//本文中の<!--more-->タグをアドセンスに置換 function replace_more_tag($the_content){ //広告(AdSense)タグを記入 $ad = <<< EOF ////////////////////////////////// //ここにアドセンスタグを挿入する// ////////////////////////////////// EOF; $the_content = preg_replace( '/(<p>)?<span id="more-([0-9]+?)"><\/span>(.*?)(<\/p>)?/i', "$ad$0", $the_content ); return $the_content; } add_filter('the_content', 'replace_more_tag');
functions.phpにコードを貼り付けたら、以下の部分をアドセンスコード(もしくはその他の広告コード)に変更してください。
////////////////////////////////// //ここにアドセンスタグを挿入する// //////////////////////////////////
動作確認
このカスタマイズを行うことにより、投稿ページで以下のようなmoreタグが入っている箇所があると
まとめ
こんな感じで、基本的にコピペのみでmoreタグを好きな広告に変更するカスタマイズを行うことができます。
もちろん、広告のコード部分を別のものに入れ替えれば、好きなものをmoreタグと置換して表示させることもできます。使い方次第でいろいろと応用はきくかと思います。
ということで「記事を書くたびに、moreタグを挿入しているけど何か有効活用したい」なんて場合は、試してみると良いかもしれません。逆に言えば、普段からmoreタグを使用していない場合には、あまり意味のないカスタマイズともいえます。