WooCommerce Kayıt Ol Formunu Geliştiriyoruz

Biliyorsunuz ki WordPress'in üyelik alanı oldukça basti ve üye olurken alınan bilgiler çok az.Üyeliği ne kadar basit yaparsanız o kadar güvenlik açıklarınız artır.

0 353

WordPress ile e-ticaret sitesi kullanan arkadaşlar arasında Wocommerece’yi kullananlar için üyelik formuna nasıl yeni alanlar ekleyeceğimizi anlatacağım.WordPress’in standart üyelik alanlarını kullanan Wocommerece müşterileriniz sitenize üye olurken alınan bilgilerde malesef ki kullanıcı adı ve mailden ibaret oluyor.Peki WordPress Wocommerece ‘ye yeni üyelik alanları nasıl ekleriz .

Aşağıdaki kod betiğini temanızın functions.php dosyasına ekleyin ve artık kayıt alanına ad soyad telefon gibi alanların eklendiğini göreceksiniz kodu geliştirirek istediğiniz alanlar var ise ekleme yapabilirsiniz.

<?php
/*
* WooCommerce login/register sayfasındaki kayıt ol formuna yeni alanlar ekler
*/
function wolinka_extra_register_fields() {
	?>
		<p class="form-row form-row-first">
			<label for="reg_billing_first_name"><?php _e( 'First name', 'woocommerce' ); ?><span class="required">*</span>
			</label>
			<input type="text" class="input-text" name="billing_first_name" id="reg_billing_first_name" value="<?php if ( ! empty( $_POST['billing_first_name'] ) ) esc_attr_e( $_POST['billing_first_name'] ); ?>" />
		</p>

		<p class="form-row form-row-last">
			<label for="reg_billing_last_name">
				<?php _e( 'Last name', 'woocommerce' ); ?><span class="required">*</span>
			</label>
			<input type="text" class="input-text" name="billing_last_name" id="reg_billing_last_name" value="<?php if ( ! empty( $_POST['billing_last_name'] ) ) esc_attr_e( $_POST['billing_last_name'] ); ?>" />
		</p>
		<div class="clear"></div>

		<p class="form-row form-row-wide">
			<label for="reg_billing_phone">
				<?php _e( 'Phone', 'woocommerce' ); ?><span class="required">*</span>
			</label>
			<input type="text" class="input-text" name="billing_phone" id="reg_billing_phone" value="<?php if ( ! empty( $_POST['billing_phone'] ) ) esc_attr_e( $_POST['billing_phone'] ); ?>" />
		</p>
	<?php
}
add_action( 'woocommerce_register_form_start', 'wolinka_extra_register_fields' );
/**
* Yeni eklenen alanlar doldurulmadığında kullanıcıya uyarı verilmesi sağlanır.
*/
function wolinka_validate_extra_register_fields( $username, $email, $validation_errors ) {
	if ( isset( $_POST['billing_first_name'] ) && empty( $_POST['billing_first_name'] ) ) {
		$validation_errors->add( 'billing_first_name_error', __( 'Lütfen adınızı giriniz.', 'woocommerce' ) );
	}
	if ( isset( $_POST['billing_last_name'] ) && empty( $_POST['billing_last_name'] ) ) {
		$validation_errors->add( 'billing_last_name_error', __( 'Lütfen soyadınız giriniz.', 'woocommerce' ) );
	}
	if ( isset( $_POST['billing_phone'] ) && empty( $_POST['billing_phone'] ) ) {
		$validation_errors->add( 'billing_phone_error', __( 'Lütfen telefon numarınızı giriniz.', 'woocommerce' ) );
	}
}
add_action( 'woocommerce_register_post', 'wolinka_validate_extra_register_fields', 10, 3 );
/**
* Extra eklenen alanların panel tarafına kayıt etmesini sağlar.
*/
function wolinka_save_extra_register_fields( $customer_id ) {
	if ( isset( $_POST['billing_first_name'] ) ) {
		// WordPress default first name field.
		update_user_meta( $customer_id, 'first_name', sanitize_text_field( $_POST['billing_first_name'] ) );
		// WooCommerce billing first name.
		update_user_meta( $customer_id, 'billing_first_name', sanitize_text_field( $_POST['billing_first_name'] ) );
	}
	if ( isset( $_POST['billing_last_name'] ) ) {
		// WordPress default last name field.
		update_user_meta( $customer_id, 'last_name', sanitize_text_field( $_POST['billing_last_name'] ) );
		// WooCommerce billing last name.
		update_user_meta( $customer_id, 'billing_last_name', sanitize_text_field( $_POST['billing_last_name'] ) );
	}
    if ( isset( $_POST['billing_phone'] ) ) {
		// WooCommerce billing phone
		update_user_meta( $customer_id, 'billing_phone', sanitize_text_field( $_POST['billing_phone'] ) );
    }
}
add_action( 'woocommerce_created_customer', 'wolinka_save_extra_register_fields' );
?>

Cevap bırakın

E-posta hesabınız yayımlanmayacak.