定番ブログエンジンの「WordPress」を使って複数人でサイトを運営していると、本文中のHTMLタグや属性が保存時に削除されてしまう問題に悩まされることがある。
この現象は、権限の少ない「寄稿者」や「投稿者」に分類されているユーザーが記事を保存する際に発生する。そのため、執筆担当者から問題を報告されても、管理者のアカウントでは再現出来ずに、解決に苦労することも多い。
HTMLタグが削除されるのは、十分に信頼できない執筆者が有害なHTMLを埋め込んだりできないようにするためだが、動画などの埋め込みによく使われる「iframe」タグも使えなくなってしまうので困ることが多い。
これらのHTMLタグの使用制限を解除する方法としては、権限を「編集者」以上にするのが手軽だが、「編集者」権限では他の人の投稿の編集など、多くの操作が許可されてしまう。
HTMLタグ使用制限だけを解除したければ、テーマディレクトリの「functions.php」にフィルタ処理を追加し、許可する操作のリストを上書きしてやろう。
また、フィルタを使えば、許可するHTMLタグ・属性のリストを上書きして、特定のタグのみ制限を解除することも可能だ。
WordPressでは、管理画面にアクセスできるユーザーにも「管理者」「編集者」「投稿者」「寄稿者」の4段階の権限グループがある。HTMLタグの制限は「投稿者」「寄稿者」のみに適用されるので、信頼できるメンバーならば「編集者」や「管理者」の権限を与えておくといいだろう。
・ユーザーの種類と権限 - WordPress Codex 日本語版
add_filter('user_has_cap','allow_unfiltered_html',10,3);
function allow_unfiltered_html($allcaps, $cap, $args ){
$allcaps['unfiltered_html']=$allcaps['edit_posts'];
return($allcaps);
}
ハンドルネームしか知らない外注のライターなど、十分に信頼できない執筆者のHTMLタグ使用制限を解除したい場合は、テーマファイルのディレクトリにある「functions.php」に上記のコードを追加しよう。記事編集権限のあるユーザーに無制限のHTMLタグ使用が許可されるぞ。
add_filter('wp_kses_allowed_html','allow_embeddings',10,2);
function allow_embeddings($tags,$context){
if($context=='post'){
$tags['iframe']=array(
'class'=>array(),
'src'=>array(),
'width'=>array(),
'height'=>array(),
'frameborder'=>array(),
'scrolling'=>array(),
'allowtransparency'=>array(),
'marginheight'=>array(),
'marginwidth'=>array()
);
$tags['script']=array(
'src'=>array(),
'type'=>array(),
);
$tags['embed']=array(
'style'=>array(),
'type'=>array(),
'id'=>array(),
'height'=>array(),
'width'=>array(),
'src'=>array(),
'object'=>array(
'height'=>array(),
'width'=>array(),
'param'=>array(
'name'=>array(),
'value'=>array()
)
)
);
$tags['object']=array(
'height'=>array(),
'width'=>array(),
'param'=>array(
'name'=>array(),
'value'=>array()
),
'embed'=>array(
'style'=>array(),
'type'=>array(),
'id'=>array(),
'height'=>array(),
'width'=>array(),
'src'=>array()
)
);
}
return($tags);
}
特定のタグの制限を解除したい場合は、上記のように「wp_kses_allowed_html」のフィルタ処理を追加しよう。この例では、動画などの埋め込みに使われるiframe、script、embed、objectのタグと主要属性を許可している。

全世界1,000万以上ダウンロード超え!水分補給サポートアプリ最新作『Plant Nanny 2 - 植物ナニー2』が11/1より日本先行配信開始中
たこ焼きの洞窟にかき氷の山!散歩を習慣化する惑星探索ゲーム『Walkr』がアップデート配信&6/28までアイテムセール開始!
【まとめ】仮想通貨ビットコインで国内・海外問わず自由に決済や買い物ができる販売サイトを立ち上げる
WordPressで過去の記事を紹介するHTMLを手軽に作成する方法ってある?
WordPress管理画面の記事一覧の無駄に幅が広い列って何とかならない?
WordPressが本文中の引用符などを勝手に全角にしてしまうので困る
WordPressの固定ページを「.html」付きのURLにすることってできないの?
WordPressの画像表示ページのURLが気に入らない。書式って変えられないの?
WordPressでうっかりビジュアルモードを使ってタグを消されてしまうのを防ぎたい
