【メモ】bbpressのエディター上のタグボタンを減らしその他のタグを文字表示

この記事は、本サイトにbbpressを設置した際に行ったカスタマイズ内容のメモです。

bbPress

カスタマイズ経緯

bbpressはトピックの作成や返信時に、htmlのタグを使用することができる。
そして<script>タグが普通に使えたりする。
やり方によっては、勝手にリダイレクトしたりして、めちゃくちゃヤバい。
何か設定があるのかもしれないけれど…

メンドウなので、特定のタグ以外は文字として表示することにした。

カスタマイズ内容

1.エディターのタグを減らす

bbpressのエディター上のタグ挿入ボタンは、デフォルトでは次のようになっている。

bbpressのエディター上のタグ挿入ボタン(カスタマイズ前)

これを、次のように変更する。

bbpressのエディター上のタグ挿入ボタン(カスタマイズ後)

このタグを選んだ理由

b-quote…引用タグ。引用する時に必須なので、使用可にする。

code…質問時にコードを記載してもらいたいので、使用可にする。

2.b-quote、code以外は、文字で表示されるようにする。

<a href="https://aaa.com">aaa</a>

が入力されたら、通常は次のようになる。

bbpressでaタグを送信した場合(通常)

これを、次のように文字で表示させる。

bbpressで送信されたaタグを文字で表示

カスタマイズ前の準備

次の記事の方法で、カスタマイズの準備を行います。

WordPressカスタマイズの準備|自作したコードはテーマをバージョンアップしたら消えてしまう?

WordPressカスタマイズの準備|自作したコードはテーマをバージョンアップしたら消えてしまう?

質問 ネットで調べてみると、functions.phpを書き換えるように指示されていることが多いですね。 質問者様も、こちらを書き換える予定だと思います。 テーマのバージョンアップで配布されるファイルには、新しいfunc […]

続きを読む

カスタマイズ用コード

準備した自作プラグインに次のコードを貼りつけます。

  • add_filter('bbp_get_quicktags_settings','my_bbp_get_quicktags_settings');
  • function my_bbp_get_quicktags_settings( $settings ) {
  • $settings['buttons']="code,block";
  • return $settings;
  • }
  • add_filter( 'bbp_new_reply_pre_content','my_bbp_new_reply_pre_content');
  • add_filter( 'bbp_new_topic_pre_content','my_bbp_new_reply_pre_content');
  • function my_bbp_new_reply_pre_content( $comment_content ) {
  • $comment_content = htmlspecialchars($comment_content, ENT_QUOTES);
  • $comment_content=my_bbescape_tags_replace($comment_content,'code');
  • $comment_content=my_bbescape_tags_replace($comment_content,'blockquote');
  • return $comment_content;
  • }
  • function my_bbescape_tags_replace( $comment_content,$replace_tag ) {
  • return preg_replace('/<;(\/{0,1}' .$replace_tag.')>;/i', '<$1>', $comment_content);
  • }
AFFS Simple Code Viewer
Copy

処理の内容

【1行】bbpressのエディタータグ設定フィルタに関数を登録

【2~5行】表示するボタンを設定

「strong,em,link,block,del,img,ul,ol,li,code,close」から、使用するタグを,(カンマ)で区切る

【7,8行】エディターから送信されてきたデータを処理するフィルターに関数を登録

【10行】htmlエンティティ化

【16行】エンティティ化したデータから、使用可にしたいタグを元に戻す。
※この処理は、aタグなどの、タグ内に属性があるものを考慮していません。