Kuzey Kıbrıs genelinde yerinde ve uzaktan teknik destek +90 539 106 34 31 [email protected] WhatsApp
WordPress

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

Yorumlar 0

Üye yorumları anında yayınlanır; misafir yorumları yönetici onayından sonra görünür.

Henüz yorum yapılmamış. İlk yorumu siz yazın.

Yorum yazın

E-posta adresiniz yayınlanmaz.

Bu konuda profesyonel destek mi gerekiyor?

Sorununuzu kısaca anlatın; size en hızlı çözümü birlikte bulalım.

WhatsApp