it-swarm.com.de

Anpassen des WordPress TinyMce-Editors und seiner Schaltflächen

Ich versuche, den TinyMce-Editor in WordPress zu optimieren, und habe diesen Code von einer älteren WP Site übernommen, aber die von mir festgelegten Schaltflächen scheinen nicht zu funktionieren Ich habe:

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

Obwohl ich jetzt bullist,numlist aufgelistet habe, sehe ich sie nicht im Editor. Ich sehe jedoch strikethrough, obwohl es nicht aufgeführt ist.

Die einzigen zwei anderen, die fehlen, sind horizontal line und special character; Außerdem erscheinen sie nicht in der Reihenfolge, in der ich sie angegeben habe, die Reihenfolge scheint eher zufällig zu sein.

Ich bin froh, dass ich die Buttons nicht gesetzt habe, da es bei dieser Site in Ordnung ist, wenn alles verfügbar ist, aber ich dachte, ich müsste es verwenden, um die Plugin-Buttons wie pastetext,pasteword,selectall einzufügen?

Was mache ich hier falsch?

2
Brett

Ich denke, theme_advanced_buttons1, theme_advanced_buttons2 usw. waren Teil des erweiterten TinyMCE-Themas, das in TinyMCE 4 nicht mehr verfügbar ist. WordPress 4.9.7 verwendet TinyMCE Version 4.7.11.

Die beiden Kontrollreihen werden nun bezeichnet mit:

mce_buttons
mce_buttons_2

Hier ist ein gutes Beispiel aus https://www.kevinleary.net/customizing-tinymce-wysiwyg-editor-wordpress/ , das eine einfache Anpassung der Schaltflächen in beiden Zeilen ermöglicht.

// 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 scheint zu funktionieren, aber es wird kein Symbol angezeigt, wenn ich es versuche. Möglicherweise das gleiche wie dieses Problem - https://github.com/tinymce/tinymce/issues/634

Es scheint auch keine "Pasteword" -Option zu geben, aber es gibt "Paste" und "Pastetext" und auch ein kostenpflichtiges Plugin "Powerpaste".

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

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

1
junkrig

Ich habe gerade herausgefunden, dass Sie dies auch auf diese Weise tun können, wobei Sie das ursprüngliche Array weiterhin verwenden können und keine zusätzlichen Filter verwenden müssen:

Anstatt die Array-Schlüssel als theme_advanced_buttons* zu bezeichnen, heißen sie jetzt toolbar*. Beispiel:

$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'] = '';

Aus irgendeinem Grund werden die Schaltflächen undo & redo zwar nicht in meinen Daten angezeigt, jedoch, wenn Sie die zusätzlichen Filter verwenden, die in Junkings answer angegeben sind, erhalten Sie genau was du auflistest.

1
Brett