preloader

WordPress User Profiles: Building a Complete Profile System

A basic WordPress user profile has limited fields and no front-end display. Building a complete profile system requires combining several tools: WP User Avatar for profile photos, custom fields for profile data, and a front-end profile display. Here is the architecture.

Components of a Complete Profile System

  • Avatar/photo — WP User Avatar or Simple Local Avatars for locally hosted profile photos.
  • Extended profile fields — Custom fields for bio, social links, expertise, location, etc.
  • Front-end profile page — A page where the user’s profile is publicly visible to other users or visitors.
  • Profile editing UI — A front-end form where users update their own profile without accessing wp-admin.
  • Access control — Who can see which profile fields based on roles or membership.

Plugin-Based Approach: ProfilePress or Ultimate Member

For sites that need a complete user profile system, ProfilePress and Ultimate Member handle all components in one plugin. They include avatar upload, custom profile fields, front-end profile pages, edit forms, and role-based field visibility — without custom code. This is the fastest path to a working system.

WP User Avatar is useful as a standalone avatar solution when you use a different plugin for the rest of the profile system, or when the site only needs avatar management without a full profile system.

Adding Custom Profile Fields with Code

For simpler customisation, add custom fields to the WordPress user profile screen and display them in theme templates:

// Add custom field: expertise
function wpwizzy_add_expertise_field( $user ) {
    $expertise = get_user_meta( $user->ID, 'expertise', true );
    ?>
    <h3>Professional Details</h3>
    <table class="form-table">
        <tr>
            <th><label for="expertise">Area of Expertise</label></th>
            <td>
                <input type="text" id="expertise" name="expertise"
                       value="<?php echo esc_attr( $expertise ); ?>" class="regular-text">
            </td>
        </tr>
    </table>
    <?php
}
add_action( 'show_user_profile', 'wpwizzy_add_expertise_field' );
add_action( 'edit_user_profile', 'wpwizzy_add_expertise_field' );

function wpwizzy_save_expertise_field( $user_id ) {
    if ( ! current_user_can( 'edit_user', $user_id ) ) return;
    if ( isset( $_POST['expertise'] ) ) {
        update_user_meta( $user_id, 'expertise', sanitize_text_field( $_POST['expertise'] ) );
    }
}
add_action( 'personal_options_update', 'wpwizzy_save_expertise_field' );
add_action( 'edit_user_profile_update', 'wpwizzy_save_expertise_field' );

Displaying Profile Data in Theme Templates

On author archive pages (author.php in your theme), display extended profile data:

<?php
$author   = get_queried_object();
$avatar   = get_avatar( $author->ID, 120 );
$bio      = get_the_author_meta( 'description', $author->ID );
$expertise = get_user_meta( $author->ID, 'expertise', true );
?>
<div class="author-profile">
    <?php echo $avatar; ?>
    <h1><?php echo esc_html( $author->display_name ); ?></h1>
    <?php if ( $expertise ) : ?>
        <p class="expertise"><?php echo esc_html( $expertise ); ?></p>
    <?php endif; ?>
    <div class="bio"><?php echo wp_kses_post( $bio ); ?></div>
</div>

Front-End Profile Editing

For users to edit their own profiles without wp-admin access, use a shortcode-based form. ProfilePress, Ultimate Member, and WPForms with User Registration addon all provide front-end profile forms. For custom implementations, WP User Frontend is another option. Choose based on how much of the profile system the plugin needs to handle.

For complete custom user profile systems including front-end editing, role-based field visibility, and profile-to-directory integration, a WordPress developer can build a fully tailored user profile architecture.

Keep Reading

Previous Post Adding Custom Author Social Links to WordPress User Profiles Next Post How to Display User Avatars in WordPress Theme Templates

Need Help With Your WordPress Site?

If you need help with WordPress fixes, plugin issues, theme customization, or development work, feel free to get in touch.

Get a Free Estimate