Потому что не так отключаете. Ваш код (а точнее код с просторов сети) делает кучу всего, и делает это не совсем правильно. Для отключения апдейтов (что, кстати, не рекомендуется), есть константы в wp-config.php.
// Отключить все обновления
define( 'AUTOMATIC_UPDATER_DISABLED', true );
Подробнее тут.
Если же необходимо запретить обновление плагинов вручную, то должно хватить вот этого:
add_action( 'site_transient_update_plugins', '__return_false' );
Не тестил, но должно работать. Дело в том, что
pre_site_transient_update_plugins
- это фильтр, который срабатывает перед тем, как transient будет сохранен.
site_transient_update_plugins
- это экшн, который вызывается сразу после того, как transient был сохранен. Поэтому они работают по разному. Фильтр - возращает измененное значение, которое сохраняется в transient. Экшн выполняет действие после сохранения.
Опять же, я не тестировал, но по логике это не предотвратит саму проверку обновлений. Не будет выводиться информация о наличии обновления и предложение обновиться. Но сами проверки будут улетать. Первое, что приходит в голову, что можно сделать для блокирования самих проверок - это хукаться на
http_request_args
, и проверять куда готовится запрос. Если это на сервер обновлений - то блокируем запрос до того, как он был отправлен.