Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save LMNTL/d351cd699a8d49f4a327b62b00264ac7 to your computer and use it in GitHub Desktop.
Save LMNTL/d351cd699a8d49f4a327b62b00264ac7 to your computer and use it in GitHub Desktop.
Upload avatar image from the checkout using the PMPro Register Helper Add On. No other plugins required.
/*
* Add WP User Avatar from Register Helper field during checkout.
*/
function my_updated_user_meta($meta_id, $user_id, $meta_key, $meta_value) {
// Change user_avatar to your Register Helper file upload name.
if( 'user_avatar' == $meta_key) {
$filename = $meta_value['fullpath'];
$filetype = wp_check_filetype( basename( $filename ), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace( '/\.[^.]+$/', '', wp_upload_dir().$filename ),
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filename);
// Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
update_user_meta($user_id, 'wp_user_avatar', $attach_id);
}
}
add_action('added_user_meta', 'my_updated_user_meta', 10, 4);
add_action('updated_user_meta', 'my_updated_user_meta', 10, 4);
function my_user_avatar_filter( $avatar, $id_or_email, $size, $default, $alt ) {
$my_user = get_userdata( $id_or_email );
if( !empty( $my_user ) ){
$avatar_id = get_user_meta( $my_user->ID, 'wp_user_avatar', true );
if( !empty( $avatar_id ) ) {
$avatar = wp_get_attachment_url( $avatar_id, $size );
$avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
}
return $avatar;
}
add_filter( 'get_avatar', 'my_user_avatar_filter', 20, 5 );
function my_pmprorh_init_2()
{
//don't break if Register Helper is not loaded
if(!function_exists("pmprorh_add_registration_field"))
{
return false;
}
//define the fields
$fields = array();
$fields[] = new PMProRH_Field(
"user_avatar", // input name, will also be used as meta key
"file", // type of field
array(
"label"=>"Avatar",
"hint"=>"Recommended size is 100px X 100px",
"profile"=>true, // show in user profile
));
//add the fields into a new checkout_boxes are of the checkout page
foreach($fields as $field)
pmprorh_add_registration_field(
"checkout_boxes", // location on checkout page
$field // PMProRH_Field object
);
//that's it. see the PMPro Register Helper readme for more information and examples.
}
add_action("init", "my_pmprorh_init_2");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment