• heght

    (@heght)


    投稿画面にビジュアルエディタとhtmlエディタの2種類があると思いますが、
    そのhtmlエディタを非表示にしたいです。

    いろいろと調べてみると、cssで表面上見せない
    という方法を採用しているページが多く、
    display:none;以外の具体的な方法がほとんど見つけられませんでした。

    また、以下のようなサイトを見つけたのですが、
    結局わかりませんでした。
    http://wpengineer.com/1946/disable-html-editor-wordpress/

    ※上記のサイトにあった以下のコードは使えるかもしれないと思ったのですが、
    どう使っていいのかわかりませんでした。

    jQuery(document).ready(function($) {
           $("#edButtonHTML").remove();
    });

    そこで、htmlエディタをcssによる非表示以外の方法で教えていただきたいと思い、
    今回トピックを作成させていただきました。

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

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • nobita

    (@nobita)

    多分CSS,javascriptのDOM操作,以外では、難しいと思います

    class-wp-editor.php line:114

    $buttons .= '<a id="' . $editor_id . '-html" class="wp-switch-editor switch-html" onclick="switchEditors.switchto(this);">' . _x( 'Text', 'Name for the Text editor tab (formerly HTML)' ) . "</a>\n";
    			$buttons .= '<a id="' . $editor_id . '-tmce" class="wp-switch-editor switch-tmce" onclick="switchEditors.switchto(this);">' . __('Visual') . "</a>\n";

    となっており、echo $buttons; しているだけなので、

    翻訳ファイルを操作して、テキストを消す事は出来ますが(多分)、cssでやるより悪いやり方になると思います。

    function my_default_editor() {
    	$r = 'tinymce'; // html or tinymce
    	return $r;
    }
    add_filter( 'wp_default_editor', 'my_default_editor' );

    のように、ビジュアルエディタを強制しておいて、CSSで表示するだけで、十分な感じがしますが、どのような問題で、CSS以外の選択肢を探しているのですか?

    トピック投稿者 heght

    (@heght)

    nobitaさん
    ご返信ありがとうございます。

    利用者が投稿出来るサイトを作ることを考えていまして、
    利用者が投稿画面でhtmlエディタを使用できる場合、
    ヘタにコードを埋め込まれる、といったようなことが発生してしまうと
    面倒なことになると思い、
    最初からビジュアルエディタだけにしたい、という意図がありました。

    現状は、nobitaさんがおっしゃってくださっていますように、
    ビジュアルエディタの強制+CSSによる消去という形にしています。

    Adminimizeというプラグインでhtmlエディタの消去なども
    行ってみましたが、投稿画面でバグが発生してしまっていたので、
    プラグインを使用せず、コードで対応しています。

    display:none;だけだと心細いと言いましょうか・・
    少し不安な部分もあったので、質問させていただきました。

    やはり、cssでの対応が無難なのでしょうか?

    nobita

    (@nobita)

    遅くなってごめんなさい

    利用者が投稿出来るサイトを作ることを考えていまして、
    利用者が投稿画面でhtmlエディタを使用できる場合、
    ヘタにコードを埋め込まれる、といったようなことが発生してしまうと
    面倒なことになると思い、
    最初からビジュアルエディタだけにしたい、という意図がありました。

    という事だと、htmlタブの表示を制限したくらいだと 不十分だと考えておられるのは当然だと思います。

    タブで制限しただけだと、プラグインから、挿入されるような場合、xml-rpcなどから挿入される場合などでは、タグの利用が禁止されているわけではないので、意図しない書き込みが発生する可能性は否定できません。

    htmlタグそのものを、制限することをお考えになってみてはどうか と思います。

    http://wpengineer.com/1963/customize-wordpress-wysiwyg-editor/

    http://codex.wordpress.org/Function_Reference/wp_kses

    トピック投稿者 heght

    (@heght)

    nobitaさん

    貴重なご意見ありがとうございます。

    nobitaさんが教えてくださいましたリンクを拝見しました。
    ただ、そのリンクを読んだところで、どのようにすればよいのかが
    わかりませんでした。

    nobitaさんの分かる範囲で結構ですので、
    もう少し具体的な解説をいただけませんでしょうか?

    わがままなお願いで申し訳ありませんが、
    もしよろしければ、また返信をいただけますと嬉しいです。

    nobita

    (@nobita)

    ワードプレスでは、管理者は、自由にhtml要素を利用できますが、それ以外の権限しか持っていない場合は、利用できる要素が多少制限されます。
    個人的なメモ:
    http://tenman.info/labo/snip/memo/%E6%A8%A9%E9%99%90%E5%88%A5%E3%80%80%E5%88%A9%E7%94%A8%E5%8F%AF%E8%83%BD%E3%81%AA%E3%82%BF%E3%82%B0%E4%B8%80%E8%A6%A7

    例えばですが、

    テーマのfunctions.phpに貼り付けてください。(一番最初の<?phpの手前に)

    <?php
    add_filter( 'the_content', 'my_html_filter' );
    
    function my_html_filter( $content ) {
    
    	//リンク要素だけ許可とか
    
    	$content = wp_kses($content, array( 'a' => array( 'href' => array() ) ));
    
    	return wpautop( $content );
    
    	//他にも、コメントで使える要素だけ許可
        // return wpautop( $content );の前に//を追加して使ってみてください
    
    	return wp_kses_data( $content );
    }
    ?>

    PHPでのstrip_tags()に似ていますが、利用できるhtml要素や、属性の利用を許可したりすることができます。

    サンプルでは、簡単にフィルタで書いていますが、アクションフックなどを利用することで、保存する場合に、特定のタグが使われている場合は、それを削除して保存するといったことが可能になります。

    研究してみてください

    トピック投稿者 heght

    (@heght)

    nobitaさん
    ご返信が遅くなってしまい、大変申し訳ございませんでした。
    nobitaさんのコードを貼り付けたことで、リンク以外が機能しなくなりました。
    驚きです。ありがとうございます。

    一点聞きたいのですが、
    nobitaさんのコードを貼りつけたところ、
    段落が効かなくなってしまいました。
    これも、コードで解決という形になるのでしょうか。

    よろしければご返信いただけますと嬉しいです。
    お願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「投稿画面のhtmlエディタを非表示にしたい」には新たに返信することはできません。