WordPressのmoreタグと置換するコードを条件分けする

WordPressのmoreタグと置換するコードを条件分けする

このブログは、「続きを読む」の部分(moreタグ部分)を広告コードと置換させているんですが、この条件の記事の場合はこっちのコードを使いたいな、それ以外はこっちを表示させたいな、など思うところがあったのでその方法をメモ。


おさらい

以前このような記事を書きまして、その内容をさらっとおさらい。

<!--more-->

テキストモードの標準でついてる「more」ってボタンを押すと出てくるこれ。

<span id="more-XXXX"></span>

投稿するとこのように出力されます(XXXXには記事ID)。この部分を置換するため functions.php に、

//more位置へ挿入
add_filter('the_content', 'adMoreReplace');
function adMoreReplace($contentData) {
$adTags = <<< EOF

コード

EOF;

$contentData = preg_replace('/<span id="more-[0-9]+"><\/span>/', $adTags, $contentData);
return $contentData;
}

このように書くことで、5~7行目の中に書いたものとmoreタグを置換してくれます。

元記事には更に変数を含んで置換とかも書いてあるので詳しくはそちらをご参照ください。

条件分けして置換

//more位置へ挿入
add_filter('the_content', 'adMoreReplace');
function adMoreReplace($contentData) {
if ( in_category('カテゴリ名') ) {
$adTags = <<< EOF

コード1

EOF;
} else {
$adTags = <<< EOF

コード2

EOF;
}
$contentData = preg_replace('/<span id="more-[0-9]+"><\/span>/', $adTags, $contentData);
return $contentData;
}

特定のカテゴリに含まれる記事の場合はコード1を、それ以外の記事の場合はコード2を$adTagsという変数に入れて置換する、というサンプルです。タグで指定したい場合は4行目をhas_tag('タグ名')にしてください。

インデント入れたほうが絶対わかりやすいとは思うのですが…。テキストとかも混ざるので下手に入れないほうがかえって使いやすいかもと思ってこんな形にしてます。

以上です!

余談ですが、二女は三ヶ月になりました。比較的夜中は全員寝静まるので、自分の体力が余った時だけひっそりネットを徘徊したりしてます。まだまだ不定期更新になりそうですが、ネタになりそうなことはメモっておきます!

公開日:2015/08/19

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)