web-dev-qa-db-fra.com

Personnalisation de l'éditeur WordPress TinyMce et de ses boutons

J'essaie de personnaliser l'éditeur TinyMce dans WordPress et j'ai pris ce code sur un ancien site WP que j'ai fait, mais les boutons que j'ai définis ne semblent pas fonctionner, par exemple, voici ce que J'ai:

add_filter( 'tiny_mce_before_init', 'blm_format_tiny_mce' );

function blm_format_tiny_mce( $in ) {
    $in['remove_linebreaks']            = true;
    $in['convert_newlines_to_brs']      = false;
    $in['keep_styles']                  = true;
    $in['tabfocus_elements']            = 'major-publishing-actions';
    $in['paste_remove_styles']          = false;
    $in['paste_remove_spans']           = true;
    $in['paste_strip_class_attributes'] = 'mso';
    $in['paste_text_linebreaktype']     = 'combined';
    $in['plugins']                      = 'tabfocus,paste,media,fullscreen,wordpress,wpeditimage,wpgallery,wplink,wpdialogs';
    $in['theme_advanced_buttons1']      = 'formatselect,forecolor,|,bold,italic,underline,|,bullist,numlist,blockquote,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink,|,wp_adv';
    $in['theme_advanced_buttons2']      = 'pastetext,pasteword,selectall,removeformat,|,charmap,|,outdent,indent,|,undo,redo';
    $in['theme_advanced_buttons3']      = '';
    $in['theme_advanced_buttons4']      = '';
    //$in['valid_children']               = '+div[p]';

    return $in;
}

Maintenant, même si j'ai bullist,numlist listé, je ne les vois pas dans l'éditeur; Cependant, je vois strikethrough même si ce n'est pas répertorié.

Les deux autres manquants sont horizontal line et special character; en plus de cela, ils n'apparaissent pas dans l'ordre que je leur ai donné, l'ordre semble quelque peu aléatoire.

Je suis heureux de ne pas configurer les boutons, car avec ce site, tout est disponible, mais je pensais avoir besoin de l'utiliser pour insérer les boutons de plug-in tels que pastetext,pasteword,selectall?

Qu'est-ce que je fais mal ici?

2
Brett

Je pense que theme_advanced_buttons1, theme_advanced_buttons2, etc. faisaient partie du thème avancé de TinyMCE, qui n'est plus disponible dans TinyMCE 4. WordPress 4.9.7 utilise TinyMCE version 4.7.11.

Les deux rangées de contrôles sont maintenant désignées par:

mce_buttons
mce_buttons_2

Voici un bon exemple, tiré de https://www.kevinleary.net/customizing-tinymce-wysiwyg-editor-wordpress/ , qui permet de personnaliser facilement les boutons des deux rangées.

// TinyMCE: First line toolbar customizations
if( !function_exists('base_extended_editor_mce_buttons') ){
    function base_extended_editor_mce_buttons($buttons) {
        // The settings are returned in this array. Customize to suite your needs.
        return array(
            'formatselect', 'bold', 'italic', 'subscript', 'superscript', 'bullist', 'numlist', 'link', 'unlink', 'blockquote', 'outdent', 'indent', 'charmap', 'removeformat', 'spellchecker', 'fullscreen', 'wp_more', 'wp_help'
        );
    }
    add_filter("mce_buttons", "base_extended_editor_mce_buttons", 0);
}

// TinyMCE: Second line toolbar customizations
if( !function_exists('base_extended_editor_mce_buttons_2') ){
    function base_extended_editor_mce_buttons_2($buttons) {
        // The settings are returned in this array. Customize to suite your needs. An empty array is used here because I remove the second row of icons.
        return array('bold, italic, pastetext, paste, selectall');
    }
    add_filter("mce_buttons_2", "base_extended_editor_mce_buttons_2", 0);
}

N.B. selectall semble fonctionner, mais aucune icône ne s'affiche lorsque je l'essaie. Peut-être le même que ce problème - https://github.com/tinymce/tinymce/issues/634

De plus, il ne semble pas y avoir d’option "pasteword", mais il y a "paste" et "pastetext" ainsi qu’un plugin payant "powerpaste".

https://www.tiny.cloud/docs/plugins/paste/

https://www.tiny.cloud/docs/plugins/powerpaste/

1
junkrig

Je viens de découvrir que vous pouvez le faire de cette façon aussi, où vous pouvez continuer à utiliser le tableau d'origine sans avoir à utiliser de filtres supplémentaires:

Au lieu que les clés du tableau soient nommées theme_advanced_buttons*, elles sont maintenant nommées toolbar*, par exemple:

$in['toolbar1'] = 'formatselect, bold, italic, underline, bullist, numlist, blockquote, link, image, alignleft, aligncenter, alignright, alignjustify, wp_more, fullscreen';
$in['tollbar2'] = 'strikethrough, forecolor, outdent, indent, pastetext, removeformat, wp_help';
$in['toolbar3'] = '';
$in['toolbar4'] = '';

Cependant, pour une raison quelconque, même si je n'ai pas les boutons undo & redo dans mes données, ils indiquent quand même l'utilisation des filtres supplémentaires comme indiqué dans le answer vous obtenez exactement ce que vous listez.

1
Brett