WordPress Özel Giriş Sayfası Hazırlamak

Bu dersimde, wordpress için özel giriş sayfası nasıl hazırlanır bundan bahsedeceğim. İşlemler çok kolay ve anlaşılır, anlamadığınız bir yer olursa sormayı unutmayın 🙂

Özel Sayfa Şablonu Oluşturma

wp-content > themes > tema_klasörü altında bir login.php dosyası oluşturun. Ve içerisine ilk olarak php’de şu açıklama satırlarını yazın;

<?php
/**
 * Template Name: Giriş Sayfası
 */

WordPress admin sayfasında sayfalar kısmından yeni sayfa oluştur deyin. Artık sağ kısımda sayfa şablonu diye bir alan çıktı. Oradan Giriş Sayfası olanı seçip Giriş ismiyle sayfanızı kaydedin.

Giriş Sayfasını Oluşturma

Tekrar tema klasörümüzdeki login.php‘ye dönüyoruz. Şimdi yapmamız gereken şey, temanın header ve footer‘larını yerleştirmek. Ardından giriş formunu wordpress’in wp_login_form() fonksiyonu ile oluşturmak.

<?php
/**
 * Template Name: Giriş Sayfası
 */

get_header();

wp_login_form([
    'redirect' => home_url()
]);

get_footer();

?>

Burada parametre olarak redirect değerine home_url() dedik. Yani anasayfaya gidecek giriş yaptığı zaman kullanıcı. Görüntü şöyle bir şey şuan bende;

İlgili Fonksiyonların Yazılması

Şimdi bazı kurallar ve işlemler için tema klasörünüzde bulunan functions.php dosyasına bazı fonksiyonlar yazacağız. Ve wp’nin fonksiyonlarına kancamızı atacağız.

Giriş Sayfasına Yönlendirme

Kullanıcı eğer doğrudan siteadi.com/wp-login.php sayfasına ulaşmaya çalışıyorsa kullanıcıyı kendi oluşturduğumuz giriş sayfasına yönlendirmemiz gerek.

function redirect_login_page()
{
    $login_page = home_url('giris');
    $param = basename($_SERVER['REQUEST_URI']);
    if ($param == 'wp-login.php' && $_SERVER['REQUEST_METHOD'] == 'GET') {
        wp_redirect($login_page);
        exit;
    }
}

add_action('init', 'redirect_login_page');

Şimdi burada önemli olan basename($_SERVER[‘REQUEST_URI’]) ile wp-login.php kısmını aldık. Ve karşılaştırıyoruz, eğer giriş sayfasında ise özel sayfamıza yönlendirme işlemini yapıyoruz ancak ek bir koşul belirttik. Sadece GET isteği olursa bunu yapıyoruz çünkü kullanıcı adı ve şifremizi yine aynı yere post edeceğiz o zaman çalışmaması gerek bu kodların.

Kullanıcı adı ya da şifre boş ise yönlendirme

Bunun için authenticate fonksiyonuna filtre ekleyeceğiz. Şu şekilde;

function verify_user($user, $username, $password)
{
    $login_page = home_url('giris?islem=bos');
    if ($username == '' || $password == '') {
        wp_redirect($login_page);
        exit;
    }
}

add_filter('authenticate', 'verify_user', 10, 3);

Bu seferde eğer değerler boş ise özel sayfamıza gönderiyoruz ancak ?islem=bos şeklinde. Bunu birazdan tema dosyamızda kontrol edip hataları göstermek için kullanacağız. Bu arada farklılık olarak add_filter() fonksiyonu 4 parametre aldı. 3. parametre öncelik sırası, default’y 10’dur yani işlem önceliğini belirtir önce hangisi çalışmalı gibisinden. 4. parametre ise fonksiyonun kaç parametre aldığıdır.

Kullanıcı adı ya da şifre hatalıysa yönlendirme

Bu işlem içinde wp_login_failed() fonksiyonuna kanca atıyoruz. Hemen görelim;

function login_failed()
{
    $login_page = home_url('giris?islem=basarisiz');
    wp_redirect($login_page);
    exit;
}

add_action('wp_login_failed', 'login_failed');

Burada da yönlendirme işleminde ?islem=basarisiz şeklinde kullandım.

Kullanıcı çıkış yaptığında yönlendirme

Diğerlerini yaptığımız için bunuda yapmak zorundayız. Kullanıcı çıkış yaptığında görüntülediği yere geri dönsün;

function logout_redirect()
{
    $redirect_url = $_SERVER['HTTP_REFERER'];
    wp_redirect($redirect_url);
    exit;
}

add_action('wp_logout', 'logout_redirect');

Kullanıcı giriş yapmışsa yönlendirme

Kullanıcı giriş yaptığında hala giriş sayfasına girmeye çalışıyorsa onu anasayfaya yönlendirmemiz gerek. Bunun içinde;

function redirect_home()
{
    if (is_user_logged_in() && is_page('giris')){
        wp_redirect(home_url());
        exit;
    }
}
add_action('template_redirect', 'redirect_home');

is_page() kısmında oluşturduğumuz sayfanın url’ni belirtmemiz gerek. Başka bir isim verdiyseniz, unutmayın 🙂

Hataların Gösterilmesi

Şimdi functions.php ile işimiz bitti. Tekrar tema klasörümüzde login.php dosyamızı açıp hatalar için bir switch-case yapısı kuruyoruz.

if (isset($_GET['islem'])){
    Switch ($_GET['islem']){
        case 'bos':
            $serror = 'Lütfen kullanıcı adı ya da şifrenizi yazın.';
            break;
        case 'basarisiz':
            $serror = 'Geçersiz kullanıcı adı ya da şifre girdiniz.';
            break;
    }
}

if (isset($serror)){
    echo $serror;
}

Bundan sonra güzel bir tasarım ile entegre ederek giriş ekranınızı kullanabilirsiniz, güle güle kullanın 🙂 Daha fazlası için videoya gözatmayı unutmayın.

Yayınlayan

Tayfun Erbilen

2009'dan beri web işleriyle uğraşan, aynı zamanda amatör müziklede ilgilenen sıradan birisi..

“WordPress Özel Giriş Sayfası Hazırlamak” üzerine bir yorum

Bir Cevap Yazın

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