WordPress: Отключение gravatar

Открыв главную страницу своего блога, я заметил, что какой-то элемент страницы не может загрузиться:
WordPress: Отключение gravatar

Оказалось, что это грузится дефолтовая аватарка, которая показывается в админской панели:
WordPress: Отключение gravatar

Причем довольно настойчиво:
WordPress: Отключение gravatar

Чтобы отключить gravatar с внешнего ресурса и подгружать локальную аватарку, я загрузил аватарку gravatar_default.png на свой хостинг в папку /wp-content/uploads/gravatar и добавил несколько строк в файл /wp-includes/functions.php


/**
 *custom avatar image url 
 **/
function my_get_avatar($avatar, $id_or_email, $size, $default, $alt){
    $imgpath = home_url()."/wp-content/uploads/gravatar/gravatar_default.png";
    $avatar = "<img src='".$imgpath."' alt='".$alt."' height='".$size."' width='".$size."' />";
    return $avatar;
}
add_filter( 'get_avatar', 'my_get_avatar', 26, 26);

Но после этого мой блог перестал грузиться и стал выдавать белый экран.

Чтобы выяснить причину подобного поведения, я включил отображение отладочной информации WordPress. Для этого в файле wp-config.php нужно было сменить

define('WP_DEBUG', false);

на

define('WP_DEBUG', true);

Теперь стали видны ошибки WordPress:

Fatal error: Call to undefined function add_filter() in…

Уже лучше.
Чтобы побороть эту ошибку, достаточно было поменять местами две строчки в файле wp-settings.php.

require( ABSPATH . WPINC . '/plugin.php' );

и

require( ABSPATH . WPINC . '/functions.php' );

Теперь фрагмент этого файла выглядит так:

// Load early WordPress files.
require( ABSPATH . WPINC . '/compat.php' );
require( ABSPATH . WPINC . '/plugin.php' );
require( ABSPATH . WPINC . '/class-wp.php' );
require( ABSPATH . WPINC . '/class-wp-error.php' );
require( ABSPATH . WPINC . '/functions.php' );
require( ABSPATH . WPINC . '/pomo/mo.php' );

Вот теперь точно все.
WordPress: Отключение gravatar

Часть информации почерпнул из блога наших китайских друзей :)