Black Studio TinyMCE Widget

Плагин добавляет новый текстовый виджет с поддержкой визуального и HTML редактора WordPress. Виджет позволяет вставлять в сайдбар и другие области темы форматированный текст с картинками и прочими медиа-объектами. Также в тексте можно использовать любые поддерживаемые шоткоды.

С выходом WordPress 4.8 данный плагин неактуален, так как виджет "Текст" теперь имеет визуальный редактор из коробки.

С Black Studio TinyMCE Widget вы сможете редактировать виджеты в режиме WYSIWYG с использованием родного редактора WordPress TinyMCE, так же, как вы делаете это в обычных записях.

«Black Studio TinyMCE Widget» ориентирован прежде всего на новичков и людей не имеющих ничего общего с сайтостроением. На тех кому нужен результат здесь и сейчас. Однако и для опытных пользователей он тоже может быть удобен, потому что оснащен кучей хуков и грамотно спроектирован в коде.

Особенности плагина Black Studio TinyMCE Widget

  • Текстовый виджет с функционалом визуального и HTML редактора WordPress
  • Загрузка картинок и видео в медиатеку и вставка из неё
  • Поддержка полноэкранного редактирования
  • Редактирование виджета через кастомайзер
  • Поддержка мультисайтовости (WordPress MU)
  • Поддержка мультиязычных сайтов (WPML, Polylang, WPGlobus)

Хуки плагина

Плагин позволяет изменять HTML код виджета и контента который он выводит, через хуки. Их в плагине много. Кроме того, к контенту примеряются дополнительные хуки, чтобы, например обрабатывать вставленную в контент ссылку на youtube и делать из нее видео. Ниже все такие фильтры, которые применяются к контенту виджета. Все эти хуки включены и для контента обычной записи самого WordPress, однако в виджете не срабатывает хук the_content чтобы не вызывать ненужных конфликтов, потому что на этот хук цепляются разные плагины...

  • autoembed - Превращается специальные URL (пр. ссылка на youtube видео) в HTML код (встраивания).

  • convert_smilies - Изменяет текстовые смайлики в тексте на соответствующие смайлики-картинки. подробнее...

  • wpautop - Заменяет переносы строк на P и BR теги. подробнее...

  • do_shortcode - Обрабатывает все известные шорткоды. подробнее...

  • wp_make_content_images_responsive - Фильтрует 'img' элементы в тексте добавляет к ним атрибуты 'srcset' и 'sizes'. подробнее...

Удалить такие фильтры можно следующим кодом где-нибудь в functions.php темы:

// отменить родные фильтры плагина
add_action( 'init', 'remove_bstw_widget_text_filters' );
function remove_bstw_widget_text_filters() {
	if ( function_exists( 'bstw' ) ) {
		remove_filter( 'widget_text', array( bstw()->text_filters(), 'autoembed' ), 4 );
		remove_filter( 'widget_text', array( bstw()->text_filters(), 'convert_smilies' ), 6 );
		remove_filter( 'widget_text', array( bstw()->text_filters(), 'wpautop' ), 8 );
		remove_filter( 'widget_text', array( bstw()->text_filters(), 'do_shortcode' ), 10 );
		remove_filter( 'widget_text', array( bstw()->text_filters(), 'wp_make_content_images_responsive' ), 12 );
	}
}

// отменить фильтры других плагинов повешенные на хук `widget_text`
add_action( 'init', 'remove_bstw_widget_text_plugin_filters' );
function remove_bstw_widget_text_plugin_filters() {
	if ( function_exists( 'bstw' ) ) {
		remove_filter( 'widget_text', array( bstw()->compatibility()->module( 'wpml' ), 'widget_text' ), 2 );
		remove_filter( 'widget_text', array( bstw()->compatibility()->module( 'nextgen_gallery' ), 'widget_text' ) );
	}
}

Через хуки можно изменить HTML код виджета

#1 Свой HTML код до и после текста виджета

add_filter( 'black_studio_tinymce_before_text', 'my_widget_before_text', 10, 2 );
function my_widget_before_text( $before_text, $instance ) {
	return '<div class="mytextwidget">';
}
add_filter( 'black_studio_tinymce_after_text', 'my_widget_after_text', 10, 2 );
function my_widget_after_text( $after_text, $instance ) {
	return '</div>';
}

#2 Полное удаление тегов до и после текста виджета

add_filter( 'black_studio_tinymce_before_text', '__return_empty_string' );
add_filter( 'black_studio_tinymce_after_text', '__return_empty_string' );

#3 Отключим показ виджета, если в нем нет текста (он пустой)

add_filter( 'black_studio_tinymce_hide_empty', '__return_true' );

Полный список хуков смотрите в коде плагина на GitHub.

Удаление плагина и очистка его данных

Данные плагина хранятся в сериализованном массиве в таблице wp_options в опции 'widget_black-studio-tinymce'. Эти данные размещает сам WordPress и относятся они к виджету, а не к плагину, поэтому после удаления плагина данные намеренно не удаляются для сохранности. Если вы точно знаете что они не пригодятся после удаления плагина, то их нужно удалить вручную, таким кодом:

delete_option('widget_black-studio-tinymce');