HTML Semantic Structure
This is where WordPress is shit! 99% of the themes (or more) are complete crap in this area. Even themes that are advertized as SEO-optimized are crap in this area (maybe not 100% crap but more than 50% crap - by 'crap' I mean done the wrong way and not optimized).
H1-H6 tags have semantic meaning - they represent titles/subtitles - have more weight for a search engine (H1 most weight, H6 least weight). Usually you use them as subtitles within a post but a lot of themes (99% of them) use H1-H6 tags in other places, mainly the sidebars (as titles for widgets/panels). Also many themes use H1 tag for the blog name/logo in the header. This is bad on-site SEO.
Why is it bad to use H tags for widget/panel titles (in sidebars)?
Because they appear on every page and pollute your keyword relevance with generic words like "Categories", "Tags", "Archives", "Latest posts". Google may actually have exceptions in their algorithm to take this into consideration during the weighting of the content but you can't rely on that assumption. That means on a post page where you have a H2 subtitle in the post "Loosing weight is not difficult!" you also have for example 4 panels with H2 as "Categories", "Tags", etc. So you end up with diluted relevance for "loosing weight".
Why is it bad to have the site name/logo as H1?
Because it appears on EVERY page of your site. Hence you either end up having two different H1 tags (one for logo and one for the post title) - which is semantically incorrect (you should have only one H1 per page and you can have multiple H2-H6) or you have the blog name/logo as H1 and actual post title as H2 (lower weight). You only try (maybe) to rank for your blog name with the homepage so having it marked for search engines as being relevant on inner pages (post, category, tag) is bad practice because it dilutes the weight of the keyword that page was targeting.
Tags with and without semantic meaning
DIV and SPAN are HTML tags that have no semantic meaning and have no extra weight/relevance for SE, so use them if you don't want to give extra weight to the text/content in them. These tags are used by web developers as containers. Difference between DIV and SPAN is that DIV is block-level and SPAN is inline-level (has to do with rendering and CSS). What that means is some content put inside SPAN will appear inline with what was before and what is after it (other inline-level elements are B, STRONG, EM, I, DEL, U, IMG, A, etc. - tags that if you put in a paragraph of text will not add a line-break). DIV is block-level so if you put a word inside a DIV tag it will move it to a new line in the rendered page (other block-level tags are H1-H6, P, BLOCKQUOTE, OL, UL, LI, etc).
So what you should do is edit your theme files so that you make the blog name/logo H1 only for homepage but for any other pages you make it DIV or SPAN (you can use WP conditional tags for this). You could make it DIV/SPAN on all pages and just add a H1 in your homepage with whatever keyword you're targeting.
Then you have to change those H* tags inside your sidebar. For that you have to edit sidebar.php file in your theme's folder (and possibly functions.php if the theme is more advanced/intricate). You look for H* tags (generally H2 is used) and replace them with DIV. Now you very likely fucked up the theme (how it looks) so you have to go and adapt the CSS rules (in style.css) for those things so they display correctly. I'm not going to go into details - if you know web development a bit you know what I mean, otherwise you're stuck and I can't help you.
What you basically do is:
- Make single post and pages have the tite within H1
- Make listing pages (category, tag, archive, etc) have the listing title as H1 (e.g. <h1>Category Name</h1>) and actual post titles rendered from the loop as H2 (e.g <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>).
- Have no H1-H6 semantic tags as widget/panel titles in the sidebars or other places on the page that are not the actual content/post. You can have (though really not recommended) H2 tags in the sidebar for example if you have a "Latest posts" listing and H2 would be the post title (not the "Latest posts" widget title).
After reading it I am a bit lost.. I am gonna explain why. So I understand that we have to keep up with two rule:
1. ONLY ONE h1 per ANY page
2. We should not skip levels (for example, from H1 to H3).
Ok, so my concept is that my homepage (www.mydomain.com) has h1 with a description of my website placed in <title></title> and h2 as a names of the posts which are listed below (around 5). That was easy.
But what if I go to one of the post (e.g. www.mydomain.com/hello-world) and again I have to keep up with BOTH rules so title of the page is same as in HOMEPAGE but has tag h2 instead of h1 and title of the post has h1 to give him importance??
So it will look like:
<h2>page description</h2> - eg. "Best Cars and News from Industry"
<h1>single post title</h1> - eg. "Citroen GT: Game car arrived!"
But..it broke rule No2 to keep higher tags h higher on website and then going down (as search engine would like to see).