Chèn button vào trình soạn thảo TinyMCE trong WordPress

Chèn button vào trình soạn thảo TinyMCE trong WordPress

Có thể bạn thích ?

Đây là 01 đoạn code giúp chúng ta chèn 01 nội dung vào trình soạn thảo của TinyMCE thông qua 1 button bạn đã khai báo trước (ở đây button của mình có tên là ThichCode.NET), các bạn có thể dùng vào nhiều mục đích sử dụng khác nhau như là chèn shortcode, hoặc chèn 01 nội dung theo chuẩn mà mình qui định (ví dụ: button chèn code HTML – CSS – JS – PHP – C# hoặc button chèn link download).

Trong bài viết là mình ví dụ chèn 01 cấu trúc shortcode [thichcode xep_loai="loai1" tieu_de="ThichCode.NET" danh_gia="Khá bổ ích :)"]Là 01 website chuyên viết về code qua trải nghiệm của tác giả.[/thichcode]. Sau đây là code:

Chèn đoạn code sau vào file function.php

add_action('admin_head', function(){
	// check user permissions
	if ( !current_user_can( 'edit_posts' ) &&  !current_user_can( 'edit_pages' ) ) {
			   return;
	}
	// Check if WYSIWYG is enabled	
    if ( get_user_option( 'rich_editing' ) == 'true' ) {		
        add_filter( 'mce_external_plugins', 'custom_tinymce_plugin' );
        add_filter( 'mce_buttons', 'register_mce_buttons' );
    }
});

function custom_tinymce_plugin($plugin_array) {	
	$plugin_array['custom_mce_button_thichcode'] = get_stylesheet_directory_uri() .'/inc/backend/js/button_thichcode.js';
	return $plugin_array;
}

// Register and add new button in the editor
function register_mce_buttons( $buttons ) {
	array_push($buttons, 'custom_mce_button_thichcode');
	return $buttons;
}

 

Nội dung file button_thichcode.js

(function() {
    tinymce.PluginManager.add('custom_mce_button_thichcode', function(editor, url) {
        editor.addButton('custom_mce_button_thichcode', {
            icon: false,
            text: 'ThichCode.NET',
            onclick: function(e) {
                editor.windowManager.open({
                    title: 'Chèn shortcode',
                    body: [{
                            type: 'listbox',
                            name: 'xep_loai',
                            label: 'Xếp loại',
                            values: [{
                                    text: 'Loại 1',
                                    value: 'loai1'
                                },
                                {
                                    text: 'Loại 2',
                                    value: 'loai2'
                                },
                                {
                                    text: 'Loại 3',
                                    value: 'loai3'
                                }
                            ],
                            minWidth: 350
                        },
                        {
                            type: 'textbox',
                            name: 'tieu_de',
                            label: 'Tiêu đề',
                            minWidth: 350
                        },
                        {
                            type: 'textbox',
                            multiline: true,
                            name: 'mo_ta',
                            label: 'Mô tả',
                            minWidth: 350,
                            minHeight: 150
                        },
                        {
                            type: 'textbox',
                            multiline: true,
                            name: 'danh_gia',
                            label: 'Đánh giá',
                            minWidth: 350,
                            minHeight: 100
                        }

                    ],
                    onsubmit: function(e) {
                        editor.focus();
                        // Insert selected callout back into editor, wrapping it in a shortcode
                        var danh_gia = (e.data.danh_gia) ? (' danh_gia="' + e.data.danh_gia + '"') : ('');
                        editor.execCommand('mceInsertContent', false, '[thichcode xep_loai="' + e.data.xep_loai + '" tieu_de="' + e.data.tieu_de + '"' + danh_gia + ']' + e.data.mo_ta + '[/thichcode]');
                    }
                });
            }
        });
    });
})();

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *


Liên Hệ

Tp Mỹ Tho, Tiền Giang

0919 344 644