Как добавить аватар пользователя в меню при авторизации в WPCommunity? В этой статье мы рассмотрим, как модифицировать шаблон WPCommunity для WordPress, чтобы при авторизации пользователя в меню отображался его аватар. Это улучшит пользовательский интерфейс и сделает навигацию более персонализированной.

Для реализации данной функциональности потребуется внести изменения в файл functions.php дочерней темы.
- Откройте файл functions.php вашей дочерней темы.
- Добавьте следующий код:
/**
* @param int $user_id
*
* @return false|string
*/
function custom_get_attachment_url( $user_id ) {
$attachment_id = get_user_meta( $user_id, \WPShop\WPCommunity\User::USER_META_AVATAR_ATTACHMENT, true );
$attachment_blog_id = null;
if ( is_multisite() ) {
$attachment_blog_id = get_user_meta( $user_id, \WPShop\WPCommunity\User::USER_META_AVATAR_ATTACHMENT_BLOG, true );
/**
* @since 1.0
*/
$attachment_blog_id = apply_filters( 'wpcommunity/user/attachment_blog_id', $attachment_blog_id, $user_id );
}
$attachment_blog_id && switch_to_blog( $attachment_blog_id );
$url = wp_get_attachment_url( $attachment_id );
$attachment_blog_id && restore_current_blog();
return $url;
}
add_action( 'wpcommunity/theme/init', function () {
remove_filter( 'nav_menu_item_title', [
\WPShop\WPCommunity\theme_container()->get( \WPShop\WPCommunity\User::class ),
'_replace_profile_title',
] );
add_filter( 'nav_menu_item_title', function ( $title, $menu_item ) {
if ( $menu_item->type === 'post_type' &&
$menu_item->object === 'page' &&
$menu_item->object_id == \WPShop\WPCommunity\get_setting( 'page.profile' )
) {
if ( is_user_logged_in() ) {
$user_id = get_current_user_id();
if ( $avatar_url = custom_get_attachment_url( $user_id ) ) {
$title = sprintf(
'<img src="%1$s" width="24" height="24" alt="%2$s" title="%2$s" style="border-radius: 4px">',
$avatar_url,
\WPShop\WPCommunity\get_user_name( $user_id )
) . ' Мой профиль';
} else {
$title .= ' (' . \WPShop\WPCommunity\get_user_name( $user_id ) . ')';
}
} else {
$title = __( 'Sign In', 'wpcommunity' );
}
}
return $title;
}, 10, 2 );
}, 20 );
Объяснение кода:
- Функция custom_get_attachment_url получает URL аватара пользователя.
- add_action и add_filter используются для модификации отображения элементов меню.
- Код проверяет, авторизован ли пользователь, и если да, отображает его аватар.
Важные замечания:
- Убедитесь, что у вас есть права на редактирование файлов темы.
- Рекомендуется создать резервную копию файла functions.php перед внесением изменений.
- После внесения изменений проверьте работу сайта.
Следуя данной инструкции, вы сможете добавить отображение аватара пользователя в меню при авторизации, что значительно улучшит пользовательский опыт на вашем сайте.

