Skip to content

Instantly share code, notes, and snippets.

@ipokkel
Created November 21, 2019 11:51
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 ipokkel/fbef9c7616aacbd18de856d587634116 to your computer and use it in GitHub Desktop.
Save ipokkel/fbef9c7616aacbd18de856d587634116 to your computer and use it in GitHub Desktop.
User avatar and logo using PMPro Register Helper
<?php // Do NOT copy this line
/*
* Add WP User Avatar from Register Helper field during checkout.
* Add image as "logo" from Register Helper field during checkout.
*/
add_action( 'added_user_meta', 'my_updated_user_meta', 10, 4 );
add_action( 'updated_user_meta', 'my_updated_user_meta', 10, 4 );
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_filter( 'get_avatar', 'my_user_avatar_filter', 20, 5 );
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_action( 'init', 'my_pmprorh_init_avatar_logo' );
function my_pmprorh_init_avatar_logo() {
//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
'addmember' => true,
)
);
$fields[] = new PMProRH_Field(
'logo', // input field name, used as meta key
'file', // field type
array(
'label' => 'Logo',
'accept' => 'image/*', // accept all image types for file upload (http://www.w3schools.com/TAGs/att_input_accept.asp)
'profile' => true,
'addmember' => true,
)
);
//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.
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment