WP0円マッチングサイト作成プロジェクト第1弾の作り方⑧
【アバター画像】
ユーザープロフィールのアバター画像は特殊なので入力が大変面倒である。
そこでWP-Membersで設定したフィールド(画像)を使ってアバター画像を表示するようにコードを追加する。
【「user_avatar_img」フィールドでアバター画像を表示】
WP-Membersで設定した「user_avatar_img」フィールドでアバター画像を表示する。
アバター画像を表示するコードをfunctions.phpにコピペする
//functions.php
add_filter( 'get_avatar', function( $avatar, $id_or_email, $size, $default, $alt, $args ) {
$meta_key = "user_avatar_img";// meta key of your custom image field.
$user = false;
if ( is_numeric( $id_or_email ) ) {
$user = get_user_by( 'id' , (int)$id_or_email );
} elseif ( is_object( $id_or_email ) ) {
if ( ! empty( $id_or_email->user_id ) ) {
$id = (int)$id_or_email->user_id;
$user = get_user_by( 'id' , $id );
}
} else {
$user = get_user_by( 'email', $id_or_email );
}
if ( $user && is_object( $user ) ) {
$post_id = get_user_meta( $user->ID, $meta_key, true );
if ( $post_id ) {
$attachment_url = wp_get_attachment_url( $post_id );
$avatar = sprintf(
"<img alt='%s' src='%s' class='%s' height='%d' width='%d' %s/>",
esc_attr( $alt ),
esc_url( $attachment_url ),
esc_attr( "avatar avatar-" . $size . " photo" ),
(int) $args['height'],
(int) $args['width'],
$args['extra_attr']
);
}
}
return $avatar;
}, 10, 6 );
【アバター画像をchat画面に表示する】
WP-Membersで設定した「user_avatar_img」フィールドでアバター画像を表示する。
アバター画像をchat画面に表示するコードをfunctions.phpにコピペする
//functions.php
add_filter('better_messages_rest_user_item', 'custom_user_meta', 50, 3 );
function custom_user_meta( $item, $user_id, $include_personal ){
$upload_itemID = get_user_meta( $user_id, 'user_avatar_img', true );
if ( $upload_itemID ) {
$user_avatar_url = wp_get_attachment_url( $upload_itemID );
$item['avatar'] = $user_avatar_url;
}
return $item;
}
【chat画面にnicknameを表示する】
初期設定でchat画面にはdisplay_nameされるのでnicknameを表示するように変更する。
nicknameをchat画面に表示するコードをfunctions.phpにコピペする
//functions.php
//Change user display name to nickname in the chat room.
function my_bp_better_messages_display_name( $display_name, $user_id ) {
$nickname = get_user_meta( $user_id, 'nickname', true );
return $nickname;
}
add_filter( 'bp_better_messages_display_name', 'my_bp_better_messages_display_name', 10, 2 );