WordPressでプラグインの「自動更新」トグルが表示されない問題と対処法【備忘録】

WordPressでプラグインの「自動更新」トグルが表示されない問題と対処法

※これは amoblog 管理人が自分のサイトで実際に遭遇し、解決にえらい時間がかかった問題の記録です。
誰にも読まれなくても、未来の自分のために残しておきます。

起きたこと:自動更新のトグルが出ない

WordPress 6.8.1 にアップデート後、
「プラグインの自動更新」トグルが表示されなくなった

  • WP本体のバージョンは6.8.1で正常
  • class-wp-plugins-list-table.phpも6.8.1仕様と一致
  • PHP 8.1.32、キャッシュ削除済、DevToolsにJSエラーなし
  • プラグインすべて無効化しても変化なし
  • 管理者アカウントでログイン済
  • ブラウザやモード変えても変化なし

……と、詰みそうになりながら調べ続けた。

原因(おそらく)

WordPressは、get_plugins()で取得した各プラグインデータに
update-supported というキーが含まれていない場合、
「自動更新トグルを表示しない」という仕様になっているらしい。

6.8.1からさらに厳密になった印象。

解決策:functions.phpで強制的に update-supported を追加

以下を Cocoon子テーマの functions.php に追記したところ、
プラグイン一覧に「自動更新」の列が復活した!

add_filter( 'all_plugins', function( $plugins ) {
    foreach ( $plugins as $plugin_file => &$plugin_data ) {
        if ( ! isset( $plugin_data['update-supported'] ) ) {
            $plugin_data['update-supported'] = true;
        }
    }
    return $plugins;
} );

表示されたら、即座に「すべての自動更新を無効化」にチェックを入れておいた。
勝手に更新されて壊される不安が消えた……。

注意点と補足

  • functions.php からこのフィルターを削除すると、また表示されなくなる。
  • この対応は一時的な回避策として扱うべき(WordPress側の仕様変更で不要になる可能性あり)。
  • プラグイン自体が自動更新非対応な場合、この方法で表示されても実際には機能しない可能性も。

まとめ

自動更新トグルが出ない時、焦る前に…

  • WP本体・PHPのバージョン確認
  • get_plugins()update-supported の有無確認
  • 上記フィルターをfunctions.phpに追加してみる

疲れたけど、学びは大きかった。
(できれば二度と遭遇したくない)

夏の日のホラー…の割には変な汗かいて、全然涼しくならなかった(笑)

タイトルとURLをコピーしました