WordPress WooCommerce Kayıt Ol Sayfasına Yeni Alanlar Ekleme

WordPress’ i güvenli hale getirebilmek için bir çok yöntem vardır. Blogum üzerinden ara ara WordPress güvenlik konularına değinerek bazı tüyolar vereceğim. Bu yazımda da  WordPress WooCommerce sitenize üyeliği biraz daha zorlaştırarak güvenlik seviyenizi yükselteceğiniz. WordPress WooCommerce ‘i kullanıyorsanız biliyorsunuzdur ki üyelik alanı oldukça basit ve üyelik bilgilerini bir çoğuna gerek duymadan isteyen kullanıcıyı sisteme üye yapabiliyor.

Bu durum aslında kullanıcılar açısından iyi görünse de bir web sitesinin bu kadar basit bir şekilde üyelik alması spam üyeliklerle çok yakında başının belaya girmesi demektir. Hadi WordPress WooCommerce’nin üye ol sayfasını biraz düzenleyelim ve üye ol sayfasına yeni alanlar ekleyerek bu alanları veritabanına kaydedelim.

WordPress yönetici panelinizi açın. Kontrol panelinin sol tarafından WooCommerce → Ayarlar’a gidin.

Burada önce Hesaplar ve Gizlilik sekmesini tıklayın. Ardından Müşterilerin “Hesabım” sayfasında bir hesap oluşturmasına izin ver onay kutusunu seçin.

Ardından, bu sayfanın alt kısmındaki Değişiklikleri Kaydet’i tıklayın.

WordPress yönetici panelinden çıkış yapıp, Hesabım sayfasına gittiğinizde varsayılan kayıt formunu göreceksiniz.

Şimdi bu kayıt ol sayfasına yeni alanlar ekleyelim, bunun için temanızın functions.php dosyasını açın ve <?php kodundan hemen sonra ya da ?> kodundan önce  aşağıdaki kodları ekleyin.

function seyda_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', 'seyda_extra_register_fields' );

// Yeni eklenen alanlar doldurulmadiginda kullaniciya uyari verilmesi saglanir.
function seyda_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', 'seyda_validate_extra_register_fields', 10, 3 );

// Extra eklenen alanlarin panel tarafina kayit etmesini saglar.
function seyda_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', 'seyda_save_extra_register_fields' );

Yukarıdaki kodda kayıt ol sayfasına isim soyisim ve telefon numarası alanlarını ekledik. Siz kodları istediğiniz gibi güncelleyerek kullanabilirsiniz. Yeni alanlar eklemek isterseniz aşağıdaki tanımları kullanabilirsiniz. Kodları güncelleyin biraz kodlara aşına olmanızı sağlar.

  • billing_first_name
  • billing_last_name
  • billing_address_1
  • billing_address_2
  • billing_phone
  • billing_company
  • billing_city
  • billing_postcode
  • billing_country
  • billing_state
  • billing_email

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir