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.