WordPress Özel Kayıt Formu Eklentisi Oluşturmak!
WordPress Özel Kayıt Formu Eklentisi Oluşturmak!

WordPress Özel Kayıt Formu Eklentisi. WordPress, yeni bir kullanıcı oluşturmak veya mevcut bir WordPress sitesine yeni bir kullanıcı eklemek için kullanılabilen genel bir kayıt formu zaten sağlıyor.

Ancak WordPress Kontrol Paneli’nde seçenekleri bulunmayan özel bir kayıt formu oluşturmak ister misiniz?

Bu yazıda, şablon etiketleri(template tags) ve kısa kodları(shortcodes) birlikte kullanarak WordPress ‘te nasıl özel bir kayıt formu oluşturulabileceğinizi öğreneceksiniz.

Varsayılan kayıt formu sadece kullanıcı adı ve e-posta olmak üzere iki form alanından oluşur. Aşağıdaki resimde de gördüğünüz gibi.

Yalnızca kullanıcı adı ve e-posta formu alanının bulunması, kayıt işlemini inanılmaz kolaylaştırır.

Önce kullanıcı adınızı girer ve sonra gönderilecek şifre için kullanmak istediğiniz e-posta adresinizi girersiniz.

Ardından, siteye şifre ile giriş yaptıktan sonra profilinizi tamamlar ve şifrenizi unutmacağınız bir sifreyle değiştirirebilirsiniz.

Bir kullanıcı sitenize üye olduktan sonar neden düzenleme ihtiyacı duysun ki. Tüm profile için ilk üye olurken bilgilerini düzenleyebilsin ve tekrar düzenlemek için vakit kaybetmesin. Değil mi? İşte tam bu noktada makalemiz sizin ve kullanıcılarınızın işine yarayacak.

Bu makalede aşağıdaki form alanlarına sahip bir özel kayıt formu eklentisi oluşturacağız:

  • kullanıcı adı
  • şifre
  • email
  • websitesi adresi
  • ad
  • soyadı
  • takma ad
  • biyografi (veya hakkında bölümü)

Özel kayıt formu eklenti kısa kodu ve ilişkili şablon etiketini kullanarak WordPress’e entegre edilebilir.

Kısa kodla bir sayfa oluşturup bunun sitenizin resmi kayıt sayfası yapabilirsiniz.

Kısa kodu bir yazı içinde de kullanabilirsiniz; böylece kullanıcı, yazılarınızdan birini okuduktan sonra sitenize üye olabilir.

Kayıt formunu web sitenizdeki kenar çubuğa(sidebar) veya belirli bir yere eklemek istiyorsanız, WordPress temasını düzenleyebilir ve şablon etiketini istediğiniz yere ekleyebilirsiniz.

Kayıt formu eklentisini oluşturmaya başlamadan önce, kullanıcı adı, şifre ve e-posta alanının zorunlu olduğunu unutmayın.

Doğrulama fonksiyonunu yazarken bu kuralı uygulayacağız.

WordPress Özel Kayıt Formu Eklentisi ‘ni Oluşturmaya Başlayalım!

Tüm gerekli açıklamayı yaptıktan sonra artık eklentiyi kodlamaya başlalıyız. Öncelikle eklenti başlığını (header) ekleyin.

<?php
/*
  Plugin Name: Özelleştirilmiş Giriş Formu Eklentisi
  Plugin URI: https://armyyazilim.com
  Description: Bu eklenti wordpress sitenizin her hangi biryerinde kullanabileceğiniz özel giriş formu oluşturur.
  Version: 1.0
  Author: İbrahim Bozkurt
  Author URI: https://armyyazilim.com
 */

Daha sonra kayıt formunun HTML kodunu düzenleyen bir PHP fonksiyonu oluşturuyoruz.

function registration_form( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) {
    echo '
    <style>
    div {
      margin-bottom:2px;
    }
     
    input{
        margin-bottom:4px;
    }
    </style>
    ';
 
    echo '
    <form action="' . $_SERVER['REQUEST_URI'] . '" method="post">
    <div>
    <label for="username">Username <strong>*</strong></label>
    <input type="text" name="username" value="' . ( isset( $_POST['username'] ) ? $username : null ) . '">
    </div>
     
    <div>
    <label for="password">Password <strong>*</strong></label>
    <input type="password" name="password" value="' . ( isset( $_POST['password'] ) ? $password : null ) . '">
    </div>
     
    <div>
    <label for="email">Email <strong>*</strong></label>
    <input type="text" name="email" value="' . ( isset( $_POST['email']) ? $email : null ) . '">
    </div>
     
    <div>
    <label for="website">Website</label>
    <input type="text" name="website" value="' . ( isset( $_POST['website']) ? $website : null ) . '">
    </div>
     
    <div>
    <label for="firstname">First Name</label>
    <input type="text" name="fname" value="' . ( isset( $_POST['fname']) ? $first_name : null ) . '">
    </div>
     
    <div>
    <label for="website">Last Name</label>
    <input type="text" name="lname" value="' . ( isset( $_POST['lname']) ? $last_name : null ) . '">
    </div>
     
    <div>
    <label for="nickname">Nickname</label>
    <input type="text" name="nickname" value="' . ( isset( $_POST['nickname']) ? $nickname : null ) . '">
    </div>
     
    <div>
    <label for="bio">About / Bio</label>
    <textarea name="bio">' . ( isset( $_POST['bio']) ? $bio : null ) . '</textarea>
    </div>
    <input type="submit" name="submit" value="Register"/>
    </form>
    ';
}

Yukarıdaki fonksiyona değişken olarak oluşturulan kayıt alanına dikkat edin. Örnegin, fonksiyon kodunda aşağıdaki kod örneklerinden göreceksiniz:

( isset( $_POST['lname'] ) ? $last_name : null )

Üçlü operatör, formdaki mevcut bir değerin olup olmadığını görmek için genel $_POST dizisinin içeriğini kontrol eder.

Bir değer içeriyorsa, kullanıcıyı alan girişini yeniden girme zahmetinden kurtarmak için form alanlarını değerle doldurur.

Kullanıcı girdisini doğrulayana ve temizleyene kadar bir kayıt formu asla tamamlanmaz. Bu yüzden registration_validation adıyla bir doğrulama fonksiyonu oluşturmamız gerek.

Doğrulama hatalarını azaltmak için WordPress WP_Error sınıfını kullanacağız. Doğrulama fonksiyonunu kodlarken bizi izleyin:

Fonksiyonu oluşturun ve kayıt alanını fonsiyon argümanı olarak geçirin.

function registration_validation( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio )  {

WP_Error sınıfını somutlaştırın(instantiate) ve fonksiyon dışındanda erişilebilmesi için somut değişkenini(instance variable) global yapın.

global $reg_errors;
$reg_errors = new WP_Error;

Unutmayın: Kullanıcı adı, şifre ve e-postanın gerekli olduğunu ve bunların boş bırakılmamasını söyledik. Kuralları uygulamak için herhangi bir alanın(field) boş olup olmadığını kontrol etmemiz gerekiyor. Boş ise hata mesajını global WP_Error sınıfına ekleriz.

if ( empty( $username ) || empty( $password ) || empty( $email ) ) {
    $reg_errors->add('field', 'Kullanıcı adı, şifre ve e posta alanı boş bırakılamaz.');
}

Ayrıca kullanıcı adı karakterlerinin en az 4 olduğunu kontrol ediyoruz.

if ( 4 > strlen( $username ) ) {
    $reg_errors->add( 'username_length', 'kullanıcı adınız en az 4 karakter olmak zorundadır.' );
}

Kullanıcı adının kayıtlı olup olmadığını kontrol etmeliyiz.

if ( username_exists( $username ) )
    $reg_errors->add('user_name', 'Üzgünüz, Bu kullanıcı adı daha önce alınmış!');

Kullanıcı adının geçerli olduğundan emin olmak için WordPress validate_username fonksiyonunun hizmetlerinden yararlanmalıyız.

if ( ! validate_username( $username ) ) {
    $reg_errors->add( 'username_invalid', 'Üzgünüz, Bu kullanıcı adı politikalarımıza uygun değildir.' );
}

Kullanıcıların girdiği şifrenin 5 karakterden az olmamasını sağlayın.

if ( 5 > strlen( $password ) ) {
        $reg_errors->add( 'password', 'Şifreniz 5 karakterden az olamaz.' );
    }

E-postanın geçerli bir e-posta olup olmadığını kontrol edin.

if ( !is_email( $email ) ) {
    $reg_errors->add( 'email_invalid', 'Lütfen geçerli bir e-mail adresi giriniz.' );
}

E-postanın zaten kayıtlı olup olmadığını kontrol edin.

if ( email_exists( $email ) ) {
    $reg_errors->add( 'email', 'Bu Email zaten kayıtlı.' );
}

Web sitesi alanı doldurulmuşsa, bunun geçerli olup olmadığını kontrol edin.

if ( ! empty( $website ) ) {
    if ( ! filter_var( $website, FILTER_VALIDATE_URL ) ) {
        $reg_errors->add( 'website', 'WebSiteniz geçerli bir url içermiyor.' );
    }
}

Son olarak, WP_Error örneğimizi tararız ve hatayı görüntüleriz.

if ( is_wp_error( $reg_errors ) ) {
 
    foreach ( $reg_errors->get_error_messages() as $error ) {
     
        echo '<div>';
        echo '<strong>Hata Listesi</strong>:';
        echo $error . '<br/>';
        echo '</div>';
         
    }
 
}

Doğrulama fonksiyonunu kodlamamız bitti.

Sıradaki fonksiyon kullanıcı kaydını idare eden fonksiyon complete_registration().
Kullanıcı kaydı aslında kullanıcı verisinden oluşan bir dizin kabul eden wp_insert_user fonksiyonu tarafından yapılır.

function complete_registration() {
    global $reg_errors, $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
    if ( 1 > count( $reg_errors->get_error_messages() ) ) {
        $userdata = array(
        'user_login'    =>   $username,
        'user_email'    =>   $email,
        'user_pass'     =>   $password,
        'user_url'      =>   $website,
        'first_name'    =>   $first_name,
        'last_name'     =>   $last_name,
        'nickname'      =>   $nickname,
        'description'   =>   $bio,
        );
        $user = wp_insert_user( $userdata );
        echo 'Registration complete. Goto <a href="' . get_site_url() . '/wp-login.php">login page</a>.';   
    }
}

Yukarıda complete_registration() fonsiyonunda,

 $reg_errors WP_Error örneğini ve form alanlarını global yaptık, böylece değişkene global kapsamda erişebiliriz.

Daha sonra $reg_errors hata işleme örneğinde herhangi bir hata olup olmadığını kontrol ediyoruz. Herhangi bir hata bulunmazsa, $userdata dizinini doldurmaya, kullanıcı kayıt ayrıntılarını WordPress veritabanına eklemeye ve giriş sayfasına bir bağlantı içeren bir Kayıt Tamam mesajı görüntüleyeceğiz.

Sırada yukarıda oluşturduğumuz tüm fonksiyonları kullanan süper custom_registration_function() fonksiyonu var.

function custom_registration_function() {
    if ( isset($_POST['submit'] ) ) {
        registration_validation(
        $_POST['username'],
        $_POST['password'],
        $_POST['email'],
        $_POST['website'],
        $_POST['fname'],
        $_POST['lname'],
        $_POST['nickname'],
        $_POST['bio']
        );
         
        // sanitize user form input
        global $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
        $username   =   sanitize_user( $_POST['username'] );
        $password   =   esc_attr( $_POST['password'] );
        $email      =   sanitize_email( $_POST['email'] );
        $website    =   esc_url( $_POST['website'] );
        $first_name =   sanitize_text_field( $_POST['fname'] );
        $last_name  =   sanitize_text_field( $_POST['lname'] );
        $nickname   =   sanitize_text_field( $_POST['nickname'] );
        $bio        =   esc_textarea( $_POST['bio'] );
 
        // call @function complete_registration to create the user
        // only when no WP_error is found
        complete_registration(
        $username,
        $password,
        $email,
        $website,
        $first_name,
        $last_name,
        $nickname,
        $bio
        );
    }
 
    registration_form(
        $username,
        $password,
        $email,
        $website,
        $first_name,
        $last_name,
        $nickname,
        $bio
        );
}

custom_registration_function() fonksiyonundaki kodu açıklamalıyız.

İlk olarak $_POST ['submit']‘i ayarlanmış olup olmadığını kontrol ederek formun gönderilip gönderilmediğine bakarız. Form gönderildiyse, kullanıcı tarafından gönderilen formu doğrulamak için registration_validation fonksiyonunu çağırırız.

Daha sonra form verilerini temizleyip, temizlenmiş verilerini form alanından adlandırılmış bir değişkene veririz. Son olarak, complete_registration‘i çağırarak kullanıcıyı kaydettiririz.

Kayıt formunu görüntülemek için registration_form fonksiyonunu çağırmamız gerekiyor.

Kayıt eklentisi için kısa kod desteği sağlayacağımızdan bahsettiğimizi hatırlıyormusunuz? Aşağıda kısa kod desteği için gereken kod bulunmakadır.

// Register a new shortcode: [cr_custom_registration]
add_shortcode( 'cr_custom_registration', 'custom_registration_shortcode' );
 
// The callback function that will replace [book]
function custom_registration_shortcode() {
    ob_start();
    custom_registration_function();
    return ob_get_clean();
}

Bu noktada eklentiyi kodlamayı tamamladık. Aşağıda, kayıt formunun nasıl göründüğünü gösteren bir resim bulunmaktadır.

Farklı CSS stillerinden dolayı WordPress sitenizde muhtemelen birebir görünümün olmayacağını unutmayın.

WordPress Özel Kayıt Formu Eklentisi: Eklenti Kullanımı

Eklentiyi WordPress yazısına veya sayfaya uygulamak için [cr_custom_registration] kısa kodunu kullanın.

Kayıt formunu temanızın belirli bir bölümünde göstermek için aşağıdaki şablon etiketini ekleyin – <?php custom_registration_function(); ?>
Eklenti dosyasını bu yazıdaki ekten edinebilirsiniz.

WordPress Özel Kayıt Formu Eklentisi: Özet

Bu yazıda WordPress’e özel bir kayıt formu ekleyen bir eklentinin oluşturulma sıralamasını gördük. Kayıt formunu kullanıcı rolü, AOL Sohbet hesabı gibi ek alanlar içerecek şekilde genişletebilirsiniz ancak form alanının wp_insert_user için geçerli bir meta veri olduğundan emin olun.

Herhangi bir sorunuz ve öneriniz varsa, yorumlar kısmında bana bildirin!

Eğer yazılım ile ilgileniyorsanız sizde bizlere katılıp makaleler yazabilir video içerikler üretebilirsiniz. Sizlerle birlikte bizde büyük bir ekip olabiliriz.

Ayrıca İnstagram hesabımızı takip edebilir bize Twitter ’dan da yazabilirsiniz.

Bu platformlardan herhangi birinde hsabınız yok ise telaşa gerek yok. İstediğiniz soruyu yorumlarda belirtebilirsiniz.

İlginizi çekebilir…

WordPress Kişisel Blog Temaları! (Ücretli – Ücretsiz)

Bu makaleyi beğendiyseniz, lütfen WordPress video eğiticileri için YouTube Kanalımıza abone olun . Bizi Twitter ve İnstagram‘da da bulabilirsiniz …

WordPress

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir