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');

これも昔のコードの残骸が出回っているでしょうか。

目次
- Thank you for reading. -

コメント

コメントする