Secura Vita

Category: Works , WordPress
Works

wordpress:ビジュアルエディタを無効にする

wordpress:ビジュアルエディタを無効にする

wordpressのビジュアルエディターはHTMLのコーディングができる人からすると逆に厄介なツールでもあります。

自分、もしくは制作会社が作成・更新するならビジュアルエディターを使わないという設定をすればいいだけなのですが、クライアントに更新を任す場合は注意が必要です。

なので、ビジュアルエディターを完全に無効化したり、投稿タイプによって有効・無効の設定をしたりする方法を書いていきます。

ビジュアルエディターの問題点

通常の状態でもビジュアルエディターをテキストエディターを切り替える事は可能なので、HTMLソースをそのまま投稿することは可能です。

ビジュアルエディターの問題点

ただ、テキストエディターで投稿してからビジュアルエディターに切り替え、その後またテキストエディターに戻すと・・・

pタグやbrタグ、spanタグ等が消えてる!

というような事が起こります。

ビジュアルエディターの問題点

もう一つの問題点は、固定ページはテキストエディターにHTMLソースを投稿し、投稿ではビジュアルエディターを使って投稿したいという場合、最後に使ったモードが引き継がれると言うことです。

固定ページ(テキストエディター)→投稿(ビジュアルエディター)→固定ページ(ビジュアルエディター

更新しない限り内容は変わらないので編集画面で気をつければいいんですが、ついつい確認せず更新してしまったり、クライアントが更新してしまったりということがあると、HTMLソースが改変されます。

ですので、自分自身で管理する場合以外はこのあたりを含め取り扱いには気をつけたほうがいいと思います。

ユーザー単位でビジュアルエディターを無効化する

wordpressのユーザー設定には「ビジュアルリッチエディターを使用しない」という項目があり、これが有効になっていれば全ての箇所でビジュアルエディターは無効化されます。

ユーザー単位でビジュアルエディターを無効化

ただ、ユーザー単位なのでもちろん違うユーザーだとビジュアルエディターは使えてしまうので上記で書いた問題の解決にはなりません。

自分で管理する際の保険ですかね。

フィルターフック:user_can_richedit

wordpressにはビジュアルエディターを出力する際に通るフィルター「user_can_richedit」が用意されており、これを使用することでビジュアルエディターを無効化するを無効化することができます。

テーマのfuncstions.phpに追加します。

全て無効

ビジュアルエディターを全て無効にします。

add_filter( 'user_can_richedit', '__return_false' );

特定の投稿タイプのみ無効

クライアントが新着情報で使う投稿はビジュアルエディターを使わせたいが、固定ページはHTMLのコーディングデータをそのまま登録したいといったような場合です。

function disable_visual_editor( $wp_rich_edit ) {
	$posttype = get_post_type();
	if ( $posttype === 'page' ) {
		return false;
	} else {
		return $wp_rich_edit;
	}
}
add_filter( 'user_can_richedit', 'disable_visual_editor' );

上記では固定ページのみビジュアルエディターが無効になります。

特定のページのみ無効

固定ページの中でも特定のページだけ無効にしたいといったような場合です。

function disable_visual_editor( $wp_rich_edit ) {
	global $post;
	if ( $post->post_type == 'page' &&  $post->post_name == 'about') {
		return false;
	} else {
		return $wp_rich_edit;
	}
}
add_filter( 'user_can_richedit', 'disable_visual_editor' );

上記では固定ページかつスラッグがaboutのページのみビジュアルエディターが無効になります。

投稿済みのページでないと無理ですが、絶対にビジュアルエディターにされたくないページを指定できます。

出力時の処理

上記の設定でビジュアルエディターを無効にし、HTMLソースをそのまま登楼しても出力時に余計なpタグが追加されたりします。

なので出力時の整形処理を無効化します。

<?php the_content(); ?>
↓
<?php remove_filter('the_content', 'wpautop'); ?>
<?php the_content(); ?>

funcstions.phpで設定もできますが、分岐もめんどくさいので投稿・固定ページくらいの違いならテンプレートに直接書いてしまうほうが楽かなと思います。

こういう事をやるのって基本仕事だと思いますので。


おもしろかった・役に立った
▼ブログランキング参加中!クリック!▼
  • ブログランキング・にほんブログ村へ

Comment

  1. 西村裕也 より:

    ビジュアルエディターの自動変換に困り果てていました。
    この記事を読んで大変助かりました。ありがとうございます。

    1. あつお より:

      コメントありがとうございます。
      wordrepssは便利なんですが勝手にあれこれやることも多くてなかなか悩ましいですよね。
      お役に立てて何よりです!

西村裕也 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ソースコードを記入する場合は [code]~[/code] でくくってください。
[code]
echo "Hello World";
[/code]

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください