How do you make the email field on the profile page read only for subscribers?

I would like to make the email field on the profile page for subscribers read only. They can see their email but not change it. I want only admins to to be able to change users email address.

Related posts

Leave a Reply

2 comments

  1. Although the readonly attribute can be removed using Chrome/Firebug inspector (making the field editable again), much probably the average user will not know this.

    <?php
    function wpse50730_script_enqueuer(){
        if(current_user_can('subscriber')) {
            echo '<script type="text/javascript">
            jQuery(document).ready( function($) {
                $(".form-table #email").attr("readonly", true);
            });     
            </script>';
        }
    }
    add_action('admin_head-profile.php', 'wpse50730_script_enqueuer');
    
  2. @brasofilo’s answer is good, but better use .prop and the .user-email-wrap class to prevent impact on #email fields on other pages.

    <script type="text/javascript">
        jQuery(document).ready( function($) {
            $(".user-email-wrap #email").prop('disabled', true);
        });     
    </script>