サポート » 使い方全般 » 「固定ページ」編集のみビジュアルエディタを無効に

  • 解決済 Wp-paper

    (@wp-paper)


    「固定ページ」の投稿時のみビジュアルエディタを無効にすることは
    出来ますでしょうか。

    権限別はトピックスがありましたので、
    管理画面の編集別を判断する関数があればと調べましたが
    判断つきませんでした。

    よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター jim912

    (@jim912)

    Wp-paperさん、こんにちは。

    いろいろ方法はあります。
    関数であれば、get_post_type が使えるかと思いますが、その他にも $post を参照するとか、$_GET[‘post_type’]から判別する事もできます。

    アクションフックを使うと上手く行きそうです。
    テーマのfunction.phpに以下のコードを追加してみて下さい。

    function disable_visual_editor(){
    	add_filter('user_can_richedit' , create_function('' , 'return false;') , 50);
    }
    add_action('edit_page_form', 'disable_visual_editor');

    ちょっと検索したらプラグインも出てきたので、以下のプラグインでも何とかなるかもしれません。
    Disable Visual Editor WYSIWYG

    追記:
    上記のコードで上手くいったと思いきや、一旦、投稿でビジュアルエディタで編集後、固定ページに移動するとそのままビジュアルエディタが有効になってHTMLで編集できなくなります…
    $_GET[‘post_type’]等で取得したほうが確実のようですね。

    jim912さん t.okuboさん
    アドバイスありがとうございます。

    プラグインも試してみましたが、投稿でビジュアルエディタから
    固定ページ編集に推移すると、ビジュアルタブに横線は入ってるものの
    ビジュアルエディタ時の表示状態でした。

    お二人にいただいた関数を元に、
    固定投稿ページ編集を判断

    ビジュアルエディタが有効状態であれば
    タブの表示も、記事の中身も「HTML」の状態に

    なるよう粘ってみます。

    ありがとうございました。

    function.php に下記コードを追加し
    固定ページの編集画面の入ったときに「ビジュアル」タブを無効に
    することはできましたが、やはり記事投稿で「ビジュアル」の状態から推移すると
    タブは「HTML」のままで入力欄のTEXTAREAが「ビジュアル」時の表示になります。

    function disable_visual_editor(){
    	echo '<script type="text/javascript">
    		 jQuery(document).ready(function(){
    		 switchEditors.go(\'content\', \'html\');
    		 document.getElementById("edButtonPreview").onclick = \'none\';
    		 document.getElementById("edButtonPreview").innerHTML = \'<span style="text-decoration:line-through">\'+document.getElementById("edButtonPreview").innerHTML+\'\';
    		 });
    	</script>';
    }
    add_action('edit_page_form', 'disable_visual_editor');

    「ビジュアル」「HTML」での違いを見比べると
    入力欄の<TEXTAREA>のstyle要素に「HTML」の場合は[display:none;]ないようですので、
    document.getElementById("content").removeAttribute("display");
    を追加しましたが、何も変化がありませんでした。

    現状の推測では、<TEXTAREA>に振られるidが動的に付けられているため
    処理の順番で要素を消す処理が働かないのでは?と考えているのですが、

    その後の解決策が出てきません。アドバイスの程お願いいたします。

    かなりやっつけですがこれでどうでしょう?
    FirebugでビジュアルエディタとHTML切り替えの動作を追って、HTML表示時に必要そうなクラスの付与や削除を行ってみました。

    function disable_visual_editor(){
    	add_filter('user_can_richedit' , create_function('' , 'return false;') , 50);
    	echo '<script type="text/javascript">
    		 jQuery(document).ready(function(){
    			jQuery("#edButtonHTML").addClass("active");
    			jQuery("#edButtonPreview").removeClass("active");
    			jQuery("#edButtonHTML").attr("onclick", "");
    			jQuery("#edButtonPreview").attr("onclick", "");
    			jQuery("#quicktags").css("display", "block");
    			jQuery("#quicktags").css("display", "block");
    			jQuery("#content").css("display", "inline");
    			jQuery("#content").css("color", "#000000");
    			jQuery("#content_parent").css("display", "none");
    		 });
    	</script>';
    }
    add_action('edit_page_form', 'disable_visual_editor');

    一応それっぽく動くような…

    t.okuboさん

    ソース書いてくださりありがとうございます。
    見事に希望通りの動きを実現できました。感謝。

    jsの勉強にもなり大変有意義な悩み時間となりました。

    こちらのコメントを持ちまして「解決済み」と
    させていただきます。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「「固定ページ」編集のみビジュアルエディタを無効に」には新たに返信することはできません。