web-dev-qa-db-ja.com

Admin TinyMCEのクイックタグを削除するのに正しいフックを使っていますか?

これは、クライアントにとって何かよりも簡単なことです。

とにかく、ダッシュボードにいるときにクイックタグを無効にしようとしていて、をクリックしてください。コメント>コメントを編集します。その画面には、クイックタグ付きのTinyMCEがあり、textareaには "content"というIDがあります。

私はWordPressコアを知っています、これを変更することによってこれをwp-admin/edit-form-comment.phpの67行目で変更することができます:

wp_editor( $comment->comment_content, 'content', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings ) );

これには(quicktagsをfalseに設定):

wp_editor( $comment->comment_content, 'content', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => false ) );

しかし、私は明らかにcoreを編集したくないし、filter/hookを通してこれをしたいのです。これが私が試したことです。

function disable_tinymce_quicktags_comments ( $args ) {
  ob_start();
  $comment = get_comment_to_edit( $comment_id );
  wp_editor( $comment->comment_content, 'content', array( 'quicktags' => false ) );
  $args = ob_get_contents(); 
  ob_end_clean();
  return $args;
}

add_filter( 'admin_init', 'disable_tinymce_quicktags_comments' );

$ argsのvar_dumpはリターンの後に何も明らかにしていません、そしてこれはテキスト編集者がこの機能が起こっているとコメント編集スクリーン上でどのように見えるかです:

enter image description here

私はただ不可能を達成しようとしているのでしょうか、それとも私は間違ったフックを使っているのでしょうか。私はまだフックとPHPについて学んでいます。助言がありますか?ありがとう。 :-)

2
RachieVee

コードをチェックアウトした後、これを行うための最善の方法は、 wp_editor_settings/wp-includes/class-wp-editor.phpフィルタを使用することです。 wp_editor()を呼び出すと、内部的に_WP_Editors::editor($content, $editor_id, $settings);を呼び出します。この関数は最初に、そのフィルタを使用するparse_settings()を介して$settings配列を渡します。

add_filter( 'wp_editor_settings', 'remove_editor_quicktags', 10, 2 );
function remove_editor_quicktags( $settings, $id ){
    // $id will be 'content' in your example
    // use it in an if or make it gone for everything...

    // use $pagenow to determine if you are on the edit comments page.
    global $pagenow; 
    if ( $pagenow === 'comment.php' ){
        $settings['quicktags'] = false;
    }
    return $settings;
}

注 - このフィルタはWordPress 4.0以降で新しく追加されたため、利用するにはそれ以降が必要です。これは管理者上のTinyMCEのすべてのインスタンスにも影響します

2
doublesharp