【WordPress】h1タグをページの種類によって出し分ける方法

1枚のheader.phpを共通利用するWordPressで、h1タグを動的に出し分ける方法。2種類の方法がある。

ひとつは、TOPページやアーカイブページではブログ名をh1タグで囲い、投稿ページや固定ページではページタイトルをh1で囲うようにする方法。

ふたつめは、条件によって出力する内容を複数連ねて記述する方法。

h1タグを動的に出し分けるheader.phpの書き方


<?php $html_tag = ( is_home() || is_front_page() || is_archive() || is_404()) ? 'h1' : 'div'; ?>
<<?php echo $html_tag; ?> class="blogname">
  <a href="<?php echo esc_url(home_url()); ?>">
    <img src="<?php echo get_template_directory_uri(); ?>/img/header-blogname-trans.png" alt="すなこと">
  </a>
</<?php echo $html_tag; ?>>

コード解説


<?php $html_tag = ( is_home() || is_front_page() || is_archive() || is_404()) ? 'h1' : 'div'; ?>

h1タグを動的に出し分けているコード。

表示しているページがホーム or フロントページ or アーカイブ or 404 ならばh1で囲い、それ以外ならdivで囲うよう指示している。

ソースの確認

ブラウザでソースを表示させると、トップページではサイトロゴがh1となり、


<h1 class="blogname">
  <a href="https://sunakoto2.com">
    <img src="https://sunakoto.com/wp-content/themes/GicSick/img/header-blogname-trans.png" alt="すなこと">
  </a>
</h1>

投稿ページではページタイトルがh1となっている。


<h1>【WordPress】h1タグをページの種類によって出し分ける方法</h1>

条件によって出力する内容を複数連ねて記述する方法


if (is_front_page() && is_home()) {
  // デフォルトホームページ
} elseif (is_front_page()) {
  // 固定ペーシを使ったホームページ
} elseif (is_home()) {
  // ブログページ
} else {
  // それ以外
}

補足

サイトロゴのimgbase64でエンコードされていた。


<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAoAQAAAACTZ4ixAAAAAnRSTlMAAHaTzTgAAAASSURBVDjLY2AYBaNgFIwCCAAABBAAAYU/qnIAAAAASUVORK5CYII=" alt="すなこと" data-src="https://sunakoto.com/wp-content/themes/GicSick/img/header-blogname-trans.png" decoding="async" class="lazyload" width="200" height="40">

原因は、プラグインのEWWW Image Optimizerの機能の一つで、遅延読み込み設定がONになっていることだった。

OFFにすると、

EWWW Image Optimizerの遅延読み込み設定をオフにする

エンコードされないソースに戻った。


<h1 class="blogname">
  <a href="https://sunakoto2.com">
    <img src="https://sunakoto.com/wp-content/themes/GicSick/img/header-blogname-trans.png" alt="すなこと">
  </a>
</h1>

EWWW Image Optimizerを調べると以下の解説を見かけた。

EWWW Image Optimizerの機能では、base64エンコードされた透過画像をかませた形でクラスlazyloadをトリガーに遅延読み込み処理を実施していたようです。

https://blog.webico.work/preview-lost-image

EWWW Image Optimizerは、EXIF情報の削除のみ有効化し、他の機能は無効化した。

Related Tags