ようこそのお運びで、厚く御礼申し上げます。
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」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回は正規表現を使って文字列を置換してみました。
コンテンツ本文の内部を置換する場合は、正規表現を使って置換する方法があります。
まとめてする場合は、正規表現を使ってみると早いかもしれませんね。