web-dev-qa-db-ja.com

TinyMCEに貼り付ける際に、隠れたフォーマットを完全に取り除きます

WordPress v4以降では、ユーザーがTinyMCEビジュアルエディタにコンテンツを貼り付けたときに隠れていたフォーマットをすべて削除したいと思います。

テキストとして貼り付けボタンは、ユーザーがMicrosoft Wordからテキストを挿入したときに機能しますが、Pages for OSXなどの他のアプリケーションでは機能しません。

あなたはWordのためのすべてのフォーマットを取り除くために以下を使うことができます(ありがとう Till Kruss ):

class PasteAsPlainText {

    function __construct() {

        add_action( 'admin_init', array( $this, 'init' ) );

    }

    function init() {

        add_filter( 'tiny_mce_before_init', array( $this, 'forcePasteAsPlainText' ) );
        add_filter( 'teeny_mce_before_init', array( $this, 'forcePasteAsPlainText' ) );
        add_filter( 'teeny_mce_plugins', array( $this, 'loadPasteInTeeny' ) );
        add_filter( 'mce_buttons_2', array( $this, 'removePasteAsPlainTextButton' ) );

    }

    function forcePasteAsPlainText( $mceInit ) {

        global $tinymce_version;

        if ( $tinymce_version[0] < 4 ) {
            $mceInit[ 'paste_text_sticky' ] = true;
            $mceInit[ 'paste_text_sticky_default' ] = true;
        } else {
            $mceInit[ 'paste_as_text' ] = true;
        }

        return $mceInit;
    }

    function loadPasteInTeeny( $plugins ) {

        return array_merge( $plugins, (array) 'paste' );

    }

    function removePasteAsPlainTextButton( $buttons ) {

        if( ( $key = array_search( 'pastetext', $buttons ) ) !== false ) {
            unset( $buttons[ $key ] );
        }

        return $buttons;

    }

}

new PasteAsPlainText();

そして、表示したいボタンを選択することで、テキストとして貼り付けボタンを非表示にすることができます(ユーザーが選択を解除できないようにします)。

function formatTinyMCE( $in ) {
    $in['toolbar1'] = 'bold,custom_em,blockquote,aligncenter,link,unlink,spellchecker,undo,removeformat';
    return $in; 
}
add_filter( 'tiny_mce_before_init', 'formatTinyMCE' );

Wordが邪魔にならなくなったので(ついに)、TinyMCEに貼り付けられたすべての隠しフォーマットを完全に削除するにはどうすればよいでしょうか。

_ update _ :一つのアプローチcouldpaste_Word_valid_elements のようなinitオプションを見つけることと有効なタグの空のリストを持つことです。

6

私はあなたが何を必要としているのかよく理解していませんが、私はあなたがどこからでもプレーンテキストとしてテキストを挿入しようとしていると思います:ブラウザ、M $ Word、Pages。

このためには Advanced TinyMCE Con​​figuration pluginを使用することができます。このプラグインをダウンロードしてアクティブにした後は、手動設定が必要です。この解決策は、上記の質問のセクションで提案したコードよりも優れています。

Option name                  Value
paste_strip_class_attributes all
paste_remove_spans           true
paste_remove_styles          true
paste_as_text                true
paste_text_sticky            true
block_formats                Paragraph=p;Header 2=h2;...

Configのこれらすべての部分(パラメータ)は Tiny MCEのドキュメントページにあります

  1. paste_strip_class_attributes - 3からの古い属性hrefaltclassonError、..のようなすべてのタグ属性を削除するためのバージョン.
  2. paste_remove_spans - 同じく3からバージョン。貼り付け中に、すべてのspan(インライン?)要素を削除できます。
  3. paste_remove_styles - trueの場合、ブラウザの種類にかかわらず、貼り付け時にすべてのスタイル情報を削除します。 Word 2000から貼り付けると、tinyMCEがエラーになります。
  4. paste_as_text - このオプションを使用すると、「テキストとして貼り付け」編集メニューオプションのデフォルトの状態を設定できます。デフォルトでは無効になっていますが、デフォルトで強制的に有効にすることができます。
  5. paste_text_sticky - ユーザーが[テキストとして貼り付け]ボタンの選択を解除するまで、テキスト貼り付け機能を有効にします。
  6. block_formats - 私のサイトの追加設定:)

この設定は私のサイトではうまく機能し、私はいつもプレーンテキストのようにTinyMCEにテキストを挿入します。

TinyMCEチューニング用の便利なプラグイン TinyMCE Advanced

1