WordPress に記述できるプロトコル(スキーム)を拡張する

WordPress の記事の中などでリンクを記述する場合、特定のスキームしか書くことができません。たとえば http://mailto: は書くことができますが、git://skype: などと書こうとしても、自動的に削除され、http:// とみなされてしまいます (管理者権限で記事を書いている場合は適用されず、自由に書くことができます。権限が編集者以下の場合です)。

調べてみると、WordPress 3.3 からこの制限は wp-includes/functions.phpwp_allowed_protocols() に書かれています。そこを見てみると、スキーム名を追加するには kses_allowed_protocols というフックを使えばよさそうです。

いま xmpp: というスキームのリンクを記述したいので、テーマの functions.php あたりに

function ext_protocols ($protocols) {
  $protocols[] = 'xmpp';
  return $protocols;
}
add_filter('kses_allowed_protocols', 'ext_protocols');

と書きました。これで記事中にxmpp:mako@pasero.netxmpp:なんでも談話室@muc.step.im?join などのリンクを記述できるようになりました。

コメントをどうぞ