การสร้างอินสแตนซ์ wp_editor ด้วยปุ่ม TinyMCE ที่กำหนดเอง


19

มีวิธีการกำหนดwp_editor()ด้วยปุ่ม tinyMCE ที่กำหนดเองหรือไม่?

ฉันได้สังเกตเห็นการอ้างอิงฟังก์ชั่น wp_editorกล่าวว่าหนึ่งในข้อโต้แย้งสามารถ$settingstinymce (array) (optional) Load TinyMCE, can be used to pass settings directly to TinyMCE using an array()

หน้าของฉันใช้อินสแตนซ์ต่าง ๆ จำนวนมากและฉันต้องการเพิ่มปุ่มบางปุ่มลงในอินสแตนซ์ที่แน่นอน

ตัวอย่างเช่น,

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

ไม่มีใครรู้ว่าฉันจะไปเกี่ยวกับการทำเช่นนี้ถ้าเราได้ลงทะเบียนไปแล้วปุ่มเป็น TinyMCE ปลั๊กอินตามกวดวิชานี้ ?


แก้ไข

นี่คือรหัสที่ฉันใช้ในไฟล์ปลั๊กอินเพื่อให้ใช้งานได้:

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

น่าเสียดายที่นี่ใช้งานไม่ได้ - ตัวแก้ไขด้านบนจะแสดงปุ่มเหมือนกันกับทุก ๆ อินสแตนซ์ในหน้า


ขอบคุณล่วงหน้า,

คำตอบ:


13

คุณมีมันมากตามคำอธิบาย

นี่คือสิ่งที่คุณอาจมองหาอินสแตนซ์ 2 และ 3 (สำหรับอินสแตนซ์ 1 คุณสามารถปล่อยให้การตั้งค่าว่างเปล่าเพื่อรับชุดปุ่มเริ่มต้น):

อินสแตนซ์ 2:

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

อินสแตนซ์ 3 (แสดง 4 แถวแต่ละแถวที่คุณสามารถตั้งค่าสำหรับ 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' => '',
      ),
    )
);

ฉันขอแนะนำให้คุณตรวจสอบwp-includes/class-wp-editor.phpไฟล์ (โดยเฉพาะeditor_settingsฟังก์ชั่นในบรรทัดที่ 126) เพื่อทำความเข้าใจว่า WP แยกวิเคราะห์การตั้งค่าที่คุณใช้ภายในฟังก์ชั่น wp_editor () อย่างไร ตรวจสอบหน้านี้เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับฟังก์ชั่นของ TinyMCE และตัวเลือกเริ่มต้น (ซึ่งฉันไม่เชื่อว่ารองรับ WP อย่างสมบูรณ์)


สวัสดีเพื่อน ขอบคุณสำหรับคำตอบ ฉันได้เพิ่มรหัสลงในโพสต์ดั้งเดิมของฉันซึ่งฉันเชื่อว่าการตัดสินจากคำตอบของคุณควรใช้งานได้ แต่ไม่ได้ คุณช่วยดูหน่อยได้ไหม?
dunc

ฉันลืมที่จะรวมพารามิเตอร์ที่เฉพาะเจาะจงของ tinymce ลงในอาร์เรย์ของตัวเอง ฉันได้แก้ไขคำตอบและเพิ่มพารามิเตอร์อื่น ๆ ที่คุณรู้แล้วใส่ในคำถามของคุณ แจ้งให้เราทราบว่ามันไปอย่างไร
Tomas Buteler

1
โปรดจำไว้ว่าคนอื่น ๆ (ฉัน!) ต้องการทราบวิธีการทำสิ่งนี้ด้วยตัวเองดังนั้นอย่าพยายามที่จะหาคำตอบที่เฉพาะเจาะจงกับคำว่า dunc และ dunc เท่านั้น คุณสามารถเพิ่มลิงค์ไปยังเอกสาร WP / TinyMCE ที่เกี่ยวข้องได้หรือไม่?
Tom J Nowell

เยี่ยมมากดูเหมือนว่าจะใช้งานได้ น่าเสียดายที่ปุ่มของฉันไม่ได้ แต่เป็นคำถามที่แยกต่างหาก :) ขอบคุณ tbuteler
dunc

ยินดีต้อนรับคุณ! @ TomJNowell ฉันได้เพิ่มหนึ่งย่อหน้าสุดท้ายพร้อมกับการอ่านที่แนะนำขอบคุณสำหรับคำแนะนำ!
Tomas Buteler

9

คุณสามารถตั้งค่าพารามิเตอร์ผ่านอาร์เรย์ในฟังก์ชั่น wp_editor (); 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 ); 

คุณสามารถตั้งค่าผ่านอาร์เรย์ใน param 'tinymce', 'tinymce' => true, // load TinyMCE, สามารถใช้เพื่อส่งการตั้งค่าไปยัง TinyMCE โดยตรงโดยใช้อาร์เรย์ () นอกจากนี้ยังเป็นไปได้ที่จะได้รับพารามิเตอร์ของ ปุ่ม: theme_advanced_buttons1, theme_advanced_buttons2, theme_advanced_buttons3,theme_advanced_buttons4

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

นอกจากนี้คุณยังสามารถขอผ่านตัวกรองขอเพื่อสร้างปุ่มที่กำหนดเองได้เช่นกัน

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

นอกจากนี้คุณสามารถกรองปุ่มโดยตรง แต่ละบรรทัดมีตัวกรองแต่ละ: mce_buttons, mce_buttons_2, mce_buttons_3,mce_buttons_4

params ที่ติดตามเป็นค่าเริ่มต้นสำหรับตัวอย่างบน 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'

ดูที่ลิงก์นี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับตัวกรองนี้


7

เพียงแค่อัปเดตสิ่งนี้เพราะฉันต้องขุดในไฟล์ต้นฉบับ wp

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

ฉันคิดว่าสิ่งนี้เปลี่ยนไปด้วย 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 );
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.