WordPressのテキストウィジェットで出力時にコメントアウトを消す方法:メモ

悩み
悩み

機会があったので、その後試したことをメモとして。

WrodPressの自動整形に関するものですが、実用性はあまりなさそうです。

構築環境
WordPress4.9.1
PHP7.1.4

前提

まず、以下の問題発生時を想定しています。

  • テキストウィジェットを使用
  • 入力欄に<!– –>を使ったコメントアウトを記述
  • 出力時、コメントアウト部分がpタグに囲まれたり、Enterによる改行(brタグの追加)が反映されてしまう

コメントアウト自体が自動整形の対象となるようで、意図しないpタグやbrタグの追加が行われてレイアウトに影響が出てしまいます。

上記を前提に以下をめざしました。

実現したいこと

実現したいことは以下の通り。

  • ウィジェット内のコメントアウトを消す
  • コメントアウト前後の改行を消す

本当はコメントアウト自体を自動整形の対象からはずしたかったのですが、方法がわからなかったため削除に変更しました。

コード

作ったコードは以下の通り。


function remove_commentout($content){
  $content = preg_replace('/<br \/>(?:\n|\r|\r\n)<!--.*-->/i', '', $content);
  $content = preg_replace('/<!--.*--><br \/>/i', '', $content);
  $content = preg_replace('/<!--.*-->/i', '', $content);
  return $content;
}
add_filter('widget_text_content', 'remove_commentout');

正規表現部分は自信があまりありませんが、動作自体は確認できました。

フックに指定しているwidget_text_contentthe_contentに書き換えれば、通常の投稿欄でも同様の動作は可能です。

結び

作っておいてなんですが、出力のたびにコメントアウトを正規表現で探しているので、あまりおすすめできる方法ではありません。

別の方法があるならそちらの方がよいかなと思います。

0人がこの記事を評価

役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。

連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。

コメント欄