EDIT
The quick and easy method is just a simple setting: 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' );
Everything below this point is a much longer way to go about it but may be helpful to future viewers so I’ll keep it in.
So pretty much right after I asked this question I found the answer on the TinyMCE Forms: Adding Class to TinyMCE style_formats – not the last line of the code. In WordPress format it looks like this:
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' );
Unfortunately it still clears out all the old TinyMCE Menu Items. I then used the style_format docs to recreate the menu items. The long version looks like this (without the class).
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' );
You can just append the classes array in the first function to this existing function to add it as the last menu item. Here’s the compact version, with the class:
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' );