Membuat instance wp_editor dengan tombol tinyMCE khusus

19

Apakah ada cara untuk mendefinisikan wp_editor()dengan tombol tinyMCE khusus?

Saya perhatikan referensi fungsi wp_editor menyebutkan bahwa salah satu $settingsargumen bisa tinymce (array) (optional) Load TinyMCE, can be used to pass settings directly to TinyMCE using an array().

Halaman saya menggunakan sejumlah instance berbeda dan saya ingin menambahkan tombol tertentu pada instance tertentu.

Sebagai contoh,

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

Adakah yang tahu bagaimana saya bisa melakukan ini jika saya sudah mendaftarkan tombol sebagai plugin tinyMCE sesuai tutorial ini ?


EDIT

Berikut kode yang saya gunakan di file plugin saya untuk membuatnya berfungsi:

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

Sayangnya, ini tidak berfungsi - editor di atas hanya menampilkan tombol yang sama dengan setiap instance lainnya pada halaman.


Terima kasih sebelumnya,

dunc
sumber

Jawaban:

13

Anda sudah cukup banyak memilikinya, sesuai dengan deskripsi.

Inilah yang mungkin Anda cari untuk instance 2 dan 3 (misalnya 1 Anda dapat membiarkan pengaturan kosong untuk mendapatkan set tombol default):

Contoh 2:

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

Instance 3 (menunjukkan masing-masing dari 4 baris yang dapat Anda tetapkan untuk TinyMCE):

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

Saya sarankan Anda memeriksa wp-includes/class-wp-editor.phpfile (khususnya editor_settingsfungsi pada baris 126) untuk memahami bagaimana WP mem-parsing pengaturan yang Anda gunakan di dalam fungsi wp_editor (). Juga, periksa halaman ini untuk memahami lebih lanjut tentang fungsi TinyMCE dan opsi initnya (yang saya tidak percaya sepenuhnya mendukung WP).

Tomas Buteler
sumber
Hai sobat Terima kasih atas tanggapannya. Saya telah menambahkan beberapa kode ke posting asli saya yang saya percaya, menilai dari jawaban Anda, harus berfungsi - tetapi tidak. Bisakah Anda melihatnya?
dunc
Saya lupa untuk membungkus parameter tinymce-specific ke dalam array mereka sendiri. Saya telah mengedit jawaban dan menambahkan parameter lain yang Anda ketahui tentang pertanyaan Anda. Biarkan saya tahu bagaimana kelanjutannya?
Tomas Buteler
1
Juga ingat bahwa orang lain (saya!) Ingin tahu bagaimana melakukan ini sendiri, jadi cobalah untuk tidak beralih ke jawaban yang khusus untuk dunc dan hanya dunc. Bisakah Anda menambahkan tautan ke dokumentasi WP / TinyMCE yang relevan?
Tom J Nowell
Hebat, ini sepertinya berhasil. Sayangnya tombol saya tidak, tapi itu pertanyaan terpisah :) Terima kasih tbuteler.
dunc
Sama-sama! @ TomJNowell, saya telah menambahkan satu paragraf terakhir dengan bacaan yang disarankan, terima kasih atas sarannya!
Tomas Buteler
9

Anda dapat mengatur params melalui array pada fungsi wp_editor (); sebuah exmaple

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

Anda dapat mengatur nilai melalui array di param 'tinymce', 'tinymce' => true, // memuat TinyMCE, dapat digunakan untuk meneruskan pengaturan langsung ke TinyMCE menggunakan array () Juga dimungkinkan untuk mendapatkan tentang params dari tombol: theme_advanced_buttons1, theme_advanced_buttons2, theme_advanced_buttons3,theme_advanced_buttons4

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

Anda juga bisa mendapatkan melalui filter hook untuk membuat tombol kustom, juga sebuah contoh

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

Anda juga dapat memfilter tombol secara langsung; setiap baris memiliki masing-masing filter: mce_buttons, mce_buttons_2, mce_buttons_3,mce_buttons_4

params ikuti adalah default untuk contoh pada 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'

lihat di tautan ini untuk info lebih lanjut ke filter ini.

bueltge
sumber
7

Hanya untuk memperbarui ini karena saya harus menggali file sumber wp

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

Saya pikir ini telah berubah dengan Tinymce 4.

Sam
sumber
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 );
Tuan HK
sumber