Замените аватары Buddypress простыми локальными аватарами
Я всегда пытался найти решение, и я думаю, что либо его нет, либо мое отсутствие знаний действительно удерживает меня здесь. Короче, у меня на сайте Wordpress установлено buddypress, и я использую Simple Local Avatars для пользователи могут управлять своими аватарами. Так как я использую это и имею некоторые настройки, вставленные в простой плагин локальных аватаров, я хотел бы посмотреть, смогу ли я заменить все аватары buddypress локальными аватарами.
Короче говоря, мои исследования привели меня к этому: Buddypress использует функцию bb_get_avatar для отображения и управления своим аватаром, однако плагин локальных аватаров использует функцию get_avatar, так что после того, как выдернуть мои волосы, выпить кофе и вернуться, чтобы просто начать оттягивать ничего, я Придумал приведенный ниже фрагмент в моем файле functions.php. Это кажется логичным, но не работает, и опять же это, вероятно, из-за моей новизны, но эй, я пытаюсь..
Вот что у меня есть в functions.php:
//try the avatar thing
function socilize_custom_avatars() {
global $bb_current_user;
global $current_user;
get_currentuserinfo();
$avatar = bb_get_avatar( $bb_current_user->ID );
unset($avatar);
$avatar = get_avatar($current_user->ID);
return $avatar;
}
Кажется (для меня), что это должно работать, но это не так, кто-нибудь, кто может подключиться и сказать мне, как удалить аватары buddypress и заставить его тянуть местных аватаров?
Спасибо за прочтение:)
3 ответа
Поскольку вы используете BuddyPress, вам нужно смотреть на bp_core_fetch_avatar()
, Это везде, когда установлен БП. И на форумах тоже.
Вы должны использовать его фильтры, как bp_core_fetch_avatar
а также bp_core_fetch_avatar_url
,
Есть окончательное решение:
1 >> в настройках WordPress установите аватар на "пусто" или "нет" (извините, у меня французская версия WordPress)
2 >> поместите этот код в ваш function.php
// Kill gravatar
function bp_remove_gravatar ($image, $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir) {
$default = get_stylesheet_directory_uri() .'/images/customGravatar.png';
if( $image && strpos( $image, "gravatar.com" ) ){
return '<img src="' . $default . '" alt="avatar" class="avatar" ' . $html_width . $html_height . ' />';
} else {
return $image;
}
}
add_filter('bp_core_fetch_avatar', 'bp_remove_gravatar', 1, 9 );
function remove_gravatar ($avatar, $id_or_email, $size, $default, $alt) {
$default = get_stylesheet_directory_uri() .'/images/customGravatar.png';
return "<img alt='{$alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
}
add_filter('get_avatar', 'remove_gravatar', 1, 5);
function bp_remove_signup_gravatar ($image) {
$default = get_stylesheet_directory_uri() .'/images/customGravatar.png';
if( $image && strpos( $image, "gravatar.com" ) ){
return '<img src="' . $default . '" alt="avatar" class="avatar" width="auto" height="auto" />';
} else {
return $image;
}
}
add_filter('bp_get_signup_avatar', 'bp_remove_signup_gravatar', 1, 1 );
3 >> измените всю строку '/images/customGravatar.png' своим собственным изображением
4 >> Теперь, чтобы пользователи могли загружать свои собственные локальные аватары, добавьте этот плагин: Simple Local Avatars
Этот плагин добавляет возможность пользователю добавлять аватар к нему WORLDRESS // BUDDY PRESS уже имеет свою собственную систему замены аватара;)
Возможное, более простое решение..
add_filter('bp_core_fetch_avatar_no_grav', '__return_true');
добавить в plugins/bp-custom.php
Первоначально ответил и лучше объяснил здесь..