WordPress 6.1 からサイトヘルスステータスに「永続オブジェクトキャッシュ (Persistent Object Cache)」の項目が増えたらしいのだけれど、同じ設定なのに警告が出たり出なかったりするんだよね。
環境によっては何もしなくても「永続オブジェクトキャッシュは必須ではありません」でスルーされるとか、逆にキャッシュ系プラグインを使っていても「永続オブジェクトキャッシュを使用してください」と警告が出るとか、ググると何のことだかわからないままmemcachedやredisに手を出してる人もいたりして、混乱の種にしかなってない気がする。
「必須」になる条件は、wp-admin/includes/class-wp-site-health.php
の public function should_suggest_persistent_object_cache()
を見てください。何というか、永遠にわかり合えない感じのコードです。(この部分に限らんけど。)
「使用している」条件は、wp-includes/load.php
で wp_using_ext_object_cache( true );
を実行している箇所(複数ある)を見てください。何というか(以下略
あと、「永続オブジェクトキャッシュを使用してください」警告のついでに、例えばPHPのAPCuとかが使える環境だと、それを教えてくれるんだけど、具体的にどうすればいいかはまったくもって謎。APCuを使用してかつ上の「使用している」条件を満たすプラグイン(をみつける方法)があればいいですけどね。
特定のプラグインを想定しているなら、それを明記すりゃいいのにね。
そんなわけで、どこをとってもアレなので、実際にサイトを見るときにレスポンスが遅いとかでなければ無視していいと思います。
警告が出るのが精神衛生上良くないということであれば、今使ってるテーマの子テーマを作って、functions.php
に、
<?php
add_filter( 'site_status_should_suggest_persistent_object_cache', '__return_false' );
とでも書いておけばいい(「必須」でなくなる)のですが、これのためにテーマ作るというのもなんだかね。(直接手を入れた方が早いんだけど、アップデートで戻されるだろうし、何かいい方法はないものか。)
追記
wp-content/mu-plugins
というディレクトリに(なければ作って)末尾 .php
の適当なファイルを作って上記の内容を書いておけば、わざわざ子テーマを作らなくても済む模様。「プラグイン/すべて」には出てこないけれど、「プラグイン/必須」のところにだけ出てくる、公式な仕組みらしい。
あと、こんな PHP に直接アクセスしても何もできないとは思うけれど、wp-content/mu-plugins
への直接アクセスを禁止しておくと、精神衛生上はさらに良いかも。