TinyMCE and headers

Most commonly your theme will have it’s headers (H1,Hh2, etc) set by the theme; you as a theme designer decide which header to use where. However, you want to give your client (the site’s editor) some control of how to use headers within the content of posts and pages. The TinyMCE Advanced plugin comes in handy here as it allows you to add a few extra buttons to the bar of the WordPress WYSIWYG editor. Unfortunately the dropdown that contains the options for paragraph, headers, and so on, also has the H1 right in there making it very easy for your editor to use it freely and thus making your website just that little bit less search engine friendly. I came across a tiny (pun intended) peace of code that gives just enough control to change that:

* Modifying TinyMCE editor to remove unused items.
function customformatTinyMCE($init) {
   // Add block format elements you want to show in dropdown
   $init['theme_advanced_blockformats'] = 'p,pre,h1,h2,h3,h4';
   $init['theme_advanced_disable'] = 'strikethrough,underline,forecolor,justifyfull';

   return $init;

// Modify Tiny_MCE init
add_filter('tiny_mce_before_init', 'customformatTinyMCE' );

Source: wordpress.org/support/topic/tinymce-formatting-options-remove-h1-h1-pre

By changing ‘theme_advanced_blockformats’ you can control exactly what shows up in that dropdown.