WordPress

「続きを読む(more)」の直後に文字列・画像を追加してみる:【6日目】WordPress1日1プラグイン

更新日:

ようこそのお運びで、厚く御礼申し上げます。
6日目、今回は記事前後に挿入するのではなく、moreの直後、内部に挿入してみることにします。

「続きを読む(more)」の直後に文字列・画像を追加してみる

すべての記事の個別ページを開いたとき、続きを読むの部分の直後に文字列や画像を挿入してみます。バナー広告等を挿入する場合に使えるかな?

まずは、functions.phpに書いてみます。

では、functions.phpに以下のコードを書きました。

 function paka3_customMore($contentData) {
   //挿入する画像や文字列
   $str  = "<div>すべての記事ページの「続きを読む」の後に挿入されます。広告とかいいかも</div>";
   $str .= "<img src='http://www.paka3.net/wp-content/uploads/2014/01/wpicon1.png' alt='1日1プラグイン'>";

   //【条件】すべての個別記事 &「続きを読む」の後に挿入
   if( is_single() && preg_match( '!<span id="more-[0-9]+"></span>!',$contentData, $regs)){
            return str_replace( $regs[0],$regs[0].$str, $contentData);
   }

   //ない場合はそのまま返す
   return $contentData;
  }
 add_filter('the_content','paka3_customMore');

本文

ポイントはどこ?

本文

  • 引数「$contentData」は記事本文です。
  • preg_matchで、$contentData内部の「続きを読む」の文字列(html)を見つけ出します
    正規表現を使って「<span id="more-[0-9]+"></span>」を検索。
    $regs[0]]に見つかった「<span id="more-**"></span>」が代入されます。

    preg_match( '!<span id="more-[0-9]+"></span>!',$contentData, $regs)
  • is_single()は個別ページ以外のすべての記事かどうか?という条件
    条件指定を行う場合は、この部分すれば良いかもしれません
  • 本文($contentData)の中から、$regs[0]を見つけ出し文字列・画像を挿入したものを置換
    str_replace( $regs[0],$regs[0].$str, $contentData);
  • add_filter:指定したフィルターフックに、関数をフックします
    add_filter('フックするフィルター名','呼び出す関数名')

コードをプラグイン用のファイルにします

それではfunctions.phpに書いたコードを消して、
paka3_customMore.php」というファイルを作成し、以下のコードを記入します。

このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。

今回のまとめ

今回は正規表現を使って文字列を置換してみました。
コンテンツ本文の内部を置換する場合は、正規表現を使って置換する方法があります。
まとめてする場合は、正規表現を使ってみると早いかもしれませんね。

-WordPress
-, ,

Copyright© アルパカ@ラボ , 2019 All Rights Reserved Powered by AFFINGER5.