Skip to content

Instantly share code, notes, and snippets.

@anastis
Created October 23, 2017 21:20
Show Gist options
  • Save anastis/ca224eecc6b24ee593f80c52e3afd9b1 to your computer and use it in GitHub Desktop.
Save anastis/ca224eecc6b24ee593f80c52e3afd9b1 to your computer and use it in GitHub Desktop.
<?php
/*
Plugin Name: Custom Registration Fields
Plugin URI:
Description:
Version: 0.1
Author: CSSIgniter
Author URI:
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
/**
* Front end registration
*/
add_action( 'register_form', 'crf_registration_form' );
function crf_registration_form() {
$year = ! empty( $_POST['year_of_birth'] ) ? intval( $_POST['year_of_birth'] ) : '';
?>
<p>
<label for="year_of_birth"><?php esc_html_e( 'Year of birth', 'crf' ) ?><br/>
<input type="number"
min="1900"
max="2017"
step="1"
id="year_of_birth"
name="year_of_birth"
value="<?php echo esc_attr( $year ); ?>"
class="input"
/>
</label>
</p>
<?php
}
add_filter( 'registration_errors', 'crf_registration_errors', 10, 3 );
function crf_registration_errors( $errors, $sanitized_user_login, $user_email ) {
if ( empty( $_POST['year_of_birth'] ) ) {
$errors->add( 'year_of_birth_error', __( '<strong>ERROR</strong>: Please enter your year of birth.', 'crf' ) );
}
if ( ! empty( $_POST['year_of_birth'] ) && intval( $_POST['year_of_birth'] ) < 1900 ) {
$errors->add( 'year_of_birth_error', __( '<strong>ERROR</strong>: You must be born after 1900.', 'crf' ) );
}
return $errors;
}
add_action( 'user_register', 'crf_user_register' );
function crf_user_register( $user_id ) {
if ( ! empty( $_POST['year_of_birth'] ) ) {
update_user_meta( $user_id, 'year_of_birth', intval( $_POST['year_of_birth'] ) );
}
}
/**
* Back end registration
*/
add_action( 'user_new_form', 'crf_admin_registration_form' );
function crf_admin_registration_form( $operation ) {
if ( 'add-new-user' !== $operation ) {
// $operation may also be 'add-existing-user'
return;
}
$year = ! empty( $_POST['year_of_birth'] ) ? intval( $_POST['year_of_birth'] ) : '';
?>
<h3><?php esc_html_e( 'Personal Information', 'crf' ); ?></h3>
<table class="form-table">
<tr>
<th><label for="year_of_birth"><?php esc_html_e( 'Year of birth', 'crf' ); ?></label> <span class="description"><?php esc_html_e( '(required)', 'crf' ); ?></span></th>
<td>
<input type="number"
min="1900"
max="2017"
step="1"
id="year_of_birth"
name="year_of_birth"
value="<?php echo esc_attr( $year ); ?>"
class="regular-text"
/>
</td>
</tr>
</table>
<?php
}
add_action( 'user_profile_update_errors', 'crf_user_profile_update_errors', 10, 3 );
function crf_user_profile_update_errors( $errors, $update, $user ) {
if ( $update ) {
return;
}
if ( empty( $_POST['year_of_birth'] ) ) {
$errors->add( 'year_of_birth_error', __( '<strong>ERROR</strong>: Please enter your year of birth.', 'crf' ) );
}
if ( ! empty( $_POST['year_of_birth'] ) && intval( $_POST['year_of_birth'] ) < 1900 ) {
$errors->add( 'year_of_birth_error', __( '<strong>ERROR</strong>: You must be born after 1900.', 'crf' ) );
}
}
add_action( 'edit_user_created_user', 'crf_user_register' );
/**
* Back end display
*/
add_action( 'show_user_profile', 'crf_show_extra_profile_fields' );
add_action( 'edit_user_profile', 'crf_show_extra_profile_fields' );
function crf_show_extra_profile_fields( $user ) {
?>
<h3><?php esc_html_e( 'Personal Information', 'crf' ); ?></h3>
<table class="form-table">
<tr>
<th><label for="year_of_birth"><?php esc_html_e( 'Year of birth', 'crf' ); ?></label></th>
<td><?php echo esc_html( get_the_author_meta( 'year_of_birth', $user->ID ) ); ?></td>
</tr>
</table>
<?php
}
@fmosse
Copy link

fmosse commented Jun 27, 2020


add_action( 'show_user_profile', array( $this,'crf_show_extra_profile_fields') );
add_action( 'edit_user_profile', array( $this,'crf_show_extra_profile_fields') );

how add name surname ?
this code not work for me

in functions.php you should use:

add_action( 'user_register', 'crf_user_register' );
	function crf_user_register( $user_id ) {


	if ( ! empty( $_POST['nombrecompleto'] ) ) {
			update_user_meta( $user_id, 'NAMEFIELD', sanitize_text_field( $_POST['NAMEFIELD'] ) );
	}
}


add_filter( 'registration_errors', 'crf_registration_errors', 10, 3 );
function crf_registration_errors( $errors, $sanitized_user_login, $user_email ) {

	if ( empty( $_POST['NAMEFIELD'] ) ) {
		$errors->add( 'NAMEFIELD_error', __( '<strong>Error</strong>: Por favor add the field.', 'crf' ) );
	}

	return $errors;
}






add_action( 'register_form', 'crf_registration_form' );
function crf_registration_form() {
	$valor_NAMEFIELD = ! empty( $_POST['NAMEFIELD'] ) ? ( $_POST['NAMEFIELD'] ) : '';
?>
Please fill the field <input type="text" class="input"  name="NAMEFIELD" required value="<? if ($valor_NAMEFIELD != "") {echo $valor_NAMEFIELD;}?>" id="NAMEFIELD" minlength="5">
<br />
<br />
<?
}





add_action( 'user_profile_update_errors', 'crf_user_profile_update_errors', 10, 3 );
function crf_user_profile_update_errors( $errors, $update, $user ) {
	if ( $update ) {
		return;
	}
}

add_action( 'edit_user_created_user', 'admincrf_user_register' );
function admincrf_user_register( $user_id ) {
		
	if ( ! empty( $_POST['nombrecompleto'] ) ) {
			update_user_meta( $user_id, 'NAMEFIELD', sanitize_text_field( $_POST['NAMEFIELD'] ) );
	}

}






add_action( 'user_new_form', 'crf_admin_registration_form' );
function crf_admin_registration_form( $operation ) {
	if ( 'add-new-user' !== $operation ) {
		// $operation may also be 'add-existing-user'
		return;
	}
	
	$valor_NAMEFIELD = ! empty( $_POST['NAMEFIELD'] ) ? ( $_POST['NAMEFIELD'] ) : '';	

?>
	<table class="form-table">
		<tr>
			<th>Datos personalizados</th>
			<td>

Fill the field <input type="text" class="input"  name="NAMEFIELD" required value="<? if ($valor_NAMEFIELD != "") {echo $valor_NAMEFIELD;}?>" id="NAMEFIELD" minlength="5">

</td>
</tr>
</table>


<?    
	
}




//guardar datos al editar perfil propio
add_action( 'personal_options_update', 'crf_update_profile_fields' );
add_action( 'edit_user_profile_update', 'crf_update_profile_fields' );

function crf_update_profile_fields( $user_id ) {
	if ( ! current_user_can( 'edit_user', $user_id ) ) {
		return false;
	}

	if ( ! empty( $_POST['NAMEFIELD'] ) ) {
			update_user_meta( $user_id, 'NAMEFIELD', sanitize_text_field( $_POST['NAMEFIELD'] ) );
	}
}






add_action( 'show_user_profile', 'crf_show_extra_profile_fields' );
add_action( 'edit_user_profile', 'crf_show_extra_profile_fields' );

function crf_show_extra_profile_fields( $user ) {

	$valor_NAMEFIELD = get_the_author_meta( 'NAMEFIELD', $user->ID );
?>
	<table class="form-table">
		<tr>
			<th>Datos personalizados</th>
			<td>

Fill the field <input type="text" class="input"  name="NAMEFIELD" required value="<? if ($valor_NAMEFIELD != "") {echo $valor_NAMEFIELD;}?>" id="NAMEFIELD" minlength="5">

</td>
</tr>
</table>
<?
}	
?>

@neilwatson27
Copy link

Great code, been spending too many hours over trying to get similar to work!

How do I go about adding a pre-populated Select field type? Job title for example.

@fmosse
Copy link

fmosse commented Jul 3, 2020

Great code, been spending too many hours over trying to get similar to work!

How do I go about adding a pre-populated Select field type? Job title for example.

Hi!

You have to play a little with HTML and use something like this in your HTML form

1

with all the fields you need.

Greetings,
Francisco

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment