Erstellen einer wp_editor-Instanz mit benutzerdefinierten tinyMCE-Schaltflächen

19

Gibt es eine Möglichkeit, wp_editor()mit benutzerdefinierten tinyMCE-Schaltflächen zu definieren ?

Ich habe festgestellt, dass in der Funktionsreferenz wp_editor erwähnt wird, dass eines der $settingsArgumente sein kann tinymce (array) (optional) Load TinyMCE, can be used to pass settings directly to TinyMCE using an array().

Meine Seite verwendet eine Reihe von verschiedenen Instanzen und ich möchte bestimmten Instanzen bestimmte Schaltflächen hinzufügen.

Beispielsweise,

Instance #1 : Standard buttons
Instance #2 : bold, italic, ul + (custom) pH, temp
Instance #3 : bold, italic, ul + (custom) min_size, max_size

Weiß jemand, wie ich das machen würde, wenn ich die Schaltflächen bereits als tinyMCE-Plugins gemäß diesem Tutorial registriert habe ?


BEARBEITEN

Hier ist der Code, den ich in meiner Plugin-Datei verwende, um dies zum Laufen zu bringen:

function add_SF_buttons() {
    if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') )
        return;
    if ( get_user_option('rich_editing') == 'true') {
        add_filter('mce_external_plugins', 'add_SF_buttons_plugins');
    }
}

function add_SF_buttons_plugins($plugin_array) {
    $plugin_array['pH'] = $this->plugin_url . '/js/tinymce_buttons/pH.js';
    $plugin_array['pH_min'] = $this->plugin_url . '/js/tinymce_buttons/pH_min.js';
    $plugin_array['pH_max'] = $this->plugin_url . '/js/tinymce_buttons/pH_max.js';
    return $plugin_array;
}

-

if (isset($SpeciesProfile)) {
    add_action( 'init' , array (&$SpeciesProfile, 'register_species' ));
    add_action( 'init' , array( &$SpeciesProfile, 'register_species_taxonomies' ));

    add_action( 'init', array (&$SpeciesProfile, 'add_SF_buttons' ));
}

-

<?php wp_editor( $distribution, 'distribution', array( 'theme_advanced_buttons1' => 'bold, italic, ul, pH, pH_min', "media_buttons" => false, "textarea_rows" => 8, "tabindex" => 4 ) ); ?>

Leider funktioniert dies nicht - der obige Editor zeigt einfach die gleichen Schaltflächen wie jede andere Instanz auf der Seite an.


Danke im Voraus,

dunc
quelle

Antworten:

13

Sie hatten es nach der Beschreibung so ziemlich.

Hier ist, was Sie für die Instanzen 2 und 3 suchen könnten (zum Beispiel 1 können Sie die Einstellungen leer lassen, um die Standardschaltflächen zu erhalten):

Instanz 2:

wp_editor(
    $distribution,
    'distribution',
    array(
      'media_buttons' => false,
      'textarea_rows' => 8,
      'tabindex' => 4,
      'tinymce' => array(
        'theme_advanced_buttons1' => 'bold, italic, ul, pH, temp',
      ),
    )
);

Instanz 3 (zeigt jede der 4 Zeilen, die Sie für TinyMCE festlegen können):

wp_editor(
    $distribution,
    'distribution',
    array(
      'media_buttons' => false,
      'textarea_rows' => 8,
      'tabindex' => 4,
      'tinymce' => array(
        'theme_advanced_buttons1' => 'bold, italic, ul, min_size, max_size',
        'theme_advanced_buttons2' => '',
        'theme_advanced_buttons3' => '',
        'theme_advanced_buttons4' => '',
      ),
    )
);

Ich empfehle, dass Sie die wp-includes/class-wp-editor.phpDatei (insbesondere die editor_settingsFunktion in Zeile 126) auschecken, um zu verstehen, wie WP die Einstellungen analysiert, die Sie in der Funktion wp_editor () verwenden. Besuchen Sie auch diese Seite , um mehr über die Funktionalität von TinyMCE und seine Init-Optionen zu erfahren (von denen ich glaube, dass sie WP nicht vollständig unterstützen).

Tomas Buteler
quelle
Hallo Kumpel. Danke für die Antwort. Ich habe meinem ursprünglichen Beitrag einen Code hinzugefügt, der meiner Meinung nach funktionieren sollte - aber nicht. Könnten Sie einen Blick darauf werfen?
12.
Ich habe vergessen, die tinymce-spezifischen Parameter in ein eigenes Array zu packen. Ich habe die Antwort bearbeitet und die anderen Parameter hinzugefügt, die Sie für Ihre Frage kennen. Lass mich wissen, wie es geht?
Tomas Buteler
1
Denken Sie auch daran, dass andere (ich!) Dies gerne selbst tun würden. Versuchen Sie also, sich nicht auf eine Antwort zu beschränken, die spezifisch für dunc und nur für dunc ist. Können Sie Links zu relevanten WP / TinyMCE-Dokumentationen hinzufügen?
Tom J Nowell
Großartig, das scheint zu funktionieren. Leider sind meine Buttons nicht, aber das ist eine separate Frage :) Danke tbuteler.
12.
Bitte! @TomJNowell, ich habe einen letzten Absatz mit empfohlener Lektüre hinzugefügt, danke für den Vorschlag!
Tomas Buteler
9

Sie können die Parameter über ein Array in der Funktion wp_editor () einstellen. ein Beispiel

$settings = array(
    'tinymce'       => array(
        'setup' => 'function (ed) {
            tinymce.documentBaseURL = "' . get_admin_url() . '";
        }',
    ),
    'quicktags'     => TRUE,
    'editor_class'  => 'frontend-article-editor',
    'textarea_rows' => 25,
    'media_buttons' => TRUE,
);
wp_editor( $content, 'article_content', $settings ); 

Sie können die Werte über ein Array im Parameter 'tinymce' einstellen, 'tinymce' => true, // load TinyMCE, Sie können die Einstellungen über ein Array () direkt an TinyMCE übergeben Schaltflächen: theme_advanced_buttons1, theme_advanced_buttons2, theme_advanced_buttons3,theme_advanced_buttons4

array( 'theme_advanced_buttons1' => 'bold, italic, ul, pH, temp' )

man kann auch per filterhaken eigene buttons erstellen, auch ein beispiel

function fb_change_mce_options($initArray) {
    // Comma separated string od extendes tags
    // Command separated string of extended elements
    $ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
    if ( isset( $initArray['extended_valid_elements'] ) ) {
        $initArray['extended_valid_elements'] .= ',' . $ext;
    } else {
        $initArray['extended_valid_elements'] = $ext;
    }
    // maybe; set tiny paramter verify_html
    //$initArray['verify_html'] = false;
    return $initArray;
}
add_filter( 'tiny_mce_before_init', 'fb_change_mce_options' );

Sie können die Schaltflächen auch direkt filtern. Jede Zeile hat einen jeden Filter: mce_buttons, mce_buttons_2, mce_buttons_3,mce_buttons_4

Die folgenden Parameter sind die Standardeinstellung für das Beispiel mit eingehängtem Hörer: tiny_mce_before_init

'mode' => 'specific_textareas'
'editor_selector' => 'theEditor'
'width' => '100%'
'theme' => 'advanced'
'skin' => 'wp_theme'
'theme_advanced_buttons1' => 'bold,italic,strikethrough,|,bullist,numlist,blockquote,|,justifyleft,justifycenter,justifyright,|,link,unlink,wp_more,|,spellchecker,fullscreen,wp_adv'
'theme_advanced_buttons2' => 'formatselect,underline,justifyfull,forecolor,|,pastetext,pasteword,removeformat,|,media,charmap,|,outdent,indent,|,undo,redo,wp_help'
'theme_advanced_buttons3' => ''
'theme_advanced_buttons4' => ''
'language' => 'de'
'spellchecker_languages' => 'English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,+German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv'
'theme_advanced_toolbar_location' => 'top'
'theme_advanced_toolbar_align' => 'left'
'theme_advanced_statusbar_location' => 'bottom'
'theme_advanced_resizing' => true
'theme_advanced_resize_horizontal' => false
'dialog_type' => 'modal'
'relative_urls' => false
'remove_script_host' => false
'convert_urls' => false
'apply_source_formatting' => false
'remove_linebreaks' => true
'gecko_spellcheck' => true
'entities' => '38,amp,60,lt,62,gt'
'accessibility_focus' => true
'tabfocus_elements' => 'major-publishing-actions'
'media_strict' => false
'paste_remove_styles' => true
'paste_remove_spans' => true
'paste_strip_class_attributes' => 'all'
'wpeditimage_disable_captions' => false
'plugins' => 'safari,inlinepopups,spellchecker,paste,wordpress,media,fullscreen,wpeditimage,wpgallery,tabfocus'

Weitere Informationen zu diesem Filter finden Sie unter diesem Link .

bueltge
quelle
7

Nur um dies zu aktualisieren, musste ich in den wp-Quelldateien graben

$settings = array(
    'tinymce' => array(
        'toolbar1' => 'bold, italic',
        'toolbar2' => '',
    ),
    'wpautop' => false,
    'media_buttons' => false,
);

Ich denke, das hat sich mit Tinymce 4 geändert.

Sam
quelle
1
$args = array(
    'tinymce'       => array(
        'toolbar1'      => 'bold,italic,underline,separator,alignleft,aligncenter,alignright,separator,link,unlink,undo,redo',
        'toolbar2'      => '',
        'toolbar3'      => '',
    ),
);
wp_editor( $content, $editor_id, $args );
Mr. HK
quelle