web-dev-qa-db-fra.com

Est-ce que j'utilise le bon crochet pour supprimer les quicktags sur l'administrateur TinyMCE?

Ceci est plus un exercice que quelque chose pour un client.

Quoi qu'il en soit, j'essaie de désactiver les balises rapides lorsque vous êtes sur le tableau de bord et que vous cliquez sur Commentaires> Modifier le commentaire . Sur cet écran, il y a un TinyMCE avec des étiquettes rapides et la zone de texte a un identifiant de "contenu".

Je sais que dans WordPress, cela peut être changé à la ligne 67 de wp-admin/edit-form-comment.php en modifiant ceci:

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

Pour cela (quicktags défini sur false):

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

Mais évidemment, je ne veux pas éditer le noyau et je veux le faire via un filtre/hook. C'est ce que j'ai essayé.

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' );

Un var_dump de $ args ne révèle rien après le retour, et voici à quoi ressemble l'éditeur de texte sur l'écran Éditer le commentaire avec cette fonction activée:

enter image description here

Est-ce que j'essaie simplement de réaliser l'impossible ou est-ce que j'utilise simplement le mauvais crochet? J'apprends encore sur les hooks et PHP. Aucune suggestion? Merci. :-)

2
RachieVee

Après avoir vérifié le code, la meilleure façon de procéder consiste à utiliser le filtre wp_editor_settings dans /wp-includes/class-wp-editor.php . Lorsque vous appelez wp_editor(), il appelle en interne _WP_Editors::editor($content, $editor_id, $settings);. Cette fonction passe d'abord le tableau $settings à travers parse_settings() qui utilise ce filtre.

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;
}

Remarque - Je viens de me rendre compte que ce filtre est nouveau à partir de WordPress 4.0, vous en aurez donc besoin ou plus récent pour en tirer parti. Cela affecte également toutes les instances de TinyMCE sur l’administrateur.

2
doublesharp