WordPressのbody_class()で意図せずclass=”home”が付加される場合の対処。
2023年03月21日
ページによって適切なclassを<body>に付与してくれる<?php body_class(); ?>という関数があります。
使い方は
<body <?php body_class(); ?>>
と書くだけです。詳細は「テンプレートタグ/body class」をご覧ください。
これが、意図しないページにhomeというクラスを付けてくることがあります。例えば検索結果を表示するテンプレートにindex.phpやhome.phpを指定している場合です。この時、.homeを前提としたCSSを組んでいると表示が崩れてしまいます。
その回避策です。
is_front_page()でもis_home()でも回避できないため、以下のように書きます。
<?php
$request_uri = $_SERVER['REQUEST_URI'];
if($request_uri == "/") {
$front_page = "front_page";
}
?>
<body <?php body_class($front_page); ?>>
<body class=”home”>を消すのではなくfront_pageを付け加えるわけです。
これで本当のフロントページ/ホームにはclass=”front_page”が付加され
<body class=”home front_page”>
となります。
あとはstyle.cssで.homeを指定していた箇所を.front_pageに差し替えます。
この記事は2023/03/21に公開され2023/08/26に更新、168 views読まれました。