我正在使用https://br.wordpress.org/plugins/wp-user-avatar/插件, 但是我有一个小问题,我需要在我网站上的/ my-account / edit-account /链接上更新我的用户图像。此代码显示,允许我上传或选择图片,但有关更新信息,不会保存。如何更新新图片?
<?php do_action('edit_user_avatar', $user); ?>
谢谢大家
答案 0 :(得分:0)
我建立的解决方案是创建一个新的php文件来处理POST,仅为头像创建一个新表单。
我在标记上使用了这段代码
<form class="woocommerce-EditAccountForm" action="upload-avatar.php" method="post" enctype='multipart/form-data'>
<div class="container-fluid">
<div class="container">
<div class="row">
<?php do_action('edit_user_avatar', $user); ?>
<button type="submit" class="btn rounded-0">Update Avatar</button>
</div>
</div>
</div>
</form>
对于upload-avatar.php。
require_once("../../../wp-load.php");
if (current_user_can('administrator')) {
update_user_meta(wp_get_current_user()->id, "wp_user_avatar", $_POST['wp-user-avatar']);
} else {
$upload = wp_upload_bits( $_FILES['wpua-file']['name'], null, file_get_contents( $_FILES['wpua-file']['tmp_name'] ) );
$wp_filetype = wp_check_filetype( basename( $upload['file'] ), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $wp_upload_dir['baseurl'] . _wp_relative_upload_path( $upload['file'] ),
'post_mime_type' => $wp_filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename( $upload['file'] )),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $upload['file']);
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $upload['file'] );
wp_update_attachment_metadata( $attach_id, $attach_data );
update_user_meta(wp_get_current_user()->id, "wp_user_avatar", $attach_id);
}
wp_redirect('/my-account/edit-account/');
exit;
我为管理员使用了不同的句柄,因为该角色可以访问媒体库。