Tagi H1 w WordPress: Napraw problemy z hierarchią nagłówków

Opublikowano dnia | Przez Siteskyline
14 min czytania

Spędziłeś godziny na tworzeniu idealnej strony WordPress. Treść jest solidna. Słowa kluczowe są na miejscu. Twoja wtyczka SEO pokazuje zielony znacznik.

But open your browser’s developer tools and inspect the heading structure, and you’ll see something that can quietly kill your organic traffic: a broken heading hierarchy. Two H1s. A site title wrapped in `<h1>`. Sections jumping from H2 straight to H4. Or worse — no H1 at all.

This isn’t a błąd początkującego. It’s a problem strukturalny baked into how WordPress, themes, page builders, and the Gutenberg editor interact — and most site owners never know it’s happening.

This guide exists to fix that. Whether you’re a WordPress site owner managing your own content, or an agency building sites for dozens of clients, you’ll leave here knowing exactly how to przeprowadzić audyt, zdiagnozować i trwale rozwiązać problem kolejności nagłówków w WordPressie.


Czym jest znacznik H1 i dlaczego ma znaczenie w WordPressie?

An H1 tag (<h1>) is the top-level HTML heading element. In semantic HTML, it signals to browsers, search engines, and assistive technologies: “This is the primary topic of this page.”

Pomyśl o znacznikach nagłówków jak o konspekcie dokumentu:

H1 – Main page title (only one per page)
 ├── H2 – First major section
 │    ├── H3 – Subsection
 │    └── H3 – Another subsection
 ├── H2 – Second major section
 │    ├── H3 – Subsection
 │    │    └── H4 – Detail within subsection
 └── H2 – Third major section

Skip a level — jumping from H2 to H4 — and you break the outline. Use two H1s and you create structural ambiguity. Use H3 tags for visual styling and you introduce ghost headings that confuse crawlers.

In WordPress specifically, this gets complicated fast. Unlike a static HTML page where you write every tag manually, WordPress generates heading markup from at least four different sources simultaneously: the theme’s header template, the post title, the editor content, and any widgets or page builder modules you’ve added.

Co Google faktycznie mówi o znacznikach H1

Let’s settle the debatę o rankingach wcześnie.

In July 2026, Google’s Gary Illyes addressed this directly during the SEO Office Hours podcast: arranging headings in semantic order is genuinely helpful for accessibility (especially screen reader users), but it doesn’t significantly impact Google’s ranking algorithms. John Mueller has also stated that multiple H1 tags on a page don’t confuse crawlers and have zero direct SEO impact.

Czy to w ogóle ma znaczenie?

Yes — but not for the reason most SEO guides say.

Prawdziwe powody, dla których warto dbać o strukturę nagłówków w WordPressie, to:

  1. Zgodność z zasadami dostępności — WCAG 2.1 success criterion 1.3.1 requires information and relationships to be programmatically determinable. Broken heading hierarchies fail this.
  2. Możliwość indeksowania i sygnały dla treści — While Google can parse messy markup, a clean H1 gives the clearest possible signal about page topic, which matters in ambiguous cases.
  3. Doświadczenie użytkownika i czas przebywania na stronie — Readers scan headings. A logical hierarchy helps them navigate and stay longer — both indirect ranking signals.
  4. Czystość audytu technicznego — For agencies, heading issues surface in every audit tool (Screaming Frog, Ahrefs, SEMrush, Rank Math, Yoast). Client-facing reports look bad even if the direct ranking impact is debated.

Jak WordPress generuje znaczniki nagłówków: cztery źródła konfliktów

Zrozumienie dlaczego struktura nagłówków w WordPressie ulega zepsuciu, wymaga zrozumienia czterech miejsc, z których są one generowane.

Source 1: The Theme’s Header Template

Most WordPress themes output the site title in the header area. Older and poorly coded themes wrap this in an <h1> tag — on every single page. This means every page on your site starts with the same H1: your brand name.

Następnie, gdy renderowany jest tytuł strony lub wpisu (który powinien być H1), staje się on albo drugim H1, albo zostaje zdegradowany do H2.

Here’s what this looks like in a broken theme’s header.php:

php

// Broken — site title as H1 on every page
<h1><?php bloginfo('name'); ?></h1>
<h2><?php the_title(); ?></h2>  // Post title wrongly demoted

zepsutego motywu. Jak powinno to wyglądać:

php

// Correct — site title is a link or span, post title is H1
<p class="site-title"><a href="<?php echo home_url(); ?>"><?php bloginfo('name'); ?></a></p>
<h1><?php the_title(); ?></h1>

This is one of the most common WordPress H1 issues and it’s entirely invisible unless you inspect the page source. You can have an SEO plugin, a green readability score, and doskonałą treść — and still be outputting duplicate H1s on every page.

Źródło 2: Edytor blokowy Gutenberg

The WordPress block editor introduced deliberate changes to H1 behavior. By default, Gutenberg de-emphasizes the H1 option in the Heading block — the assumption is that the post title is already rendering as H1, so content-area headings should start at H2.

W praktyce stwarza to dwa problemy:

Problem A: Niektóre motywy nie output the post title as H1. If your theme renders the title in a <div> or <h2> for stylistic reasons, and Gutenberg has hidden H1 from the heading block options, you end up with zero H1 tags on the page.

This is exactly the situation flagged in a long-running GitHub issue in the Gutenberg repository — users requesting the ability to remove the H1 option entirely for enterprise and agency setups where the H1 is controlled at the template level. The issue highlights real confusion: the editor’s default behavior and the theme’s template need to be explicitly coordinated, but WordPress provides no automated check for this.

Problem B: Content editors can still select H1 in the block editor by changing the heading level. If your theme already outputs the post title as H1, an editor adding another H1 block inside the content area creates a duplicate — and no warning appears.

Źródło 3: Kreatory stron (Elementor, Divi, Beaver Builder)

Kreatory stron są największym źródłem chaosu w hierarchii nagłówków w WordPressie.

Here’s why: page builders give you granular visual control. You can drag a text element anywhere, style it any way, and assign any heading level. This is powerful for design. It’s disastrous for structure.

Typowy problem z nagłówkami w kreatorze stron wygląda tak:

  • Sekcja Hero: H1 (poprawnie) ✓
  • Feature section title: H3 (skipped H2, chosen because it “looks better”) ✗
  • Tytuł obszaru widgetu: H2 (wygląda jak nagłówek sekcji, ale jest tylko tytułem widgetu paska bocznego) ✗
  • Nagłówek opinii: H4 (brak H3 powyżej) ✗
  • Nagłówek CTA: H2 (powrót do wyższego poziomu, teraz konspekt jest całkowicie nieliniowy) ✗

The result is a heading structure that’s visually coherent but semantically meaningless. Screen readers and crawlers parsing this get a content outline that jumps around like a broken table of contents.

InspectWP’s documentation identifies this pattern explicitly: authors and page builder users choose heading levels based on how they wyglądają rather than their logical meaning — if H3 is the right visual size, they select H3, even with no H2 above it.

Źródło 4: Widgety i komponenty motywu

WordPress widget areas — sidebars, footers, header modules — often output their own headings. A “Recent Posts” widget might render as H2. A promotional banner built into the theme might use H3. None of these are part of the content outline, but they appear in the page’s heading structure.

This creates heading “noise” that inflates the apparent complexity of the outline and can push content headings out of their correct hierarchical position.


5 najczęstszych problemów z H1 i hierarchią nagłówków w WordPressie

Problem 1: Tytuł witryny jest zawinięty w H1 na każdej stronie

Jak to wygląda: Every page on your site has two H1s — your site name and your post title.

Kogo to dotyczy: Sites using older themes, poorly built premium themes, or any theme where the developer used <h1> for the site branding.

Jak to wykryć: Right-click any page → Inspect → search for <h1 in the Elements panel. If you see your site name wrapped in H1 in the <header> section, you have this problem.

Jak to naprawić:

Opcja 1: Edycja motywu potomnego (podejście programistyczne) In your child theme’s header.php, find the site title output and change it from <h1> to <p> or <span> with appropriate classes:

php

<p class="site-title">
  <a href="<?php echo esc_url(home_url('/')); ?>" rel="home">
    <?php bloginfo('name'); ?>
  </a>
</p>

Opcja 2: CSS + aria-label (obejście bez kodowania) If you can’t edit theme files, use CSS to reset the H1 styling on the site title:

css

.site-header h1.site-title {
  font-size: inherit;
  font-weight: inherit;
  margin: 0;
}

Uwaga: to ukrywa wizualny H1 problem but doesn’t fix the structural issue. The H1 tag remains in the markup.

Opcja 3: Przełącz się na dobrze ustrukturyzowany motyw Themes following WordPress coding standards (Twenty Twenty-Four, Kadence, GeneratePress, Astra) handle this correctly out of the box. If your current theme has this issue and you’re not a developer, switching is often the most reliable fix.


Problem 2: Brak H1 na stronie głównej

Jak to wygląda: Your homepage has zero H1 tags. SEO plugins report “No H1 found.”

Kogo to dotyczy: Sites that use a logo image for branding (hiding the site title), sites using a static front page with no title visible, or sites where the theme’s homepage template doesn’t call the_title().

This is a real and recurring issue in the WordPress support forums. The cause is typically this sequence: the site title is set to display in the header, but the user hides it (or replaces it with a logo), removing the only H1 from the page. Since the homepage often doesn’t have a “post title” in the way a blog post does, there’s no automatic H1 generated.

Jak to naprawić:

Dla strony głównej: Dodaj H1 do sekcji hero lub szablonu strony. Może to być:

  • A visible heading (“Your Business Name | Service Category”) that also functions as the H1
  • Wizualnie ukryty H1 dodany za pomocą CSS (position: absolute; clip: rect(0 0 0 0);), który zapewnia znacznik semantyczny bez zakłócania projektu wizualnego

W Gutenbergu: Dodaj blok Nagłówek na górze treści strony głównej, ustaw go jako H1 i włącz go do swojego przekazu głównego.


Problem 3: Pominięte poziomy nagłówków w treści

Jak to wygląda: Struktura treści przeskakuje z H2 bezpośrednio do H4 lub z H1 bezpośrednio do H3.

Kogo to dotyczy: Każdy, kto pisze długie treści i używa nagłówków do stylizacji wizualnej, a nie do struktury semantycznej.

Dlaczego to ma znaczenie: As InspectWP notes, skipping heading levels happens when authors choose levels based on appearance — the H3 looks right, so they use H3, regardless of whether an H2 precedes it.

Jak wykryć to w Gutenbergu: Kliknij ikonę informacji (ⓘ) na górnym pasku narzędzi edytora bloków. Panel Konspekt dokumentu pokazuje każdy nagłówek w kolejności i oznacza pominięte poziomy ostrzeżeniem.

Jak to naprawić:

  1. Przed publikacją sprawdź strukturę nagłówków za pomocą Konspektu dokumentu
  2. Set a content style guide for your team: H2 for major sections, H3 for subsections, H4 for sub-subsections — never skip levels
  3. Use Yoast SEO or Rank Math’s content analysis — both flag heading structure issues

Problem 4: Wiele znaczników H1 z kreatorów stron

Jak to wygląda: A page built with Elementor or Divi has three or four H1 tags because each major section has its own hero-style “H1” headline.

Jak to naprawić:

In Elementor: Edit each heading widget → check the HTML Tag setting → set only the primary page title to H1, and change all others to H2 or H3 as appropriate.

In Divi: Edit heading modules → under Advanced → HTML Tag → change to the correct semantic level.

In Beaver Builder: Each heading module has a “Heading Tag” setting in the Style tab. Audit each one.


Problem 5: Problem z widocznością H1 w Gutenbergu

Jak to wygląda: Your theme doesn’t output the post title as H1, and Gutenberg has hidden the H1 option in the Heading block. Your pages have no H1.

Jak to naprawić:

For developers managing a site where the H1 must be placed inside the content area, you can restore the H1 option using a filter in your theme’s functions.php:

php

// Allow H1 in the Heading block
add_filter( 'allowed_block_types_all', function( $allowed_blocks ) {
    return $allowed_blocks;
});

Alternatively, switch to the “Edit as HTML” view for the Heading block and manually set <h1> in the markup.

W przypadku konfiguracji agencyjnych, gdzie chcesz uniemożliwić redaktorom dodawanie H1 (ponieważ szablon to kontroluje), użyj block_editor_settings_all filtra, aby ograniczyć poziomy nagłówków w edytorze.


Jak przeprowadzić audyt struktury nagłówków w WordPress (krok po kroku)

Metoda 1: Darmowa wtyczka SkySEOManager

Użyj wtyczki SkySEOManager i jej wbudowanego analizatora SEO, aby znaleźć wszystkie problemy związane z nagłówkami.

Przeczytaj nasz pełny przewodnik: jak przeprowadzić audyt swojej witryny WordPress za pomocą SkySEOManager pod kątem wszystkich problemów SEO

Metoda 2: Użyj darmowego analizatora SEO Siteskyline

Odwiedź nasz darmowy analizator SEO wprowadź swój adres URL i kliknij „analizuj teraz”.

It’ll Show you all issue with your headline tags.

headline broken structure

Hierarchia H1 w WordPress: Lista kontrolna dla agencji

If you’re building or maintaining WordPress sites for clients, heading structure needs to be part of your pre-launch and ongoing audit process. Here’s a repeatable checklist:

Na poziomie motywu:

  • Site title in header is NOT wrapped in <h1> (use <p>, <span>, or <div>)
  • Post/page title renders as <h1> in <article> or <main> on all post types
  • Homepage has exactly one <h1> — either from the site title or the hero section
  • Archive pages (category, tag, author) have a descriptive <h1>
  • 404 page has an <h1>

Na poziomie treści:

  • Each page has exactly one <h1> in the content area (or zero if the theme handles it via the title)
  • Major sections use <h2>
  • Subsections use <h3> nested within <h2> sections
  • Żadne poziomy nagłówków nie są pomijane
  • Nagłówki nie są używane wyłącznie do stylizacji wizualnej

Na poziomie wtyczki/kreatora:

  • Elementy nagłówków w Elementor/Divi/Beaver Builder mają poprawne ustawienia tagów HTML
  • Widget areas don’t output accidental H1 or H2 tags
  • Ostrzeżenia wtyczki SEO dotyczące H1 są rozwiązane na wszystkich kluczowych stronach

The Correct WordPress Heading Hierarchy — By Page Type

One pattern doesn’t fit every WordPress page type. Here’s the correct structure for each:

Wpis na blogu / Pojedynczy wpis

H1: Post Title (output by theme automatically)
  H2: First major section
    H3: Subsection
    H3: Another subsection
  H2: Second major section
    H3: Subsection
      H4: Detail
  H2: Third major section

Strona główna (statyczna strona frontowa)

H1: Primary value proposition or page headline
  H2: Service category or feature group
    H3: Individual service or feature
  H2: Testimonials or social proof section
  H2: Call to action section

Strona produktu WooCommerce

H1: Product name (output by WooCommerce template)
  H2: Product description heading
  H2: Reviews
  H2: Related products

Strona kategorii / archiwum

H1: Category name (e.g., "WordPress SEO Articles")
  H2: Post title within loop (if posts are displayed with headings)

Typowe błędy, które psują strukturę H1 w WordPress

Błąd 1: Używanie tagów nagłówków do stylizacji tekstu If you want large bold text that isn’t a section heading, don’t use H2. Add a CSS class to a <p> or <div> and style it visually. Using heading tags for aesthetics pollutes your structural outline.

Błąd 2: Pozwalanie redaktorom na wybieranie poziomów nagłówków „na oko” Bez przewodnika stylu treści redaktorzy będą naturalnie skłaniać się ku poziomom nagłówków, które wyglądają right. A brief internal guide — “H2 for sections, H3 for subsections, never use H1 in content” — prevents most issues.

Błąd 3: Instalowanie motywu WordPress bez sprawdzenia struktury nagłówków Nie wszystkie motywy premium WordPress generują poprawne znaczniki nagłówków. Zanim zdecydujesz się na motyw, sprawdź wpis demonstracyjny: czy tytuł wpisu renderuje się jako H1? Czy tytuł witryny nie jest H1 na stronach wewnętrznych?

Błąd 4: Zakładanie, że Twoja wtyczka SEO obejmuje wszystko Yoast and Rank Math check the post you’re editing. They don’t catch heading issues introduced by your theme’s header template, footer widgets, or archive page templates. A manual audit or Screaming Frog crawl is still necessary.

Błąd 5: Naprawianie wyglądu wizualnego zamiast struktury HTML The most common “fix” for the site title H1 problem is adding CSS to make it look smaller. That hides the problem visually but leaves the broken markup in place. Fix the HTML tag, not just the style.

Siteskyline

Siteskyline

Siteskyline is a premium WordPress plugin and SEO management platform dedicated to providing the best speed, security, and optimization tools.