I workaround is available by using the
user_new_form_tag which resides inside the
user-new.php page's form starting tag. It's in the end so if you output HTML after that you just need to begin the output with
> and remove the last outputted
> of your own code. As in:
echo "><div>"; // Note the first '>' here. We wrap our own output to a 'div' element.
// Your wanted output code should be here here.
echo "</div"; // Note the missing '>' here.
add_action( "user_new_form_tag", "add_new_field_to_useradd" );
user_new_form_tag is situated in
user-new.php around line 303 (in WP3.5.1 at least):
<p><?php _e('Create a brand new user and add it to this site.'); ?></p>
<form action="" method="post" name="createuser" id="createuser" class="validate"<?php do_action('user_new_form_tag');?>>
<input name="action" type="hidden" value="createuser" />
Of course the downside here is that all your custom field must appear first in the form, before the fields declared in WP core.