WordPressの管理画面を開くたびに目に入る「更新してください」の赤い数字。本体やプラグイン、テーマにアップデートがあると親切に教えてくれる機能ですが、人によっては「ちょっと邪魔だな…」と感じることもありますよね。
特に、クライアントに納品したサイトで「お客さんが何も知らずにボタンを押して、サイトが真っ白になってしまった」という事故は、Web制作の現場で本当によくある話です。私も長いWeb制作歴のなかで、納品先からの突然の「サイトが見られない!」という連絡に何度も冷や汗をかきました。原因をたどると、悪気のない更新ボタンのワンクリックだった、というオチです。
この記事では、WordPress本体・プラグイン・テーマの更新通知をfunctions.phpのフィルターで非表示にする具体的なコードと、それを実行する前に必ず知っておくべきセキュリティ上の注意点をセットで解説します。
先に大事なことをお伝えしておきます。更新通知を消すこと自体は、実はあまりおすすめできる行為ではありません。通知は単なる「お知らせ」ではなく、サイトを安全に保つための大切なサインだからです。なぜそう言い切れるのか、それでも消したくなる場面はどんなときか、そして消す場合のコードはどう書くのが正解なのか。この記事ではその全部を、現場目線で順番に整理していきます。
なお、ネット上にはcreate_functionを使った古いコードがいまだに数多く残っていますが、これは現在のPHPでは動かずサイトを壊す原因になります。古い情報をコピペして失敗しないためにも、最新の書き方をここで押さえておきましょう。最後まで読めば、消すべきか・消さざるべきかをスッキリ判断できるはずです。
その前に|更新通知を「消す」のは原則おすすめしません
方法の解説に入る前に、どうしても先に伝えておきたいことがあります。更新通知を非表示にするということは、サイトに潜む脆弱性のサインを自分から見えなくする行為だ、ということです。
WordPressの更新の多くは、見つかったセキュリティホールをふさぐためのものです。通知を消してアップデートを後回しにすると、すでに世間に知られている穴を放置することになり、改ざんやスパム投稿、不正ログインの入口を開けっぱなしにするのと同じになってしまいます。
WordPress公式も、マイナーリリースやセキュリティ更新を初期状態で自動適用する仕組みを採用しており、その理由を「サイトを最新かつ安全に保つ最良の方法のひとつだから」と説明しています。そしてこれらの自動更新を無効化することは「強く非推奨」だと明言しています。公式がここまではっきり言うのは珍しいことです。
つまり、本来やるべきなのは「通知を消すこと」ではなく「更新そのものをきちんと回すこと」。それでもなお通知を消したい場面とは、たとえば次のような限定的なケースに絞られます。
・クライアントに納品し、お客さん側に管理画面を触ってもらうが、誤操作による更新事故だけは絶対に避けたいとき
・更新作業は制作者(あなた)が責任を持って計画的に行う運用が確立しているとき
・特定のプラグインだけ、互換性の都合で意図的にバージョンを固定したいとき
逆に、自分一人で運営する個人ブログで「なんとなく通知がうるさいから」という理由で消すのは、デメリットしかありません。通知を消すなら、その代わりに更新は必ず誰かが責任を持って行う。これが大前提です。出典は記事末尾にまとめています。
出典:WordPress Developer Resources「Upgrading WordPress」
WordPress本体の更新通知を非表示にする方法
ここからは、注意点を理解したうえでの具体的な方法です。本体の更新があると、管理バーや「ダッシュボード > 更新」に通知が表示されます。これを非表示にするには、使用中テーマのfunctions.phpに次のコードを追加します。
add_filter( 'pre_site_transient_update_core', '__return_null' );
このコードは、WordPressが本体の更新有無を保存しているupdate_coreというデータ(トランジェント)の取得を、空っぽの状態で上書きします。結果として「更新あり」の情報が渡らなくなり、通知が表示されなくなる、という仕組みです。
ここで大切なのが、コードの書き方が昔と今で変わっている点です。古い解説記事では、次のようにcreate_function()を使った書き方をよく見かけます。
// 古い書き方(PHP 8.0以降は動きません)
add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );
このcreate_function()はPHP 7.2で非推奨となり、PHP 8.0で完全に削除されました。そのため、現在主流のPHP 8系のサーバーでこの古いコードを貼ると、通知が消えるどころか致命的なエラーでサイト全体が真っ白になります。ネット上に残る古いコードをコピペする際は、ここが一番の落とし穴です。今は前述の__return_nullを使う書き方が、短くて安全な定番です。
出典:WordPress Developer Resources「__return_null()」
プラグイン・テーマの更新通知を非表示にする方法
プラグインの更新があると、サイドメニューの「プラグイン」に数字バッジが表示されます。これを消すには、本体とほぼ同じ要領で、対象のトランジェントを切り替えるだけです。
add_filter( 'pre_site_transient_update_plugins', '__return_null' );
テーマの更新通知も同じパターンで、update_themesを対象にします。
add_filter( 'pre_site_transient_update_themes', '__return_null' );
本体・プラグイン・テーマをまとめて消したい場合は、3行ともにfunctions.phpへ追記すればOKです。
ただしプラグインの更新はセキュリティ修正そのものであることが多く、一括で全部消すのはとくにリスクが高い行為です。世界中で使われている人気プラグインほど攻撃者に狙われやすく、放置された脆弱性は乗っ取りの直接の入口になります。一括非表示にするなら、誰がいつ更新を管理するのかを必ず決めておきましょう。
関連記事:WordPressおすすめプラグイン|今も現役の定番だけを用途別に厳選紹介
特定のプラグインだけ更新通知を消す方法
「全部は消したくないけれど、このプラグインだけは互換性の都合でバージョンを固定したい」というケースもあります。その場合は、すべてを消すのではなく、対象のプラグインだけを更新リストから取り除く書き方が現実的です。
次のコードでは、create_function()を使わず、現在のPHPで問題なく動く通常の関数として書いています。
function my_disable_plugin_update( $value ) {
if ( isset( $value->response['plugin-dir/plugin-file.php'] ) ) {
unset( $value->response['plugin-dir/plugin-file.php'] );
}
return $value;
}
add_filter( 'site_transient_update_plugins', 'my_disable_plugin_update' );
'plugin-dir/plugin-file.php'の部分は、対象プラグインの「ディレクトリ名/本体ファイル名」に置き換えてください。たとえばakismet/akismet.phpのような形式です。この方法なら、固定したいプラグインの通知だけを隠し、それ以外のプラグインの更新通知はこれまで通り表示されます。
全部を闇雲に消すより、こうして「この1つだけ意図的に止める」方が、運用としてはずっと安全です。ほかのプラグインのセキュリティ更新は見逃さずに済みますからね。
関連記事:WordPressで特定ページにBasic認証をかける方法。functions.phpの使い方
まとめ|通知は「消す」より「正しく回す」が正解
WordPressの更新通知を非表示にする方法を、本体・プラグイン・テーマ、そして特定プラグインのみのパターンまで紹介してきました。コードはどれもfunctions.phpに数行追記するだけと手軽ですが、手軽さの裏にあるリスクこそ、この記事で一番お伝えしたかったことです。
あらためて整理すると、ポイントは次の通りです。通知を消すコードは__return_nullを使うのが今の正解で、古いcreate_function()はPHP 8.0で削除済みのため使ってはいけません。そして更新通知を消すという行為は、脆弱性のサインを自分から見えなくすることであり、WordPress公式も自動更新の無効化を強く非推奨としている、という事実は忘れないでください。
だからこそ、通知を消すのは「クライアント納品先での誤操作を防ぎたい」「特定プラグインを意図的に固定したい」といった、運用ルールがはっきりしている限定ケースだけにとどめるのが賢明です。そのうえで、更新作業そのものは制作者や運営者が責任を持って計画的に行う。これが現代のWordPress運用のあるべき姿だと、私は長年の現場経験から強く感じています。
個人ブログで「ただ通知がうるさいから」という理由なら、消すのではなく、本体・プラグインのマイナー更新を自動更新に任せてしまうのが一番ラクで安全です。通知とうまく付き合いながら、サイトを安全に保っていきましょう!