PHPを8.1.22に変更したところ、判定がシビアになっています。
2024年01月07日
フロントページ判定
WordPressのテーマで「home」の場合に適用したいスタイルがあります。その際は
body.home .style_class {}
と指定してやれば良いですね。
ところが一部のプラグイン等でindex.phpを表示に使用するものがあります。すると例えばプラグインによる検索結果にも<body class=”home …..”>が適用されてしまい、意図した表示にならないことがあります。
それを逃げるために
<?php
$request_uri = $_SERVER['REQUEST_URI'];
if($request_uri == "/") {
$front_page = "front_page";
}
?>
<body <?php body_class($front_page); ?>>
とheader.phpに記述していました。ところがphpを8.1.22にアップしたところエラーが発生しました。
要点は2つ。
- $front_page = “front_page”;のクォーテーション。
- $front_pageの初期値。
です。
7.4.3では「適当に処理」していてくれたのですが、8.1.22はシビアになりました。
<?php
$request_uri = $_SERVER['REQUEST_URI'];
$front_page = '';
if($request_uri == "/") {
$front_page = 'front_page';
}
?>
<body <?php body_class($front_page); ?>>
初期値を入れ、ダブルクォーテーションをシングルに変更しました。
CSSは以下のように指定します。
body.front_page .style_class {}
存在しないカテゴリー指定
<?php
$event_cat = get_category_by_slug('event');
$event_cat_id = $event_cat->cat_ID;
親テーマを共通で使い回しているので「event」というカテゴリーを未設定のサイトもあります。これまではeventカテゴリーが存在しなくても問題無かったのですが「そんなカテゴリーは無いよ?」というエラーが出るようになってしまいました。
<?php
$event_cat = get_category_by_slug('event');
if($event_cat) {
$event_cat_id = $event_cat->CAT_ID;
......
}
甘い判定に甘えていてはダメですね。
PHP7系は「非推奨」となりましたので、8系への変更は必須です。やはりPHPのアップデートはオオゴトですね。
この記事は2024/01/07に公開され2024/01/21に更新、83 views読まれました。