タグアーカイブ 互換性

WordPress 7.1の管理画面テーブル変更、一部プラグインに影響の可能性

WordPress 7.1の管理画面テーブル変更、一部プラグインに影響の可能性

WordPress 7.1が2026年8月19日にリリース予定だ。このバージョンでは管理画面のアクセシビリティを大幅に改善する変更が含まれる。具体的には、投稿一覧などの管理用テーブルでHTMLのセマンティクスが修正される。この修正自体は好ましい進化だが、一部のプラグインやテーマで管理画面の動作に影響が出る可能性がある。特に、管理用のテーブル構造を前提にCSSやJavaScriptでカスタマイズしている場合は注意が必要だ。

変更の規模はそれほど大きくないが、プラグイン開発者だけでなく、サイト運営者も事前に互換性を確認しておくことで、アップデート後のトラブルを回避できる。この記事では、変更の具体的な内容と、利用者・開発者それぞれが取るべき対策を簡潔にまとめる。

管理画面テーブルのHTML構造が変わる

管理画面テーブルのHTML構造が変わる

WordPress 7.1では、投稿・固定ページ・カスタム投稿タイプなどを一覧表示する管理画面のテーブル(リストテーブル)のHTMLマークアップが一部変更される。修正の対象は、主に各行の左端にあるチェックボックス列と、投稿タイトル列だ。変更点を整理すると以下のようになる。

  • チェックボックス列が <th>(行ヘッダー)から <td>(通常のセル)に変更される
  • 投稿タイトル列が <td> から <th scope="row">(行ヘッダー)に変更される
  • 投稿タイトルの行ヘッダーには、投稿名を含む aria-label 属性が追加される
  • レスポンシブ表示時の折りたたみセルがFlexboxレイアウトに更新される

この変更によって、スクリーンリーダーを利用するユーザーは、各行で「どの投稿を操作しているのか」を正確に認識できるようになる。従来は、チェックボックス列が行ヘッダーだったために「すべて選択」といった無意味なラベルが読み上げられることが多く、特に投稿がロックされている場合などは混乱の原因になっていた。

変更前と変更後のコード比較

具体的にHTMLがどのように変更されるのか、簡単な例を示す。まずは現行バージョンの構造だ。

<tr>
<th scope="row" class="check-column">
<input type="checkbox" name="post[]" value="123">
</th>
<td class="title column-title column-primary page-title">
<a class="row-title" href="...">Hello world!</a>
</td>
<td class="author column-author">admin</td>
</tr>

これがWordPress 7.1では以下のように変わる。

<tr>
<td class="check-column">
<input type="checkbox" name="post[]" value="123">
</td>
<th scope="row" class="title column-title column-primary page-title" aria-label="Hello world!">
<a class="row-title" href="...">Hello world!</a>
</th>
<td class="author column-author">admin</td>
</tr>

チェックボックスのセルが <th> から <td> になり、代わりにタイトル列が <th scope="row"> として行の見出しの役割を担う。これにより、支援技術は「Hello world!」という投稿タイトルを行の識別子として扱えるようになる。

従来のテーブル行(Before)
チェックボックス列(th)
「すべて選択」と読み上げられる
タイトル列(td)
行の見出しではない
WordPress 7.1のテーブル行(After)
チェックボックス列(td)
ラベルなし、単なるセルに
タイトル列(th scope=”row”)
「Hello world!」が行見出しとして読み上げ
チェックボックス列が行ヘッダーから通常セルに  タイトル列が行ヘッダーに昇格

この変更は、サイトのフロントエンド(公開側)には一切影響しない。問題が発生するのはあくまで管理画面の投稿一覧テーブルをカスタマイズしている場合に限られる。

11年越しのバグ修正がもたらすアクセシビリティ向上

WordPressのコア開発チケット「#32892」は、この問題を報告してから実に11年が経過していた。修正が長期化した背景には、管理画面のテーブルマークアップが広範囲に影響するため、影響範囲の調査とテストに時間を要したことがある。

従来の構造では、スクリーンリーダーが各行を読み上げる際に、チェックボックスに関連付けられたラベル(多くの場合「すべて選択」)を読み上げてしまい、ユーザーはどの投稿の行にいるのか理解しづらかった。特に投稿が他ユーザーによってロックされている時に表示される鍵アイコンには、読み上げ用のラベルがなく、スクリーンリーダーは「すべて選択」と繰り返すだけだった。今回の変更により、行の主たる識別子である投稿タイトルが適切に読み上げられるようになり、管理画面の操作性が大きく改善される。

サイト運営者が今すぐすべきこと

サイト運営者が今すぐすべきこと

影響を受けるのは、管理画面の投稿一覧に対して何らかの情報や操作を追加しているプラグインのみだ。具体的には、CSSやJavaScriptで特定の <th><td> をターゲットにしてカスタマイズしているプラグインが対象となる。多くのサイトでは問題は起きないが、念のため以下の手順で確認することをおすすめする。

プラグインの互換性情報を確認

WordPress 7.1の公開後、利用中のプラグインが互換性テストをパスしているかどうかをまずチェックしよう。方法は簡単で、「プラグイン名 changelog」や「プラグイン名 WordPress 7.1」で検索すれば、開発元の公式ブログやチェンジログが見つかる。プラグインが「7.1対応済み」と明記されていれば、先にプラグインを最新版に更新してからWordPress本体のアップデートを行うと安全だ。

互換性が未確認の場合は、本番環境に直接アップデートを適用せず、ステージングサイト(テスト環境)で事前に動作確認を行うことが望ましい。特に管理画面に大きく依存したワークフローを構築しているサイトでは、ステージングでのテストは必須に近いと考えていい。

主要SEOプラグインへの影響はほぼなし

多くのサイトで利用されているYoast SEO、Rank Math、All in One SEO(AIO SEO)の3つのSEOプラグインには、管理画面の投稿一覧に独自のカラムを追加する機能が含まれている。こうしたプラグインこそ影響を受けやすいように見えるが、Search Engine Journalの記事によると、公開されているコードを確認した限りでは、今回変更される <th><td> の構造に依存したセレクタは見つからなかったという。したがって、これらのプラグインがWordPress 7.1で即座に動作しなくなる可能性は極めて低い。

ただし、これは公式の保証ではない。各プラグインの公式ブログやチェンジログで、7.1対応についてアナウンスがないか確認しておくに越したことはない。

万が一問題が出た場合の対処

仮にプラグインが管理画面の投稿一覧で表示崩れや機能停止を起こしたとしても、フロントエンドの表示やSEO評価に直接影響が出ることはまずない。管理画面の一部の機能が不安定になる程度と考えてよい。その場合は、問題のプラグインを一時的に無効化するか、開発元の対応を待つことになる。落ち着いてステージング環境で原因を特定し、本番への影響を最小限に抑える対応を取ろう。

プラグイン開発者とカスタム実装者に向けて

プラグイン開発者とカスタム実装者に向けて

WordPress向けのプラグインや管理画面のカスタマイズを行っている開発者は、今回の変更を事前に把握し、影響を受けるセレクタを修正する必要がある。特にノーコードツールやAIによるコーディング(いわゆるVibe Coding)で生成されたコードをそのまま利用している場合、セレクタの記述が <th><td> に依存している可能性が高いため、注意が必要だ。

修正すべきセレクタの典型例

問題となるのは、以下のようなCSSやJavaScriptのセレクタだ。

  • #the-list tr th.check-column のような、チェックボックスの <th> を前提としたCSSルール
  • document.querySelectorAll('tbody td.title') のように、タイトル列を <td> として取得するJavaScript
  • カスタムカラムを追加する際に、<td> の直後に <td> を挿入するロジック

開発者は、セレクタをタグ名ではなくクラス名(.check-column.title)に基づいたものに書き換えることで、新旧両方のマークアップに対応できる。WordPress 7.1への移行期間中は、<th><td> の両方にマッチするようなセレクタを用意するか、バージョン分岐処理を入れるのが安全だ。変更自体は単純なため、対応に膨大な工数がかかることはないだろう。

問題のあるセレクタ(Before)
tr th.check-column で背景色を変更
→ 7.1では <td> になるためスタイルが当たらなくなる
安全なセレクタ(After)
tr .check-column で背景色を変更
→ クラス名で指定するため、タグ変更に影響されない
タグ名に依存したセレクタは7.1で無効化される  クラス名ベースに修正すれば互換性が保たれる

なお、公式の発表では、テーマのフロントエンド側マークアップには一切手が加えられていないことが明言されている。管理画面のカスタマイズだけをメンテナンスすればよく、影響範囲は極めて限定的だ。

この記事のポイント

  • WordPress 7.1ではアクセシビリティ向上のため、管理画面の投稿一覧テーブルのHTML構造が変更される
  • チェックボックス列が <th> から <td> に、タイトル列が <td> から <th scope="row"> に変わる
  • フロントエンドへの影響はなく、管理画面のカスタマイズに依存する一部プラグインのみ注意が必要
  • 主要SEOプラグイン(Yoast、Rank Math、AIO SEO)は現時点で影響が確認されておらず、互換性情報の確認を推奨
  • 開発者はタグ名ではなくクラス名ベースのセレクタに修正することで新旧両対応が可能
PHP 8.5で(boolean)キャストの非推奨警告が出た時のWordPressでの対処法

PHP 8.5で(boolean)キャストの非推奨警告が出た時のWordPressでの対処法

PHP 8.5にバージョンアップしたWordPressサイトで「Non-canonical cast (boolean) is deprecated」という警告が表示されたら、(boolean)と書かれたキャストを(bool)に置き換えるだけで解消する。これはPHP 8.5で非正規のスカラー型キャストが非推奨になったためで、テーマやプラグインのコードを修正する必要がある。

PHP 8.5で非推奨になった(boolean)キャストとは

PHP 8.5で非推奨になった(boolean)キャストとは

PHPは長らく、変数の型を変換するために(boolean)(integer)といった別名のキャスト記法を受け入れてきた。しかしPHP 8.5から、これらの「正式でない(non-canonical)」表記は非推奨として扱われ、実行時にDeprecation警告が発生する。ブーリアン型へのキャストは(boolean)ではなく(bool)を、整数型は(integer)ではなく(int)を使うようPHP本体が求めるようになったのだ。

この変更は将来のバージョンで古い記法を完全に削除するための前段階で、今のうちに修正しないと、PHP 9.0以降で致命的エラーに変わる可能性がある。WordPressのテーマやプラグインのコードにこうした古いキャストが残っていると、サイトのエラーログに大量の警告が出力されたり、デバッグモードで画面に表示されたりする。

この警告がWordPressサイトで発生するケース

この警告がWordPressサイトで発生するケース

実際にWordPressでこの警告が出るのは、プラグインが原因であることがほとんどだ。たとえばカスタムフィールドを拡張する有名な「Pods」プラグインの古いバージョンでは、オートコンプリートフィールドの必須設定などを処理する部分で(boolean)キャストを使っており、PHP 8.5環境では次のような警告が発生する(実例を簡略化して示す)。

Deprecated: Non-canonical cast (boolean) is deprecated, use the (bool) cast instead in /var/www/example.com/wp-content/plugins/pods/classes/fields/pick.php on line 1113

同じ警告は、他のカスタムプラグインや古いテーマでも起こり得る。共通するのは「(boolean)」「(integer)」といったエイリアス表記がコード内に存在し、かつサーバーのPHPバージョンが8.5以上になっているという条件だ。PHP 8.4までなら問題なく動作していたサイトが、アップグレードした途端に警告まみれになる典型例といえる。

警告を解消するための具体的な対処法

警告を解消するための具体的な対処法

解決の根本は、警告が指摘するファイル内の(boolean)(bool)に書き換える一手間だけだ。ただし、プラグイン本体を直接編集するとアップデートで上書きされてしまうため、一時的な対処か、プラグイン開発者へ修正を依頼するのが本筋になる。ここではサイト管理画面からFTPやファイルマネージャーでアクセスできる場合の手順を示す。

Before(非推奨)
$ajax = (boolean) $field_data[‘autocomplete’];
After(修正後)
$ajax = (bool) $field_data[‘autocomplete’];

修正が必要なファイルと行を特定する

警告メッセージにはファイルのパスと行番号が明示されている。たとえば「/var/www/example.com/wp-content/plugins/pods/classes/fields/pick.php on line 1113」のように表示されるので、そのパスを頼りに該当ファイルを開く。サーバー上のパスはサイトのドキュメントルートからの絶対パスで示されるため、FTPクライアントやサーバー管理ツールのファイルマネージャーで同じディレクトリを探せばよい。

コードエディタで(boolean)(bool)に置換する

該当行を開いたら、まずバックアップを取った上で編集を始める。書き換えは極めて単純で、(boolean)という文字列を(bool)に置き換えるだけだ。同じファイル内に複数箇所ある可能性が高いので、エディタの検索機能を使って「(boolean)」をすべて検索し、該当行をまとめて修正すると確実に警告を一掃できる。もし(integer)(real)など他の非推奨キャストも見つかれば、それぞれ(int)(float)へ変更しておく。

修正後に動作確認とログのチェックを行う

ファイルを上書き保存したら、必ずWordPressのデバッグモードを有効にしてwp-config.phpdefine('WP_DEBUG', true);を設定し、サイトを数ページ表示して同種の警告が消えたことを確認する。デバッグモードを無効にしていてもサーバーのPHPエラーログには記録されるため、ログを監視している場合はそちらでも最終チェックを行う。修正が完了したら、デバッグモードは元に戻しておく。

プラグイン開発者向けの恒久対応と注意点

プラグイン開発者向けの恒久対応と注意点

自作プラグインの開発者や、クライアントワークで修正依頼を受ける制作者は、より根本的な対応を検討すべきだ。PHP 8.5の非推奨変更は、コード全体にわたって古いキャストが使われていないか一括でチェックする良い機会になる。

エディタの正規表現検索で「\(boolean\)」「\(integer\)」「\(real\)」「\(double\)」といったパターンを検索し、それぞれ(bool)(int)(float)(float)へ置き換えると効率的だ。なお(real)(double)はどちらも浮動小数点数型を意味するエイリアスで、いずれも(float)が正式なキャストになる。

ただし、プラグインの互換性を保つために、PHP 8.5専用のコードに一気に書き換えるのではなく、バージョン分岐と組み合わせる方法もある。if (version_compare(PHP_VERSION, '8.5', '>=')) {で新しいキャストを使い、それ以前は従来の記法を残すといった対応だ。とはいえ(bool)自体はPHP 4から存在する極めて古い正式キャストなので、事実上すべてのバージョンで動作する。互換性を気にする必要はほとんどない。

よくある質問

PHP 8.5以外のバージョンでもこの警告は出るのか

いいや、PHP 8.5で初めて「Non-canonical cast」の非推奨警告が導入された。PHP 8.4以下では(boolean)は問題なく動作し、警告も出ない。ただしPHP 9.0ではエラーに格上げされる見込みのため、早めに対処しておくと将来的に安全だ。

警告を放置してもサイトの動作に問題はないのか

現時点ではDeprecation警告であり、サイトの表示や動作が止まることはない。しかしデバッグモードがオンの場合、画面上部に警告が表示されてレイアウトが崩れたり、エラーログが膨大になってサーバーのディスクを圧迫する可能性がある。長期的にはPHPのバージョンアップでエラーになるため、放置は推奨しない。

プラグインのアップデートで自動的に修正されるのか

プラグイン開発者が修正をリリースすれば、アップデートするだけで警告は解消される。たとえばPodsプラグインでは既にこの問題が報告されており、近いバージョンで(bool)への書き換えが行われる可能性が高い。開発者にフィードバックを送ることも有効な手段だ。

警告を非表示にするだけの対処は可能か

wp-config.phpdefine('WP_DEBUG', false);にすれば管理画面やフロントエンドへの表示は止められる。ただしPHPのエラーログには記録され続けるため、根本解決にはならない。また、error_reportingを変更してDeprecationを抑制する方法もあるが、他の重要な非推奨警告も見逃すためおすすめできない。コードを修正するのが最も確実で手間も少ない。

子テーマや自作コードがない場合、どこを修正すればいいのか

該当するプラグインのファイルを直接編集しなければならないが、前述のとおりアップデートで上書きされるリスクがある。恒久的な対策としては、プラグインの開発者に修正を依頼するか、GitHubなどでプルリクエストを送るのが理想的だ。どうしてもすぐに警告を消したい場合は、修正後にプラグインの自動更新を停止しておき、次期バージョンで公式対応されるまで手動管理する手もある。

この記事のポイント

  • PHP 8.5で(boolean)キャストは非推奨になりDeprecation警告が出る
  • (boolean)(bool)に書き換えれば警告は消える
  • 警告メッセージのファイルパスと行番号を頼りに修正箇所を探す
  • 修正は単純な置換だがバックアップを取ってから行う
  • プラグイン本体の編集はアップデートで上書きされる点に注意