WP用户头像前端更新头像

时间:2018-08-08 21:54:15

标签: wordpress

我正在使用https://br.wordpress.org/plugins/wp-user-avatar/插件, 但是我有一个小问题,我需要在我网站上的/ my-account / edit-account /链接上更新我的用户图像。此代码显示,允许我上传或选择图片,但有关更新信息,不会保存。如何更新新图片?

<?php do_action('edit_user_avatar', $user); ?>

谢谢大家

1 个答案:

答案 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;

我为管理员使用了不同的句柄,因为该角色可以访问媒体库。