До WP 3.9 у меня были следующие два фильтра, которые применялись в functions.php:
function my_mce_buttons_2( $buttons ) {
array_unshift( $buttons, 'styleselect' );
return $buttons;
}
add_filter('mce_buttons_2', 'my_mce_buttons_2');
function mce_mod( $init ) {
$init['theme_advanced_blockformats'] = 'p,h3,h4';
$init['theme_advanced_styles'] = "Header gross=mus-bi news-single-bighead; Header klein=mus-bi news-single-smallhead; Link=news-single-link; List Items=news-single-list";
return $init;
}
add_filter('tiny_mce_before_init', 'mce_mod');
так что в раскрывающемся списке форматов абзаца отображаются только значения p, h3 и h4, а в раскрывающемся списке пользовательских стилей - "Header gross", "Header klein" и т. д. Но, к сожалению, wp и tinymce больше не беспокоятся, так как wp 3.9, я вижу только выпадающий список стандартных форматов абзацев
а также раскрывающийся список стандартных стилей:
До сих пор я не нашел никаких документов о том, изменились ли какие-либо хуки с обновлением до tinymce 4. Кто-нибудь знает? С наилучшими пожеланиями Ральф
Обновление: Хорошо, основываясь на небольшом количестве исследований и комментариях ниже, я думаю, что я понял:
//Creating the style selector stayed the same
function my_mce_buttons( $buttons ) {
array_unshift( $buttons, 'styleselect' );
return $buttons;
}
add_filter('mce_buttons', 'my_mce_buttons');
function mce_mod( $init ) {
//theme_advanced_blockformats seems deprecated - instead the hook from Helgas post did the trick
$init['block_formats'] = "Paragraph=p; Heading 3=h3; Heading 4=h4";
//$init['style_formats'] doesn't work - instead you have to use tinymce style selectors
$style_formats = array(
array(
'title' => 'Header 3',
'classes' => 'mus-bi news-single-bighead'
),
array(
'title' => 'Header 4',
'classes' => 'mus-bi news-single-smallhead'
),
array(
'title' => 'Link',
'block' => 'a',
'classes' => 'news-single-link',
'wrapper' => true
)
);
$init['style_formats'] = json_encode( $style_formats );
return $init;
}
add_filter('tiny_mce_before_init', 'mce_mod');
style_select
и добавить к нему меню «Классы». wordpress.stackexchange.com/questions/143689/…Ответы:
Если вы заглянете
class-wp-editor.php
внутрь, то обнаружите, что используемый вами фильтр все еще там, но настройки другие.Я предполагаю, но я думаю, что вам нужно изменить ключ массива, на который вы нацеливаетесь
formats
.РЕДАКТИРОВАТЬ Оставив это на месте, но ОП подтверждает, что это не делает то, что он пытается.
Имейте в виду, что это абсолютно не проверено, поэтому ваш пробег может отличаться. (И не используйте на производственном сайте, пока вы не проверили его).
Продолжая дальше
Копать глубже форматы, кажется, пользовательская кнопка tinyMCE. Вы можете видеть, что
formatselect
кнопка добавленаmce_buttons_2
вclass-wp-editor.php
. И тогда я отследил это доtinymce.js
:Имея это в виду, я думаю, что новая цель будет 1. (в идеале) изменить
editor.settings.block_formats
или 2. удалить эту кнопку, отфильтровавmce_buttons_2
и добавив свою собственную версию.Проверено и работает
Небольшое предупреждение : я не уверен, где добавить стили для самих выпадающих элементов. В образце TinyMCE опция "Red Headline" - красная. Я не мог понять это. Пожалуйста, дайте мне знать.
источник
block_formats
опцион не может иметь трейлинг; , Я строил значение из сохраненных настраиваемых параметров и имел конечный результат; это разрушило список. Надеюсь, это сэкономит кому-то несколько минут.array( 'title' => 'Red text', 'inline' => 'span', 'styles' => array( 'color' => '#ff0000' ) ),
?unset($init['preview_styles']);
$init['preview_styles'] = 'font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow';
. Я предполагаю, что это по сути то же самое, что предложил @Dalton, хотя и более явно. Это просто устанавливает значения по умолчанию, согласно документации