WordPressを使っていて、テーマをカスタマイズなどした際、クライアントに勝手にテーマをアップデートされると困るというケースがよくあります。
そんな時に知っておくと安心なTIPSです。
各種アップデートの通知をオフにする
// 本体バージョンの更新非通知
add_filter('pre_site_transient_update_core', '__return_null');
// プラグインの更新非通知
add_filter('pre_site_transient_update_plugins', '__return_null');
// テーマファイルの更新非通知
add_filter( 'pre_site_transient_update_themes', '__return_null');
たったこれだけ。
ググってみると多くのサイトで上記のコードと一緒にremove_action
系のコードも併記されていますが、検証したところ現在では無意味っぽかったです。(詳しくは後述)
'__return_null'
は'__return_zero'
でも可。ただし、'__return_false'
では無意味だった。
管理者権限以外のユーザーがバージョンアップデートの更新通知を見れても意味がないので(権限不足でどうせ更新できない)、通知をオフにしたい場合などにも有効ですね。
そんな場合はユーザー権限の情報で条件分岐して使うといいでしょう。
管理者権限以外のユーザーには更新非通知
if ( current_user_can( 'administrator' ) ) {
// 本体バージョンの更新非通知
add_filter('pre_site_transient_update_core', '__return_null');
// プラグインの更新非通知
add_filter('pre_site_transient_update_plugins', '__return_null');
// テーマファイルの更新非通知
add_filter( 'pre_site_transient_update_themes', '__return_null');
}
今では絶対にコピペしてはいけないコードについて
以下のように、create_function()
でnullを返すコードがかなり出回っています。
add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
どんだけ昔のコードコピペしてんだよって話なんですが、
create_function()
はPHP 7.2.0 以降で非推奨となっています。
よく見かけるけど今では不要なコードについて
テーマのアップデートを非通知にしたい時のコードで、以下の2行がよく一緒に紹介されていますが、これはバージョン3より古い時に使っていたコードらしいです。
remove_action('wp_version_check','wp_version_check');
remove_action('admin_init','_maybe_update_core');
また、プラグイン・テーマの更新を非通知にする方法として、以下の記述もよく一緒に紹介されていますが、検証してみるとどうやら不要なようです。
remove_action('load-update-core.php', 'wp_update_plugins');
remove_action('load-update-core.php', 'wp_update_themes');
これも昔のコードの残骸が出回っているでしょうか。