Intereting Posts
front-page.php stylesheet Пользовательский каталог wp-контента и загрузки Как обрабатывать сложные данные с помощью API настроек список страниц только от основного родителя Текущий пользователь в плагине возвращает NULL Преобразуйте дефисы подкатегорий по умолчанию в маркеры или любые другие символы Как выполнить функцию javascript непосредственно перед сохранением сообщения woocommerce или сообщения? WP_Query: исключить скрытые продукты из списка продуктов WooCommerce Аутентифицированный запрос WP REST API V2, возвращающий ошибку 403 на / users / me Родители и дети Как предотвратить предварительный просмотр короткого кода от взлома редактора tinymce? Получите параметры боковой панели (before_widget, before_title и т. Д.) Из виджета Обновление / сохранение элементов, созданных wp_terms_checklist на frontend Как сохранить несколько доменов для моего сайта wordpress Как передать переменную hook в функцию?

TinyMCE style_select – добавить классы

TL; DR Вопрос

  1. Как создать подменю для моих классов с помощью style_format ?
  2. Можно ли добавить подменю в существующее меню?

С новым Styleselect в TinyMCE 4.0 есть куча предопределенных меню, заголовков, строк, блоков и выравнивания. Есть ли способ сохранить эти меню, но добавить новое меню Классы с подэлементами определенных классов разработчика?

Стиль Выберите раскрывающееся меню

Вышеприведенная картина – это в значительной степени то, что я собираюсь сделать. Я могу добавлять классы через эту функцию фильтрации . Проблема заключается в том, что он удаляет все предопределенные пункты меню (заголовки через выравнивание) и заменяет их только моим классом.

 function myformatTinyMCE($in) { $style_formats = array( array( 'title' => 'Blue Color', 'selector' => 'p,strong,u,em,ul,ol,a', 'classes' => 'blueColor', 'wrapper' => false, ) ); $in['style_formats'] = json_encode( $style_formats ); return $in; } add_filter('tiny_mce_before_init', 'myformatTinyMCE' ); 

Я посмотрел документацию TinyMCE style_formats чтобы попробовать и реплицировать то, что они делают, но похоже, что они могут иметь предопределенные стили, связанные с ключевыми словами, такие как выравнивания, поэтому я не уверен, что это возможно. Я смог воспроизвести подменю, но не смог применить его, поскольку это класс, а не прямой формат style="" .

 function myformatTinyMCE($in) { $style_formats = array( array( 'title' => 'Classes', 'items' => array( array( 'title' => 'Blue Color', 'icon' => 'alignleft', 'format' => 'blueColor' ) ) ) ); $in['style_formats'] = json_encode( $style_formats ); return $in; } add_filter('tiny_mce_before_init', 'myformatTinyMCE' ); 

Solutions Collecting From Web of "TinyMCE style_select – добавить классы"

РЕДАКТИРОВАТЬ

Быстрый и простой способ – это просто настройка: style_formats_merge

 function myformatTinyMCE($in) { $style_formats = array( array( 'title' => 'Classes', 'items' => array( array( 'title' => 'Blue Color', 'selector' => 'p,strong,u,em,ol,ul', 'classes' => 'blueColor' ) ) ) ); $in['style_formats_merge'] = true; $in['style_formats'] = json_encode( $style_formats ); return $in; } add_filter('tiny_mce_before_init', 'myformatTinyMCE' ); 

Все, что находится ниже этой точки, – это гораздо более длинный путь, но может быть полезным для будущих зрителей, поэтому я сохраню его.


Поэтому почти сразу после того, как я задал этот вопрос, я нашел ответ на формы TinyMCE: добавление класса в TinyMCE style_formats – не последнюю строку кода. В WordPress формат выглядит следующим образом:

 function myformatTinyMCE($in) { $style_formats = array( array( 'title' => 'Classes', 'items' => array( array( 'title' => 'Blue Color', 'selector' => 'p,strong,u,em,ol,ul', 'classes' => 'blueColor' ) ) ) ); $in['style_formats'] = json_encode( $style_formats ); return $in; } add_filter('tiny_mce_before_init', 'myformatTinyMCE' ); 

К сожалению, он все еще очищает все старые элементы меню TinyMCE. Затем я использовал документы style_format для воссоздания элементов меню. Длинная версия выглядит так (без класса).

 function myformatTinyMCE($in) { $style_formats = array( array( 'title' => 'Headers', 'items' => array( array( 'title' => 'Header 1', 'format' => 'h1' ), array( 'title' => 'Header 2', 'format' => 'h2', ), array( 'title' => 'Header 3', 'format' => 'h3' ), array( 'title' => 'Header 4', 'format' => 'h4' ), array( 'title' => 'Header 5', 'format' => 'h5' ), array( 'title' => 'Header 6', 'format' => 'h6' ) ) ), array( 'title' => 'Inline', 'items' => array( array( 'title' => 'Bold', 'icon' => 'bold', 'format' => 'bold' ), array( 'title' => 'Italic', 'icon' => 'italic', 'format' => 'italic' ), array( 'title' => 'Underline', 'icon' => 'underline', 'format' => 'underline' ), array( 'title' => 'Strikethrough', 'icon' => 'strikethrough', 'format' => 'strikethrough' ), array( 'title' => 'Superscript', 'icon' => 'superscript', 'format' => 'superscript' ), array( 'title' => 'Subscript', 'icon' => 'subscript', 'format' => 'subscript' ), array( 'title' => 'Code', 'icon' => 'code', 'format' => 'code' ) ) ), array( 'title' => 'Blocks', 'items' => array( array( 'title' => 'Paragraph', 'format' => 'p' ), array( 'title' => 'Blockquote', 'format' => 'blockquote' ), array( 'title' => 'Div', 'format' => 'div' ), array( 'title' => 'Pre', 'format' => 'pre' ) ) ), array( 'title' => 'Alignment', 'items' => array( array( 'title' => 'Left', 'icon' => 'alignleft', 'format' => 'alignleft' ), array( 'title' => 'Center', 'icon' => 'aligncenter', 'format' => 'aligncenter' ), array( 'title' => 'Right', 'icon' => 'alignright', 'format' => 'alignright' ), array( 'title' => 'Justify', 'icon' => 'alignjustify', 'format' => 'alignjustify' ) ) ) ); $in['style_formats'] = json_encode( $style_formats ); return $in; } add_filter('tiny_mce_before_init', 'myformatTinyMCE' ); 

Вы можете просто добавить массив классов в первую функцию к этой существующей функции, чтобы добавить ее в качестве последнего элемента меню. Вот компактная версия с классом:

 function myformatTinyMCE($in) { $style_formats = array( array('title'=>'Headers','items'=>array(array('title'=>'Header 1','format'=>'h1'),array('title'=>'Header 2','format'=>'h2',),array('title'=>'Header 3','format'=>'h3'),array('title'=>'Header 4','format'=>'h4'),array('title'=>'Header 5','format'=>'h5'),array('title'=>'Header 6','format'=>'h6'))),array('title'=>'Inline','items'=>array(array('title'=>'Bold','icon'=>'bold','format'=>'bold'),array('title'=>'Italic','icon'=>'italic','format'=>'italic'),array('title'=>'Underline','icon'=>'underline','format'=>'underline'),array('title'=>'Strikethrough','icon'=>'strikethrough','format'=>'strikethrough'),array('title'=>'Superscript','icon'=>'superscript','format'=>'superscript'),array('title'=>'Subscript','icon'=>'subscript','format'=>'subscript'),array('title'=>'Code','icon'=>'code','format'=>'code'))),array('title'=>'Blocks','items'=>array(array('title'=>'Paragraph','format'=>'p'),array('title'=>'Blockquote','format'=>'blockquote'),array('title'=>'Div','format'=>'div'),array('title'=>'Pre','format'=>'pre'))),array('title'=>'Alignment','items'=>array(array('title'=>'Left','icon'=>'alignleft','format'=>'alignleft'),array('title'=>'Center','icon'=>'aligncenter','format'=>'aligncenter'),array('title'=>'Right','icon'=>'alignright','format'=>'alignright'),array('title'=>'Justify','icon'=>'alignjustify','format'=>'alignjustify'))) ,array( 'title' => 'Classes', 'items' => array( array( 'title' => 'Blue Color', 'selector' => 'p,strong,u,em,ol,ul', 'classes' => 'blueColor' ) ) ) ); $in['style_formats'] = json_encode( $style_formats ); return $in; } add_filter('tiny_mce_before_init', 'myformatTinyMCE' );