Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save hamidrezayazdani/15685cd579048d2cde32c3c13e2d295d to your computer and use it in GitHub Desktop.
Save hamidrezayazdani/15685cd579048d2cde32c3c13e2d295d to your computer and use it in GitHub Desktop.
Add first & last name fields to woocommerce registration form
<?
/**
* Add a custom field to woocommerce registeration form
*/
add_action( 'woocommerce_register_form', 'ywp_add_name_field_ro_wc_register_form' );
function ywp_add_name_field_ro_wc_register_form() {
woocommerce_form_field(
'ywp_register_fname',
array(
'type' => 'text',
'required' => true, // صرفا یک * در مقابل عنوان فیلد نمایش میدهد، برای سنجش اینکه کاربر فیلد رو پر کرده باید بررسی انجام شود
'label' => 'نام'
),
( $_POST['ywp_register_fname'] ?? '' ),
);
woocommerce_form_field(
'ywp_register_lname',
array(
'type' => 'text',
'required' => true, // صرفا یک * در مقابل عنوان فیلد نمایش میدهد، برای سنجش اینکه کاربر فیلد رو پر کرده باید بررسی انجام شود
'label' => 'نام خانوادگی'
),
( $_POST['ywp_register_lname'] ?? '' ),
);
}
/**
* Check national code field filled
*/
add_action( 'woocommerce_register_post', 'ywp_check_national_code_filled', 10, 3 );
function ywp_check_national_code_filled( $username, $email, $errors ) {
if ( empty( $_POST['ywp_register_fname'] ) ) {
$errors->add( 'empty_firstname_error', 'لطفا نام خود را وارد کنید!' );
}
if ( empty( $_POST['ywp_register_lname'] ) ) {
$errors->add( 'empty_lastname_error', 'لطفا نام خانوادگی خود را وارد کنید!' );
}
}
/**
* ُSave custom fields to user shipping & billing fields
*/
add_action( 'woocommerce_created_customer', 'ywp_save_register_fields' );
function ywp_save_register_fields( $user_id ) {
if ( isset( $_POST['ywp_register_fname'] ) ) {
update_user_meta( $user_id, 'billing_first_name', wc_clean( $_POST['ywp_register_fname'] ) );
update_user_meta( $user_id, 'shipping_first_name', wc_clean( $_POST['ywp_register_fname'] ) );
}
if ( isset( $_POST['ywp_register_lname'] ) ) {
update_user_meta( $user_id, 'billing_last_name', wc_clean( $_POST['ywp_register_lname'] ) );
update_user_meta( $user_id, 'shipping_last_name', wc_clean( $_POST['ywp_register_lname'] ) );
}
}
// The code goes to your active theme (or child theme) functions.php file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment