Tạo một cá thể wp_editor với các nút tinyMCE tùy chỉnh


19

Có cách nào để xác định wp_editor()với các nút tinyMCE tùy chỉnh không?

Tôi đã nhận thấy tham chiếu hàm wp_editor đề cập rằng một trong các $settingsđối số có thể tinymce (array) (optional) Load TinyMCE, can be used to pass settings directly to TinyMCE using an array().

Trang của tôi sử dụng một số trường hợp khác nhau và tôi muốn thêm các nút nhất định vào một số trường hợp nhất định.

Ví dụ,

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

Có ai biết tôi sẽ thực hiện việc này như thế nào nếu tôi đã đăng ký các nút dưới dạng plugin TinyMCE theo hướng dẫn này không?


CHỈNH SỬA

Đây là mã tôi đang sử dụng trong tệp plugin của mình để làm việc này:

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

Thật không may, điều này không hoạt động - trình chỉnh sửa ở trên chỉ đơn giản hiển thị các nút giống như mọi phiên bản khác trên trang.


Cảm ơn trước,

Câu trả lời:


13

Bạn khá nhiều đã có nó, theo mô tả.

Đây là những gì bạn có thể đang tìm kiếm cho các trường hợp 2 và 3 (ví dụ 1, bạn có thể để trống các cài đặt để lấy bộ nút mặc định):

Sơ thẩm 2:

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

Trường hợp 3 (hiển thị mỗi 4 hàng bạn có thể đặt cho 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' => '',
      ),
    )
);

Tôi khuyên bạn nên kiểm tra wp-includes/class-wp-editor.phptệp (cụ thể là editor_settingshàm trên dòng 126) để hiểu cách WP phân tích các cài đặt bạn sử dụng bên trong hàm wp_editor (). Ngoài ra, hãy kiểm tra trang này để hiểu thêm về chức năng của TinyMCE và các tùy chọn init của nó (mà tôi không tin rằng WP hỗ trợ đầy đủ).


Chào bạn. Cảm ơn vì sự trả lời. Tôi đã thêm một số mã vào bài viết gốc của mình mà tôi tin rằng, đánh giá từ câu trả lời của bạn, sẽ hoạt động - nhưng không. Bạn có thể có một cái nhìn?
dunc

Tôi quên bọc các tham số cụ thể tinymce vào mảng riêng của họ. Tôi đã chỉnh sửa câu trả lời và thêm các tham số khác mà bạn biết đặt vào câu hỏi của mình. Cho tôi biết làm thế nào nó đi?
Tomas Buteler

1
Cũng nên nhớ rằng những người khác (tôi!) Muốn biết cách tự làm điều này, vì vậy hãy cố gắng không đi sâu vào một câu trả lời dành riêng cho dunc và chỉ dunc. Bạn có thể thêm liên kết đến bất kỳ tài liệu WP / TinyMCE nào có liên quan không?
Tom J Nowell

Tuyệt vời, điều này dường như để làm việc. Thật không may, các nút của tôi không có, nhưng đó là một câu hỏi riêng :) Cảm ơn tbuteler.
dunc

Không có gì! @TomJNowell, tôi đã thêm một đoạn cuối với khuyến nghị đọc, cảm ơn vì đã gợi ý!
Tomas Buteler

9

bạn có thể đặt tham số thông qua mảng trên hàm wp_editor (); một sơ đồ

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

Bạn có thể đặt các giá trị qua mảng trong param 'tinymce', 'tinymce' => true, // tải TinyMCE, có thể được sử dụng để chuyển trực tiếp cài đặt tới TinyMCE bằng cách sử dụng một mảng () Ngoài ra, có thể lấy thông số của nút: theme_advanced_buttons1, theme_advanced_buttons2, theme_advanced_buttons3,theme_advanced_buttons4

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

bạn cũng có thể lấy thông qua hook bộ lọc để tạo các nút tùy chỉnh, cũng là một ví dụ

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

bạn cũng có thể lọc các nút trực tiếp; mỗi dòng có một mỗi bộ lọc: mce_buttons, mce_buttons_2, mce_buttons_3,mce_buttons_4

các thông số sau là mặc định cho ví dụ trên 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'

xem trên liên kết này để biết thêm thông tin về bộ lọc này.


7

Chỉ để cập nhật điều này vì tôi phải đào các tệp nguồn wp

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

Tôi nghĩ điều này đã thay đổi với Tinymce 4.


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 );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.