我正在尝试在我的wordpress网站的多个用户上更改头像。
我已经读到,最好的方法是使用WP User Avatar插件和下面的代码,但不幸的是,它不起作用。我能问一下社区的建议吗?
function set_avatar_url($avatar_url, $user_id) {
global $wpdb;
$file = upload_product_image($avatar_url);
$wp_filetype = wp_check_filetype($file['file']);
$attachment = array(
'guid' => $file['url'],
'post_mime_type' => $wp_filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($file['file'])),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment($attachment, $file['file']);
$attach_data = wp_generate_attachment_metadata($attach_id, $file['file']);
wp_update_attachment_metadata($attach_id, $attach_data);
update_user_meta($user_id, $wpdb->get_blog_prefix() . 'user_avatar', $attach_id);
}
set_avatar_url('https:/mysite.com/Logo-test2.png', 5);
答案 0 :(得分:1)
我不是100%肯定会遵循您的要求,但是我会尽力为您提供最好的答案,因为在此问题的语境有限的情况下。有几种不同的方法:
如果您希望实现使用存储在用户元字段field_with_custom_avatar
中的图像的给定URL覆盖用户图像的功能,请将下面的代码段添加到functions.php
add_filter( 'get_avatar', 'slug_get_avatar', 10, 5 );
function slug_get_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
//If is email, try and find user ID
if( ! is_numeric( $id_or_email ) && is_email( $id_or_email ) ){
$user = get_user_by( 'email', $id_or_email );
if( $user ){
$id_or_email = $user->ID;
}
}
//if not user ID, return
if( ! is_numeric( $id_or_email ) ){
return $avatar;
}
//Find URL of saved avatar in user meta
$saved = get_user_meta( $id_or_email, 'field_with_custom_avatar', true );
//check if it is a URL
if( filter_var( $saved, FILTER_VALIDATE_URL ) ) {
//return saved image
return sprintf( '<img src="%" alt="%" />', esc_url( $saved ), esc_attr( $alt ) );
}
//return normal
return $avatar;
}
如果您希望实现具有新的“默认”图像的功能,则可以将图像上传到媒体库(用于设置$myavatar
的值),然后将以下代码段添加到您的functions.php
文件。
add_filter( 'avatar_defaults', 'wpb_new_gravatar' );
function wpb_new_gravatar ($avatar_defaults) {
$myavatar = 'http://example.com/wp-content/uploads/2017/01/wpb-default-gravatar.png';
$avatar_defaults[$myavatar] = "Default Gravatar";
return $avatar_defaults;
}
如果您正在寻找一个插件来允许用户上传自己的图像,则可以尝试https://wordpress.org/plugins/wp-user-avatar/
注意:我与该插件无关,它的评级很高,安装量超过300,000,并且经过了v5.5.2(最新版本)的测试