Я прочитал несколько руководств по добавлению пользовательских стилей в редактор WYSIWYG (TinyMCE). Ни один из них, похоже, не работает в новейших версиях Wordpress. Я использую v3.3.2. instructions from the codex работает, но ограниченным образом ...Пользовательские стили для Wordpress TinyMCE
ПРИМЕЧАНИЕ: Чтобы быть на 100% ясным, я пытаюсь добавить раскрывающийся список «Стили», который автор может использовать для применения моих пользовательских стилей к тексту. (Пожалуйста, не путайте мой вопрос с тем, как стилизовать редактор самостоятельно, используя editor-style.css ...)
Мне удалось заставить код работать, но только с использованием строки с комментариями в my_mce_before_init()
. Проблема с этой версией заключается в том, что она добавляет класс с общим <span>
. Я пытаюсь использовать более мощную версию кода (как показано ниже), но что-то не так. Появится раскрывающийся список стилей, но он пуст. Если я нажму на него, то первый элемент говорит «Стили», но ничего не делает. Я подозреваю, что что-то случилось с моим массивом. Надеюсь, кто-то более знающий, чем я, может установить меня прямо.
Вот соответствующий код в functions.php моей теме в ...
Вот как добавить кнопку:
// Add the Style selectbox to the second row of MCE buttons
function my_mce_buttons_2($buttons)
{
array_unshift($buttons, 'styleselect');
return $buttons;
}
add_filter('mce_buttons_2', 'my_mce_buttons_2');
Вот как я добавить стили (она работает, когда я раскомментировать):
//Define the actual styles that will be in the box
function my_mce_before_init($init_array)
{
// add classes using a ; separated values
//$init_array['theme_advanced_styles'] = "Section Head=section-head;Sub Section Head=sub-section-head";
$temp_array['theme_advanced_styles'] = array(
array(
'title' => 'Section Head',
'block' => 'h3',
'classes' => 'section-head'
),
array(
'title' => 'Sub Section Head',
'block' => 'h4',
'classes' => 'sub-section-head'
)
);
$styles_array = json_encode($temp_array['theme_advanced_styles']);
// THIS IS THE PROBLEM !!!! READ BELOW
$init_array['theme_advanced_styles'] = $styles_array;
return $init_array;
}
add_filter('tiny_mce_before_init', 'my_mce_before_init');
UPDATE: Я понял это (см мой ответ ниже). Прежде чем прокручивать вниз, обратите внимание на код выше, theme_advanced_styles
- это неправильный ключ. Он должен быть style_formats
при определении пользовательских стилей так, как я это делаю. Я подозреваю, что это распространенная ошибка.
Не могли бы вы предоставить полный рабочий код? Я пытаюсь заставить это работать, но еще не успел. – INT
Используйте мой оригинальный код из вопроса, но замените 'theme_advanced_styles' на 'style_formats'. – emersonthis
FYI ... Тем, кто пытается заставить это работать - это так - трюк, не упомянутый в ответе (но в этом вопросе), состоит в том, что вы должны * * json_encode', что '$ style_formats' массив, прежде чем назначать его к настройке 'style_formats' – Ben