WordPressの投稿編集画面には、ビジュアルエディタとテキストエディタの2種類の投稿エディタがあります。テキストモードではHTMLを直接入力することができるのですが、一旦ビジュアルモードに切り替えると自動整形機能によって思わぬ変更が加えられることがあります。
それを防ぐために編集画面を開いた時は、必ずテキストモードで開くようにする方法をご紹介いたします。
そもそもビジュアルモードを無効化する方法もありますが、今回ご紹介する方法は、ビジュアルモードを使えなくするわけではなく、あくまで開いた時にテキストモードにする方法なので、ビジュアルモードへの切り替えは可能です。
WordPressの投稿編集画面を開くときに必ずテキストモードで開くようにする方法
適用しているテーマのfunctions.phpに以下を追加するだけです。
add_filter( 'wp_default_editor', function () { return 'html'; } );
ちなみに、以下のように記述しても動作しますが、create_functionはPHP7.2から非推奨になっています。
add_filter( 'wp_default_editor', create_function('', 'return "html";') );
通常は、前回編集画面を閉じた時にビジュアルモードだった場合は、次に編集画面を開くとビジュアルモードで開かれるようになります。上記を追加することで、前回編集画面を開いた時のモードに関係なく、テキストモードで開くようになります。
固定ページのみテキストモードで開く
固定ページのみ、テキストモードで開くようにしたい場合は、以下のように記述します。
function open_text_editor_pages() {
global $typenow;
if ($typenow == 'page') {
add_filter( 'wp_default_editor', function () { return 'html'; } );
}
}
add_action('load-post.php', 'open_text_editor_pages');
add_action('load-post-new.php', 'open_text_editor_pages');
「$typenow == ‘page’」の部分で投稿タイプを指定します。
また、特定のページを除外したい場合は、以下のように投稿IDを指定します。
function open_text_editor_pages() {
global $typenow;
$post_id = $_GET['post'];
if ($typenow == 'page' && !in_array($post_id, array('12','20','32'), true)) {
add_filter('wp_default_editor', function () {
return 'html';
});
}
}
add_action('load-post.php', 'open_text_editor_pages');
add_action('load-post-new.php', 'open_text_editor_pages');
上記の場合、投稿IDが12/20/32のページは除外されます。
MW WP Formのフォーム作成画面をテキストモードで開く
MW WP Formというフォーム作成用のプラグインがありますが、こちらもフォーム作成画面は投稿エディタになっています。なので、同じようにテキストモードで開くように指定することが可能です。
以下のように記述すると、固定ページとMW WP Formの編集画面がテキストモードで開くようになります。
function open_text_editor_pages() {
global $typenow;
if ($typenow == 'page' || $typenow == 'mw-wp-form') {
add_filter('wp_default_editor', function () {
return 'html';
});
}
}
add_action('load-post.php', 'open_text_editor_pages');
add_action('load-post-new.php', 'open_text_editor_pages');
あとがき
モード切替によって自動整形された状態で、上書き保存してしまうリスクを軽減することができますね。
基本はHTMLモードで編集するけど、ビジュアルモードも使うよ、という場合はぜひお試しください。