regex_replaceモディファイアで特定のタグで囲まれたテキストを消す

置換前の表示
置換前の表示

トップページで、いわゆるアイキャッチ画像と記事の概要を並べて表示させるには、MTAssetThumbnailURLタグで画像を。MTEntryExcerptタグで記事の概要を出力しますが、記事本文の中に

<figure><a href="/img/2017-12-23code.jpg" title="シンタックスハイライト"><img alt="シンタックスハイライト" src="/assets_c/2017/12/2017-12-23code-thumb-320xauto-3196.jpg" width="320" height="180" /></a><figcaption>シンタックスハイライト</figcaption></figure>
投稿画面で、タグの挿入などをサポートする<a href="http://www.tinybeans.net/blog/download/mt-plugin/ceb2-plusutility.html">CEB2_plusUtility</a>プラグインをカスタマイズしてみます。

のように画像を埋め込んでfigcaptionタグでキャプション表示をさせていたりすると、MTEntryExcerptタグはHTMLタグを除去して

シンタックスハイライト
投稿画面で、タグの挿入などをサポートするCEB2_plusUtilityプラグインをカスタマイズしてみます。
Googleのシンタックスハイライトgoogle-code-prettifyに対応するため、<code>タグにクラスを付与することができます。
なお、...

というように、本文には入れたくない画像のキャプションが文頭に残ります。

そこで、MTEntryBodyタグから、正規表現によりregex_replaceグローバル・モディファイアでfigcaptionタグで囲まれたキャプションのテキストを消去してから、MTSetVarBlockブロックタグで変数に代入し、HTMLタグをremove_html="1"グローバル・モディファイアで除去してから出力しています。

具体には、

<$mt:EntryExcerpt words="100"$>

を、

<$mt:EntryExcerpt no_generate="1" setvar="entry_excerpt"$>
<mt:Unless name="entry_excerpt">
<mt:SetVarBlock name="regextext"><$mt:EntryBody regex_replace="/<figcaption>.*?<\/figcaption>/g",""$></mt:SetVarBlock>
<$mt:Var name="regextext" remove_html="1" trim_to="100+..."$>
</mt:Unless>

として置き換えました。

正規表現については、テキストエディタなどの検索・置換で動作確認してから行ってください。

こちらの記事も一緒に読まれてます。