如果你进去看看class-wp-editor.php
您会发现您使用的过滤器仍然存在,但设置不同。
self::$first_init = array(
\'theme\' => \'modern\',
\'skin\' => \'lightgray\',
\'language\' => self::$mce_locale,
\'formats\' => "{
alignleft: [
{selector: \'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li\', styles: {textAlign:\'left\'}},
{selector: \'img,table,dl.wp-caption\', classes: \'alignleft\'}
],
aligncenter: [
{selector: \'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li\', styles: {textAlign:\'center\'}},
{selector: \'img,table,dl.wp-caption\', classes: \'aligncenter\'}
],
alignright: [
{selector: \'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li\', styles: {textAlign:\'right\'}},
{selector: \'img,table,dl.wp-caption\', classes: \'alignright\'}
],
strikethrough: {inline: \'del\'}
}",
\'relative_urls\' => false,
\'remove_script_host\' => false,
\'convert_urls\' => false,
\'browser_spellcheck\' => true,
\'fix_list_elements\' => true,
\'entities\' => \'38,amp,60,lt,62,gt\',
\'entity_encoding\' => \'raw\',
\'keep_styles\' => false,
\'paste_webkit_styles\' => \'font-weight font-style color\',
// Limit the preview styles in the menu/toolbar
\'preview_styles\' => \'font-family font-size font-weight font-style text-decoration text-transform\',
\'wpeditimage_disable_captions\' => $no_captions,
\'wpeditimage_html5_captions\' => current_theme_supports( \'html5\', \'caption\' ),
\'plugins\' => implode( \',\', $plugins ),
);
我猜,但我认为您需要更改目标阵列密钥
formats
.
EDIT 将其保留在适当位置,但OP确认这并不能实现他所尝试的。
function mce_mod( $init ) {
$init[\'formats\'] = "{
alignleft: [
{selector: \'p,h3,h4,td,th,div,ul,ol,li\', styles: {textAlign:\'left\'}},
{selector: \'img,table,dl.wp-caption\', classes: \'alignleft\'}
],
aligncenter: [
{selector: \'p,h3,h4,td,th,div,ul,ol,li\', styles: {textAlign:\'center\'}},
{selector: \'img,table,dl.wp-caption\', classes: \'aligncenter\'}
],
alignright: [
{selector: \'p,h3,h4,td,th,div,ul,ol,li\', styles: {textAlign:\'right\'}},
{selector: \'img,table,dl.wp-caption\', classes: \'alignright\'}
],
strikethrough: {inline: \'del\'}
}";
return $init;
}
add_filter(\'tiny_mce_before_init\', \'mce_mod\');
请记住,这是完全未经测试的,因此您的里程数可能会有所不同。(在测试之前不要在生产站点上使用)。
Continuing onwards
深入挖掘这些格式似乎是一个自定义的tinyMCE按钮。你可以看到
formatselect
按钮添加到
mce_buttons_2
在
class-wp-editor.php
. 然后我追踪到
tinymce.js
:
editor.addButton(\'formatselect\', function() {
var items = [], blocks = createFormats(editor.settings.block_formats ||
\'Paragraph=p;\' +
\'Address=address;\' +
\'Pre=pre;\' +
\'Heading 1=h1;\' +
\'Heading 2=h2;\' +
\'Heading 3=h3;\' +
\'Heading 4=h4;\' +
\'Heading 5=h5;\' +
\'Heading 6=h6\'
);
考虑到这一点,我认为新的目标将是1。(理想情况下)更改
editor.settings.block_formats
或2。通过筛选删除该按钮
mce_buttons_2
并添加您自己的自定义版本。
Tested and working
function mce_mod( $init ) {
$init[\'block_formats\'] = \'Paragraph=p;Heading 3=h3;Heading 4=h4\';
$style_formats = array (
array( \'title\' => \'Bold text\', \'inline\' => \'b\' ),
array( \'title\' => \'Red text\', \'inline\' => \'span\', \'styles\' => array( \'color\' => \'#ff0000\' ) ),
array( \'title\' => \'Red header\', \'block\' => \'h1\', \'styles\' => array( \'color\' => \'#ff0000\' ) ),
array( \'title\' => \'Example 1\', \'inline\' => \'span\', \'classes\' => \'example1\' ),
array( \'title\' => \'Example 2\', \'inline\' => \'span\', \'classes\' => \'example2\' )
);
$init[\'style_formats\'] = json_encode( $style_formats );
$init[\'style_formats_merge\'] = false;
return $init;
}
add_filter(\'tiny_mce_before_init\', \'mce_mod\');
function mce_add_buttons( $buttons ){
array_splice( $buttons, 1, 0, \'styleselect\' );
return $buttons;
}
add_filter( \'mce_buttons_2\', \'mce_add_buttons\' );
小提示:我不确定在哪里添加下拉项目本身的样式。在TinyMCE示例中,“红色标题”选项为红色。我想不出来。如果你愿意,请告诉我。