WordPress Üyelik Sistemi Yapma [Eklentisiz] Temaya Özel Üyelik Sayfası Yapımı

Gelişen internet dünyasında bir çk site sahibi wordpress yazılımını kullanmaktadır. bunun en önemli sebebi ise kolayca müdahale edilebilmesi ve kolay kullanılır olmasıdır. Biraz küçük bir araştırma yaparak internette wordpress temaya özel üyelik sistemi [onemli]eklentisiz[/onemli] yapımını hakkında türkçe bir kaynak bulamayınca bu konuyu hazırladım.

Öncelikle bu işlemlerin yapılabilmesi ve kontrol edilebilmesi için temamıza özel bir sayfa şablonu oluşturmamız gerekli. Bu konu hakkında daha önceden wordpress temaya özel sayfa şablonu yapımı konusunda kısaca değinmiştim. Ancak yinede tekrar belirteyim. Öncelikle wordpressin bizim sayfa şablonunu oluşturduğumuzu görmesi için aşağıdaki kodu oluşturduğumuz yeni php doosyasının en üstüne eklememiz gereklidir.

<?php /* Template Name: Üyelik Sayfası Ecancan.net */ ?>

Bu kdu ekledikten sonra wordpress admin panelinden yeni sayfa oluştur diyerek sağ taraftan sayfa şablnlarından oluşturmuş olduğumuz sayfanın adını seçerek sayfamızı yayına sokmuş oluyoruz ve yapacağımız değişiklikleri bu sayfadan rahatça görmemize imkan sağlıyor.Bu işlemi yaptığımızda yapacağımız işlemlerin çalışabilmesi için öncelikle fonksiyonları yazmamız gerekli. Foonksiyon kodlarını aşağıda görebilirsiniz. Bu kodlar temanın [onemli]functions.php[/onemli] sayfasına eklenecek.

[onemli]Fonctions.php dosyasına eklenecek kodlar[/onemli]

function register_a_user() {
if (( isset( $_GET['kayit'] ) && $_GET['kayit'] == 'user-kaydi' )) {
$errors = array( );

if (( empty( $_POST['user'] ) || empty( $_POST['email'] ) )) {
$errors[] = 'Bir kullanıcı ve e-posta adresi seçiniz';
}
if (!empty( $_POST['spam'] )) {
$errors[] = 'Spam Koruması';
}

$user_login = esc_attr( $_POST['user'] );
$user_email = esc_attr( $_POST['email'] );
$user_pass = esc_attr( $_POST['pass'] );
require_once( ABSPATH . WPINC . '/registration.php' );
$sanitized_user_login = sanitize_user( $user_login );
$user_email = apply_filters( 'user_registration_email', $user_email );

if (!is_email( $user_email )) {
$errors[] = 'Geçersiz e-posta adresi';
}
else {
if (email_exists( $user_email )) {
$errors[] = 'Bu e-posta zaten kayıtlı.';
}
}

if (( empty( $sanitized_user_login ) || !validate_username( $user_login ) )) {
$errors[] = 'Geçersiz kullanıcı adı';
}
else {
if (username_exists( $sanitized_user_login )) {
$errors[] = 'Kullanıcı adı zaten kayıtlı';
}
}
if (empty( $errors )) {

$user_id = wp_create_user( $sanitized_user_login, $user_pass, $user_email );

if (!$user_id) {
$errors[] = 'Kayıt başarısız...';
}
else {
update_user_option( $user_id, 'default_password_nag', true, true );
wp_new_user_notification( $user_id, $user_pass );
}
}
if (!empty( $errors )) {
define( 'REGISTRATION_ERROR', serialize( $errors ) );
return null;
}

define( 'REGISTERED_A_USER', $user_pass );
}

}
add_action( 'template_redirect', 'register_a_user' );

Yukarıdaki kodları temamızın [onemli]functions.php[/onemli] dosyasına eklediğimzide geriye sadece özel olarak oluşturmuş olduğumuz üyelik kayıt sayfasının form elementlerini oluşturmak ve bunları fonksiyon dosyamızdaki parametrelere göre tanımlamak.

[onemli]Üye sayfası için tanımlamış olduğumuz form kodları aşağıdadır[/onemli]

<?php
if(defined('REGISTRATION_ERROR'))
foreach(unserialize(REGISTRATION_ERROR) as $error)
echo "<script>$(\"#UserKayit\").show();</script><div class=\"HataLi\"><div class=\"alert alert-error\"><button data-dismiss=\"alert\" class=\"close\">×</button><strong>Hata!</strong>{$error}</div></div>";
elseif(defined('REGISTERED_A_USER'))
echo "<div class=\"alert alert-success\"><button data-dismiss=\"alert\" class=\"close\">×</button><strong>Başarılı! = </strong><script>$(\"#UserKayit\").show();</script>Şifreniz <b>".REGISTERED_A_USER."</b> olarak oluşturulmuştur. </div>";
?>


<?php if(get_option('users_can_register')) { ?>
<form class="cmxform form-horizontal adminex-form" id="commentForm" method="post" action="/uye-ol/?kayit=user-kaydi">
<div class="form-group ">
<label for="cname" class="control-label col-lg-2">Kullanıc Adı</label>
<div class="col-lg-10">
<input class=" form-control" id="cname" name="user" type="text" required />
</div>
</div>
<div class="form-group ">
<label for="cemail" class="control-label col-lg-2">Şifre</label>
<div class="col-lg-10">
<input class="form-control " id="cmail" name="pass" type="password" required />
</div>
</div>
<div class="form-group ">
<label for="cemail" class="control-label col-lg-2">Email</label>
<div class="col-lg-10">
<input class="form-control " id="cemail" name="email" type="text" required />
</div>
</div>
<div class="form-group ">
<label for="cemail" class="control-label col-lg-2">Spam Kontrol</label>
<div class="col-lg-10">
<input class="form-control " id="cemail" name="spam" type="text" value="Üye olurken siliniz" />
</div>
</div>

<div class="form-actions">
<button class="btn btn-success pull-right" type="submit" >Kayıt Ol</button>
</div>


<?php }else echo "<div class=\"alert alert-error\"><button data-dismiss=\"alert\" class=\"close\">×</button><strong>Hata!</strong>Üye kayıtları durdurulmuştur. Lütfen daha sonra deneyiniz.</div>";?>

</form>

Bu form dosyasını temamız için özel oluşturmuş olduğumuz ve wordpress sistemine şablon olarak tanıttığımız dosyanın içine eklediğimizde artık üyelik sistemini tamamlanmış oldu.

Yukarıdaki form bootstrab altyapısı kullanılarak oluşturulmuştur ve şuan ki temamın güncel kayıt formudur. Bizzat kendi elimle yapmış oolduğum bir fonksiyondur bu kodların izinsiz başka siteler tarafından alıntı yapılmadan alınması sonucunda gereken işlemler yapılacaktır. Bootstrap kullanılmayan temalarda tasarımsal bzukluklar meydana gelebilir. Tasarımsal olarak düzenlemeleri kendi zevkinize göre yapabilir ve form içinde kullanmış olduğum css cınıflarını düzenleyerek dormu tekrardan istediğiniz gibi tasarımsal olarak düzenleyebilirsiniz. Şuanki temamın üyelik sistemini olduğu gibi aktarmış bulunmaktayım.Formun çalışması için tema için oluşturuşan özel sayfa şablonu adresinin slug kalici-baglanti(kalıcı bağlantı adresi) yani adres çubuğundaki sayfanın yol adresi  [onemli]uye-ol[/onemli] olarak oluşturulması gereklidir aksi halde formdan gelen uyarıları göremeyebilirsiniz ve sizi hatalı bir sayfaya gönderir.

Bu işlemleri yaptığınız halde artık wordpress sisteminize kolaylıkla üyelerinizi kayıt edebileceksiniz ve wordpressin varsayılan kayıt sayfasına gerek duymayacaksınız.

Makalemin sonuna kadar okuduğunuz için teşekkür eder bir yorum ile destek verirseniz sevinirim. Soru ve sorunlarınız için konu altına youm bırakabilir yada iletşim saydasınıdan bana mail gönderebilirsiniz.