จะเพิ่มปุ่มย่อในตัวแก้ไข TinyMCE ได้อย่างไร?


34

จะสร้างไอคอนปลั๊กอินใน wordpress post ได้อย่างไร? รหัสที่ฉันต้องการแทรกในรหัสปลั๊กอินและจะปรากฏในแถบโพสต์ [wp-admin / post.php]

ชอบรูปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ผลลัพธ์: ถ้าฉันคลิกไอคอนมันจะเขียน[plugin]ลงในเนื้อหาโพสต์โดยอัตโนมัติดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่


เพิ่มภาพหน้าจอของผลลัพธ์ที่คุณต้องการ ไม่ชัดเจนว่าคุณต้องการอะไร
fuxia

ฉันคิดว่าคุณต้องการสร้างปลั๊กอินที่เพิ่มปุ่ม TinyMCE ลงในเครื่องมือแก้ไขที่แทรกรหัสย่อ WordPress ใช่ไหม
developdaly

คำตอบ:


65

ในการเพิ่มปุ่มของเราไปยังตัวแก้ไข TinyMCE เราต้องทำหลายสิ่ง:

  1. เพิ่มปุ่มของเราไปที่แถบเครื่องมือ
  2. ลงทะเบียนปลั๊กอิน TinyMCE
  3. สร้างปลั๊กอิน TinyMCE ที่บอก TinyMCE ว่าต้องทำอย่างไรเมื่อคลิกปุ่มของเรา

ขั้นตอน # 1 และ # 2

ในขั้นตอนเหล่านี้เราลงทะเบียนปลั๊กอิน TinyMCE ซึ่งจะอยู่ในไฟล์ javascript ที่'path/to/shortcode.js'(ดูwpse72394_register_tinymce_plugin()ด้านล่าง)

 // init process for registering our button
 add_action('init', 'wpse72394_shortcode_button_init');
 function wpse72394_shortcode_button_init() {

      //Abort early if the user will never see TinyMCE
      if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') && get_user_option('rich_editing') == 'true')
           return;

      //Add a callback to regiser our tinymce plugin   
      add_filter("mce_external_plugins", "wpse72394_register_tinymce_plugin"); 

      // Add a callback to add our button to the TinyMCE toolbar
      add_filter('mce_buttons', 'wpse72394_add_tinymce_button');
}


//This callback registers our plug-in
function wpse72394_register_tinymce_plugin($plugin_array) {
    $plugin_array['wpse72394_button'] = 'path/to/shortcode.js';
    return $plugin_array;
}

//This callback adds our button to the toolbar
function wpse72394_add_tinymce_button($buttons) {
            //Add the button ID to the $button array
    $buttons[] = "wpse72394_button";
    return $buttons;
}

ขั้นตอนที่ # 3

ตอนนี้เราต้องสร้างปลั๊กอิน TinyMCE ของเรา สิ่งนี้จะไปในไฟล์'path/to/shortcode.js'(ตามที่ระบุในขั้นตอนแรก)

jQuery(document).ready(function($) {

    tinymce.create('tinymce.plugins.wpse72394_plugin', {
        init : function(ed, url) {
                // Register command for when button is clicked
                ed.addCommand('wpse72394_insert_shortcode', function() {
                    selected = tinyMCE.activeEditor.selection.getContent();

                    if( selected ){
                        //If text is selected when button is clicked
                        //Wrap shortcode around it.
                        content =  '[shortcode]'+selected+'[/shortcode]';
                    }else{
                        content =  '[shortcode]';
                    }

                    tinymce.execCommand('mceInsertContent', false, content);
                });

            // Register buttons - trigger above command when clicked
            ed.addButton('wpse72394_button', {title : 'Insert shortcode', cmd : 'wpse72394_insert_shortcode', image: url + '/path/to/image.png' });
        },   
    });

    // Register our TinyMCE plugin
    // first parameter is the button ID1
    // second parameter must match the first parameter of the tinymce.create() function above
    tinymce.PluginManager.add('wpse72394_button', tinymce.plugins.wpse72394_plugin);
});

1
ในขั้นตอนที่ 1 การเปลี่ยนinitฮุกเป็นadmin_initฮุกสามารถประหยัดการประมวลผลพิเศษเล็กน้อยได้ที่ฟรอนต์เอนด์
ทิมมาโลน

ขึ้นอยู่กับว่าคุณสามารถมี TinyMCE ในส่วนหน้าได้เช่นกัน แต่ใช่ถ้าเป็นแบบผู้ดูแลระบบเท่านั้นadmin_initจะดีกว่า
สตีเฟ่นแฮร์ริส

5

มีมากเกินไปที่จะนำคำตอบทั้งหมดที่นี่เพื่อเช็คเอาต์คู่มือนี้: http://wp.smashingmagazine.com/2012/05/01/wordpress-shortcodes-complete-guide/

คุณต้องสร้างไฟล์ Javascript ที่ดำเนินการจากปุ่มที่คุณลงทะเบียนผ่าน WordPress ที่แทรกปุ่ม TinyMCE ลงในเครื่องมือแก้ไข


3
ใช้ query_posts ดังนั้นอาจไม่ใช่ตัวอย่างที่ดีที่สุดในการเชื่อมโยง
แบรดดัลตัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.