Añadir campos adicionales al formulario de registro que tiene por defecto WordPress es muy sencillo. A continuación te explico, realmente son 2-3 pasos:

1. Lo primero de todo hay que activar el registro de usuarios (por defecto viene desactivado) desde el panel de control de tu WP en:
Ajustes > Generales > Miembros > cualquiera puede registrarse

Una vez esto ya podemos acceder al formulario de registro desde la url:
/wp-login.php?action=register

Podemos observar que por defecto WordPress trae solo 2 campos básicos: «Nombre de Usuario» y «Correo electrónico».

2. Este paso final es donde vamos añadir por php los campos que queramos a ese formulario de registro anterior. Editamos nuestro archivo functions.php y añadimos el código:

En este ejemplo voy a añadir 2 campos adicionales que no vienen por defecto en la cuenta de usuario («sexo» y «Edad»):

add_action('register_form', 'agregar_campos_registro' );
add_filter('registration_errors', 'validar_campos_registro', 10, 3);
add_action('user_register', 'guardar_campos_registro');

function agregar_campos_registro() {
	$user_edad = ( isset( $_POST['user_edad'] ) ) ? $_POST['user_edad']: '';
?>
	<p>
	    <label for="user_edad">Edad<br />
	    <input type="text" name="user_edad" id="user_edad" class="input" value="<?php echo esc_attr(stripslashes($user_edad)); ?>" size="20" /></label>
	</p>
	<p style="margin-bottom:20px">
		<label>Sexo</label><br />
		<input type="radio" name="user_sexo" class="radio" value="h" checked /> Hombre
		<input type="radio" name="user_sexo" class="radio" value="m" style="margin-left:10px" /> Mujer
	</p>
<?php
}

function validar_campos_registro ($errors, $sanitized_user_login, $user_email) {
    if ( empty( $_POST['user_edad'] ) )
        $errors->add( 'user_edad_error', __('<strong>ERROR</strong>: Por favor, introduce tu edad.') );
    return $errors;
}

function guardar_campos_registro ($user_id) {
	if ( isset($_POST['user_edad']) && isset($_POST['user_sexo']) ){
		update_user_meta($user_id, 'user_edad', $_POST['user_edad']);
		update_user_meta($user_id, 'user_sexo', $_POST['user_sexo']);
	}
}

A continuación puedes ver un pantallazo de como quedaría:

campos adicionales en el registro de wordpress

Esto ya te guarda en la bd del usuario esa información nueva (edad, sexo). Podeis personalizarlo a vuestro gusto.

3. (Opcional) Para que en el panel de control, al editar un usuario aparezcan estos 2 campos nuevos hay que añadirlos como ya dije en un anterior post, pero lo repito para este ejemplo en concreto:

<?php
add_action( 'show_user_profile', 'agregar_campos_perfil' );
add_action( 'edit_user_profile', 'agregar_campos_perfil' );
add_action( 'personal_options_update', 'guardar_campos_registro' );
add_action( 'edit_user_profile_update', 'guardar_campos_registro' );
 
function agregar_campos_perfil( $user ) {
	$user_edad = esc_attr( get_the_author_meta( 'user_edad', $user->ID ) );
	$user_sexo = esc_attr( get_the_author_meta( 'user_sexo', $user->ID ) );
?>
	<h3>Campos adicionales</h3>
	 
	<table class="form-table">
		<tr>
			<th><label for="direccion">Edad</label></th>
			<td>
				<input type="text" name="user_edad" id="user_edad" class="input" value="<?php echo $user_edad; ?>" size="20" />
				<span class="description">Inserta tu edad</span>
			</td>
		</tr>
		<tr>
			<th><label for="ciudad">Sexo</label></th>
			<td>
				<input type="radio" name="user_sexo" class="radio" value="h" <?php if($user_sexo=='h') { echo ' checked'; } ?> /> Hombre
				<input type="radio" name="user_sexo" class="radio" value="m" style="margin-left:10px" <?php if($user_sexo=='m') { echo ' checked'; } ?> /> Mujer<br />
			</td>
		</tr>
	</table>
<?php } ?>

Y con esto en el panel de control aparecería asi:

campos adicionales perfil usuario en el panel de control

pd: no explico mucho el anterior código php por que creo que se entiende y no quiero hacer el post demasiado largo.

Agradezco tu comentario 🤘