Intereting Posts
как включить медиа-библиотеку в редакторе виджетов, используя собственный текстовый редактор wordpress Использовать пользовательскую таксономию вместо статуса должности? Несколько плагинов, взаимодействующих с меню Вытяните одиночное сообщение перед запуском wp_query Мастер-сайт для конкретной таксономии в MultiSite Имя пользовательского типа сообщения Добавить разделитель в меню администратора? Сохранить список из пользовательского мета-поля? Как я могу «удалить» персонализированный пост, когда вы вошли в систему как Admin Почему wp-login пытается отправить электронное письмо? когда должно быть добавлено действие для init и когда оно должно быть добавлено в wp_head Захват / название страницы / как в шаблоне, так и в номере Как вызвать функцию bloginfo внутри функции в functions.php? Почему мой текстовый виджет не показывает заголовок, который я ему даю? Изменение заголовка страницы при заполнении сообщений

Как добавить пользовательский плагин tinymce в новый текстовый виджет

Поэтому у меня есть настраиваемый TinyMCE-плагин, который добавляет кнопку в редактор.

Я использую фильтр mce_external_plugins и mce_buttons для добавления моего плагина TinyMCE.

После того, как WP 4.8 представила простой TinyMCE для нового текстового виджета, я хотел бы включить мою кнопку i в этот редактор. По какой-то причине я не могу найти документацию редактора виджета с точки зрения модификации и включая дополнительные функции.

Кто-нибудь из вас, ребята, удался изменить редактор виджетов? Или вы видели какую-либо документацию для пользовательских плагинов?

Solutions Collecting From Web of "Как добавить пользовательский плагин tinymce в новый текстовый виджет"

Я нашел решение с помощью Джейкоба Пити и статьи из https://make.wordpress.org/core/2017/05/23/addition-of-tinymce-to-the-text-widget/

Вот краткое пошаговое руководство по тому, что я сделал:

Я сделал новый контейнер js-файла кодом моей исходной кнопки, но изменил его на прослушиватель событий виджета tinymce

jQuery( document ).on( 'tinymce-editor-setup', function( event, editor ) { editor.settings.toolbar1 += ',bbh_custom_mce_button'; var pathname = window.location.hostname; var protocol = window.location.protocol editor.addButton( 'bbh_custom_mce_button', { title: 'Insert button', image: protocol + '//' + pathname + '/wp-content/themes/brandbyhand/include/tinymce-button/button-sharpen.png', onclick: function() { editor.windowManager.open( { title: 'Insert button', body: [ { type: 'textbox', name: 'text', label: 'Button text' }, { type: 'textbox', name: 'link', label: 'Button link', class: 'custom-link', onkeydown: function( event ){ var link = jQuery(event.target).val(); var windowID = event.currentTarget.id; jQuery(event.target).addClass('custom-link-' + windowID); /*if(link.indexOf('mailto:') === -1 && link.indexOf('tel:') === -1){ link = (link.indexOf('://') === -1) ? 'http://' + link : link; } jQuery(event.target).val(link);*/ }, onfocusout: function( event ){ var link = jQuery(event.target).val(); var windowID = event.currentTarget.id; jQuery(event.target).addClass('custom-link-' + windowID); if(link.indexOf('mailto:') === -1 && link.indexOf('tel:') === -1){ link = (link.indexOf('://') === -1) ? 'http://' + link : link; } jQuery(event.target).val(link); } }, { type : 'listbox', name : 'style', label : 'Button style', values : [ { text: 'Empty', value: 'ghost' }, { text: 'Filled', value: 'filled' }, ], value : 'style1' // Sets the default }, { type : 'checkbox', name : 'target', label : 'Open link in a new tab', checked : false } ], onsubmit: function( e ) { e.stopPropagation(); var windowID = e.target._eventsRoot._id; var link = jQuery('.custom-link-' + windowID).val(); if(link.indexOf('mailto:') === -1 && link.indexOf('tel:') === -1){ link = (link.indexOf('://') === -1) ? 'http://' + link : link; } jQuery('.custom-link-' + windowID).val(link); var target = '_self'; if(e.data.target === true){ target = '_blank'; } else if(e.data.target === false){ target = '_self' } editor.insertContent( '<span class="clearfix"><a class="btn btn-custom ' + e.data.style + '" target="' + target + '" href="' + link + '">' + e.data.text + '</a></span>' ); editor.windowManager.close(); } }); } }); }); 

Затем я ввел в очередь этот файл, используя hook_enqueue_scripts hook:

 function my_enqueue($hook) { if ( 'widgets.php' != $hook ) { return; } wp_enqueue_script( 'tinymce_custom_button_widget', get_stylesheet_directory_uri() . '/js/tinymce_widget.js', array( 'jquery' ), '1.0', true ); wp_enqueue_style( 'tinymce_custom_button_widget_css', get_stylesheet_directory_uri() . '/include/tinymce-button/custom-editor-style.css', '1.0', 'all'); } add_action( 'admin_enqueue_scripts', 'my_enqueue' ); 

И это в основном это.