wake-up-neo.net

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

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

Ich habe die wp_editor-Funktionsreferenz bemerkt erwähnt, dass eines der $settings-Argumente tinymce (array) (optional) Load TinyMCE, can be used to pass settings directly to TinyMCE using an array() sein kann.

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

Zum Beispiel,

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 Buttons bereits als tinyMCE-Plugins gemäß diesem Tutorial registriert habe?


EDIT

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,

19
dunc

Sie hatten es nach der Beschreibung so ziemlich.

Hier ist, wonach Sie möglicherweise für die Instanzen 2 und 3 suchen (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 Datei wp-includes/class-wp-editor.php (insbesondere die Funktion editor_settings in Zeile 126) auschecken, um zu verstehen, wie WP die Einstellungen analysiert, die Sie in der Funktion wp_editor () verwenden. Lesen 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).

13
Tomas Buteler

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 Filter: mce_buttons, mce_buttons_2, mce_buttons_3, mce_buttons_4

die folgenden Parameter sind die Standardeinstellung für das Beispiel am Hook: 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 auf diesem Link .

9
bueltge

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.

7
Sam
$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 );
1
Mr. HK