Как добавить кнопку шорткода в редактор TinyMCE?
Как добавить значок плагина в запись WordPress? Код, который я хочу вставить в плагин, должен появиться на панели записи [wp-admin/post.php].
Как на этом изображении:
Результат: При нажатии на значок он автоматически вставляет [plugin]
в содержимое записи, как показано здесь:

Чтобы добавить нашу кнопку в редактор TinyMCE, необходимо выполнить несколько действий:
- Добавить нашу кнопку на панель инструментов
- Зарегистрировать плагин TinyMCE
- Создать этот плагин TinyMCE, который будет указывать TinyMCE, что делать при нажатии нашей кнопки.
Шаги №1 и №2
На этих шагах мы регистрируем наш плагин TinyMCE, который будет находиться в файле JavaScript по пути 'path/to/shortcode.js'
(см. функцию wpse72394_register_tinymce_plugin()
ниже)
// Инициализация процесса регистрации нашей кнопки
add_action('init', 'wpse72394_shortcode_button_init');
function wpse72394_shortcode_button_init() {
// Прерываем выполнение, если пользователь никогда не увидит TinyMCE
if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') && get_user_option('rich_editing') == 'true')
return;
// Добавляем callback для регистрации нашего плагина TinyMCE
add_filter("mce_external_plugins", "wpse72394_register_tinymce_plugin");
// Добавляем callback для добавления нашей кнопки на панель инструментов TinyMCE
add_filter('mce_buttons', 'wpse72394_add_tinymce_button');
}
// Этот callback регистрирует наш плагин
function wpse72394_register_tinymce_plugin($plugin_array) {
$plugin_array['wpse72394_button'] = 'path/to/shortcode.js';
return $plugin_array;
}
// Этот callback добавляет нашу кнопку на панель инструментов
function wpse72394_add_tinymce_button($buttons) {
// Добавляем ID кнопки в массив $buttons
$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) {
// Регистрируем команду, которая выполняется при нажатии кнопки
ed.addCommand('wpse72394_insert_shortcode', function() {
selected = tinyMCE.activeEditor.selection.getContent();
if( selected ){
// Если текст выделен при нажатии кнопки
// Оборачиваем его в шорткод.
content = '[shortcode]'+selected+'[/shortcode]';
}else{
content = '[shortcode]';
}
tinymce.execCommand('mceInsertContent', false, content);
});
// Регистрируем кнопки - при нажатии выполняется команда выше
ed.addButton('wpse72394_button', {title : 'Вставить шорткод', cmd : 'wpse72394_insert_shortcode', image: url + '/path/to/image.png' });
},
});
// Регистрируем наш плагин TinyMCE
// Первый параметр - ID кнопки
// Второй параметр должен совпадать с первым параметром функции tinymce.create() выше
tinymce.PluginManager.add('wpse72394_button', tinymce.plugins.wpse72394_plugin);
});

На шаге 1, замена хука init
на хук admin_init
также может немного сократить обработку на фронтенде.

Зависит от ситуации, TinyMCE может использоваться и на фронтенде. Но если речь идет только об админке, то admin_init
будет предпочтительнее.

Здесь слишком много информации, чтобы разместить полный ответ, поэтому ознакомьтесь с этим руководством: http://wp.smashingmagazine.com/2012/05/01/wordpress-shortcodes-complete-guide/
Вам необходимо создать файл Javascript, который будет обрабатывать действие кнопки, зарегистрированной через WordPress, и вставлять кнопку TinyMCE в редактор.
