ビジュアルエディタの自動整形機能を防ぐ方法
WordPressのビジュアルエディタ(TinyMCE)は、投稿時に不正と判断したHTMLタグや属性を自動で削除することがあります。特定のタグを維持したい場合、functions.phpや設定の変更で削除を防ぐことが可能です。
1 実装のポイント
ビジュアルエディタが削除するタグや属性を許可することで、意図したHTMLをそのまま投稿できます。特に iframe、style、data-* 属性などを使う場合に有効です。
2 functions.php にコードを追加
// ------------------------------
// ビジュアルエディタの自動整形機能を防ぐ
// ------------------------------
// 投稿で特定タグや属性を許可
add_filter('wp_kses_allowed_html', function($allowed, $context) {
if ($context === 'post') {
// iframeを許可
$allowed['iframe'] = array(
'src' => true,
'width' => true,
'height' => true,
'frameborder' => true,
'allowfullscreen' => true
);
// data-* 属性を許可
$allowed['*']['data-*'] = true;
}
return $allowed;
}, 10, 2);
// TinyMCEの設定でタグ削除を抑制
add_filter('tiny_mce_before_init', function($init) {
$init['valid_elements'] = '*[*]'; // 全タグ・全属性を許可(必要に応じて制限可)
$init['extended_valid_elements'] = '*[*]';
$init['verify_html'] = false;
return $init;
});
補足:
- 全タグ・全属性を許可する場合、セキュリティリスクがあります。
- iframeやscriptを許可する場合、投稿者の権限を限定することが安全です。
- TinyMCE Advanced(Advanced Editor Tools)プラグインを使うとGUIで管理可能です。
3 代用プラグイン
TinyMCE Advanced(Advanced Editor Tools)を利用すると、GUIで許可タグや属性を設定可能です。
プラグインを使うとfunctions.phpを触らずに管理できます。
4 まとめ
WordPressのビジュアルエディタが不要なタグを削除する場合、functions.phpで許可タグや属性を設定することで阻止可能です。
ただし全タグ・全属性を許可する場合はセキュリティに注意してください。必要に応じてプラグインと組み合わせるのがおすすめです。


