Şablon sayfamda 'giriş hatası' ve 'kayıp şifre' nasıl gösterilir?


10

Ben wp_login_form işlevini kullanarak, bir şablonda ön uç giriş sağlıyorum. Giriş ve çıkıştan sonra yeniden yönlendirmeyi çok düzgün bir şekilde halleder! Ancak, kullanıcı adı / parola uyuşmazlığı varsa veya mevcut değilse, kullanıcı titrek js hatasıyla yönetici giriş sayfasına yönlendirilir. Şifreyi sıfırlamaya çalıştığımda da durum aynı, beni şifreyi sıfırlamak için e-postamı girmem gereken arka uç sayfasına götürüyor. Her iki etkinliği de şablonumda göstermek istiyorum. Bunu yapabilmemin bir yolu var mı?

Şimdiden yardım için teşekkürler.

Yanıtlar:


9

Evet mümkün. Bunun için üç filtre oluşturmanız gerekir.

Sınıf içindeki yönetici işleri

class WPSE29338_Admin {
    public static function setup() {
        add_filter('login_url', array(__CLASS__, 'modifyLoginURL'), 10, 2);
        add_filter('lostpassword_url', array(__CLASS__, 'modifyLostPasswordURL'), 10, 2);
        add_filter('register', array(__CLASS__, 'modifyRegisterURL'));
    }

    public static function modifyLoginURL($loginUrl, $redirect = '') {
        $loginUrl = site_url('login'); // Link to login URL

        if(!empty($redirect)) {
            $loginUrl = add_query_arg('redirect_to', urlencode($redirect), $loginUrl);
        }

        return $loginUrl;
    }

    public static function modifyLostPasswordURL($lostpwUrl, $redirect = '') {
        $lostpwUrl = wp_login_url() . '#lostpassword'; // Link to lostpassword URL

        if(!empty($redirect)) {
            $lostpwUrl = add_query_arg('redirect_to', urlencode($redirect), $lostpwUrl);
        }

        return $lostpwUrl;
    }

    public static function modifyRegisterURL($registerUrl) {
        if(!is_user_logged_in()) {
            if (get_option('users_can_register')) {
                $registerUrl = '<a href="' . wp_login_url() . '#register" class="btn">' . __('Register') . '</a>'; // Link to register URL
            } else {
                $registerUrl = '';
            }
        }

        return $registerUrl;
    }
}

İlk olarak, form özelliğinde wp_login_url()kullanılan işlevin çıktısını filtrelememiz gerekir .wp_login_form()action

Yönteme bakın modifyLoginUrl(). Burada sayfanın URL'sini logindeğişkenin içinde saklıyoruz $loginUrl. Bu sayfa WordPress içinde bulunmalıdır, bu yüzden önce oluşturun.

Sonra işlev için bir filtreye ihtiyacımız var wp_lostpassword_url()ve wp_register(). Temelde aynı. Sitenin URL'si değişkeni içinde saklanır $lostpwUrlve $registerUrl.

Son fakat aynı derecede önemli olarak, doğru eylem kancasında sınıfı çağırmanız gerekir. Temalar için bu olmalı after_setup_themeve kullanabileceğiniz eklentiler için plugins_loaded.

Temalar / fonksiyonlar.php

add_action('after_setup_theme', 'wpse29338_admin_init');
function wpse29338_admin_init() {
    WPSE29338_Admin::setup();
}

eklentiler

add_action('plugins_loaded', 'wpse29338_admin_init');
function wpse29338_admin_init() {
    WPSE29338_Admin::setup();
}

Bunu çarptığım için üzgünüm, ama bunu yapmak isterdim, ama anlayamıyorum! Girdiğiniz kodda, benim tarafımdan ne değiştirilmeli?
Bram Vanroy

Bram, özel bir tema oluşturuyorsanız, tema işlevleri dosyanıza tüm birinci ve ikinci kod bloklarını koyun. Bir eklenti oluşturuyorsanız, eklenti dosyanıza birinci ve üçüncü kod bloklarını yerleştirin. Değiştirmeniz gerekebilecek tek şey, sınıfın 9. satırı olduğu söyleniyor $loginUrl = site_url('login'); // Link to login URL. 'Giriş'i, kullanmak istediğiniz giriş sayfasındaki bilgi ile eşleşecek şekilde değiştirmeniz yeterlidir. Rofflox görmediğim bir sözdizimi hatası yapmadığı sürece, bu güzel çalışacak gibi görünüyor.
Jen

@guiniveretoo Yanıtınız için teşekkürler! Sorun, web sitesindeki herhangi bir sayfadan erişilebilen bir açılır form ile çalışmamdır. Yani, kesin bir bilgi yoktur, çünkü insanlar herhangi bir sayfadan giriş yapabilirler ... Peki, oraya ne koymalıyım?
Bram Vanroy

1
Bram - Wordpress'in bir giriş URL'sine ihtiyacı vardır, böylece bir kullanıcı hatası veya benzeri bir şey varsa, gitmeleri ve şifrelerini sıfırlamaları veya bir hesap için kaydolmaları için bir yer vardır. Bir giriş URL'si ayarlamak bu sayfayı sağlar. Tam olarak bu kurulumu geçen yıl bir proje ile yaptım: giriş formuyla görünen bir javascript giriş kutusu - bilgilerini doğru girerse, onları wp-admin'e gönderir; değilse, tekrar denemek veya şifrelerini sıfırlamak için özel giriş sayfasına yönlendirilirler.
Jen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.