Làm cách nào để thêm nút shortcode vào trình chỉnh sửa TinyMCE?


34

Làm thế nào để tạo bất kỳ biểu tượng plugin trong bài viết wordpress? Mã tôi muốn chèn vào mã plugin và sẽ xuất hiện trong thanh bài đăng [wp-admin / post.php].

Thích hình ảnh này:

nhập mô tả hình ảnh ở đây

Đầu ra: Nếu tôi nhấp vào biểu tượng, nó sẽ tự động ghi [plugin]vào nội dung bài đăng như thế này:

nhập mô tả hình ảnh ở đây


Thêm ảnh chụp màn hình của kết quả bạn muốn nhận. Nó không rõ ràng những gì bạn muốn.
fuxia

Tôi nghĩ rằng bạn muốn tạo một plugin có thêm nút TinyMCE cho trình chỉnh sửa chèn mã ngắn WordPress, phải không?
Developdaly

Câu trả lời:


65

Để thêm nút của chúng tôi vào trình chỉnh sửa TinyMCE, chúng tôi cần thực hiện một số điều:

  1. Thêm nút của chúng tôi vào thanh công cụ
  2. Đăng ký plugin TinyMCE
  3. Tạo trình cắm TinyMCE đó để cho TinyMCE biết phải làm gì khi nhấp vào nút của chúng tôi.

Bước # 1 và # 2

Trong các bước này, chúng tôi đăng ký trình cắm TinyMCE của chúng tôi sẽ nằm trong tệp javascript tại 'path/to/shortcode.js'(xem wpse72394_register_tinymce_plugin()bên dưới)

 // 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;
}

Bước 3

Bây giờ chúng ta cần tạo trình cắm TinyMCE của mình. Điều này sẽ đi trong một tập tin 'path/to/shortcode.js'(như được chỉ định trong các bước đầu).

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
Trong bước 1, thay đổi initmóc thành admin_initmóc cũng có thể tiết kiệm một số xử lý bổ sung nhỏ ở mặt trước.
Tim Malone

Nó phụ thuộc, bạn cũng có thể có TinyMCE ở mặt trước. Nhưng có, nếu đây chỉ là phía quản trị viên, admin_initsẽ thích hợp hơn.
Stephen Harris

5

Có quá nhiều để đặt toàn bộ câu trả lời ở đây vì vậy hãy xem hướng dẫn này: http://wp.smashingmagazine.com/2012/05/01/wordpress-shortcodes-complete-guide/

Bạn phải tạo một tệp Javascript thực hiện hành động từ nút bạn đăng ký thông qua WordPress chèn nút TinyMCE vào trình chỉnh sửa.


3
Sử dụng query_posts để có thể không phải là ví dụ tốt nhất để liên kết đến.
Brad Dalton
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.