Kuinka kieltää WordPress-käyttäjä

Minua pyydettiin muutama päivä sitten luomaan järjestelmä, joka kieltää WordPress-käyttäjän asentamasta. Joten loin yksinkertaisen laajennuksen ja halusin kertoa kanssasi tämän laajennuksen perusteista. Tässä opetusohjelmassa käsittelemme WordPress-suodattimia, toimintoja, käyttäjien sarakkeiden hallintaa ja joitain muita hienoja asioita.


Vaihe 1: Luo laajennus

Jälleen kerran, tässä on erittäin monimutkaista, sinun tarvitsee vain luoda uusi kansio, jossa on “wp-content / plugins” ja jota kutsutaan “ban-users”. Luo tähän kansioon uusi tiedosto nimeltään “ban-users.php”, avaa se liitä tämä koodi:

Vaihe 2: Lisää valintaruutu käyttäjien profiilisivulle

Ensimmäinen asia, joka meidän on tehtävä, on lisätä valintaruutu jokaiselle käyttäjäprofiilin julkaisusivulle. Kun valitset tämän valintaruudun, se tallentaa käyttäjän meta-vaihtoehdon, joka ilmoittaa, että käyttäjän ei enää sallita kirjautua sisään verkkosivustoosi.

Tässä on koodi:

/ **
* Järjestelmänvalvojan aloitus
*
* @ pääsy julkinen
* @since 1.0
* @palaa tyhjä
* /
toiminto rc_admin_init () {

// Muokkaa käyttäjäprofiilia
add_action ('edit_user_profile', 'rc_edit_user_profile');
add_action ('edit_user_profile_update', 'rc_edit_user_profile_update');

}
add_action ('admin_init', 'rc_admin_init');

Tämä koodi on vain puhelun luominen toiminnolle, joka meidän on nyt luotava. Tämä toiminto lisää valintaruudun käyttäjän profiilisivulle.

/ **
* Lisää mukautetun valintaruudun käyttäjän painos-sivulle
*
* @ pääsy julkinen
* @since 1.0
* @palaa tyhjä
* /
toiminto rc_edit_user_profile () {
if (! current_user_can ('edit_users')) {
palata;
}

globaali $ user_id;

// Käyttäjä ei voi poistaa itseään käytöstä
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
palata;
}

// Tarkista, onko käytössä
$ tarkastettu = tarkastettu (get_user_option ('rc_banned', $ user_id, false));

// Näytä valintaruutu
kaiku '
Estä käyttäjä
'; }

Meillä on nyt oltava toiminto, joka tallentaa tietokantaan valintaruudun arvon:

/ **
* Tallenna mukautettu valintaruutu
*
* @ pääsy julkinen
* @since 1.0
* @palaa tyhjä
* /
toiminto rc_edit_user_profile_update () {

if (! current_user_can ('edit_users')) {
palata;
}

globaali $ user_id;

// Käyttäjä ei voi poistaa itseään käytöstä
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
if ($ current_user_id == $ user_id) {
palata;
}

// Lukko
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'päällä') {
rc_ban_user ($ user_id);
} else {// Poista lukitus
rc_unban_user ($ user_id);
}

}

Kuten näette, tämä uusi funktio käyttää kahta muuta toimintoa: rc_ban_users () ja rc_unban_users (). Heidän nimensä ovat melko yksiselitteisiä, ensimmäinen tallentaa tietokantaan sen, että käyttäjä on kielletty, toinen avaa käyttäjät.

Vaihe 3: Kielletään käyttäjät

Nyt on aika luoda rc_ban_users () -toiminto. Tässä toiminnossa meidän on tarkistettava, onko arvo jo tallennettu, ja jos ei, meidän on tallennettava arvo. Tästä syystä kutsun toimintoa, jota kuvaan myöhemmin: rc_is_user_banned ():

/ **
* Kiellettävä käyttäjä
*
* @ pääsy julkinen
* @since 1.0
* @palaa tyhjä
* /
toiminto rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Päivitä status
if (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', true, false);
}
}

Vaihe 4: Kielletään käyttäjiä

Seuraava toiminto on päinvastainen kuin juuri luomamme: Meidän on annettava mahdollisuus "poistaa kielto" käyttäjille:

/ **
* Poista käyttäjän kielto
*
* @ pääsy julkinen
* @since 1.0
* @palaa tyhjä
* /
toiminto rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Päivitä status
if ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

Vaihe 5: Onko käyttäjän kielletty?

Näimme rc_ban_users () ja rc_unban_users (), että käytämme rc_is_user_banned () -nimistä toimintoa tarkistaaksemme, onko käyttäjä kielletty. Luotaan se:

/ **
* Tarkistaa, onko käyttäjä jo kielletty
*
* @ pääsy julkinen
* @since 1.0
* @palaa tyhjä
* /
toiminto rc_is_user_banned ($ user_id) {
return get_user_option ('rc_banned', $ user_id, false);
}

Periaatteessa tämä funktio palauttaa yksinkertaisesti rc_ban_users () -sovellukseen tallennetun vaihtoehdon arvon..

Tällä hetkellä meillä on uusi valintaruutu käyttäjän painos-sivulla, jonka pitäisi pitää siitä:

ban_users_1

Viimeinen vaihe on kytkeä toiminto kirjautumislomakkeeseen, jotta estetään käyttäjien sisäänkirjautuminen.

Vaihe 5: Vältä kiellettyjen käyttäjien kirjautumista sisään

Tätä varten meidän on käytettävä WordPress-oletussuodatinta nimeltään “wp_authenticate_user”. Tähän suodattimeen kootaan toiminto nimeltä “rc_authenticate_user ()”. Tämä toiminto käyttää WP_Virheluokka.

/ **
* Tarkista onko käyttäjä lukittu sisäänkirjautumisprosessin aikana
*
* @ pääsy julkinen
* @since 1.0
* @palaa tyhjä
* /
toiminto rc_authenticate_user ($ käyttäjä) {

if (is_wp_error ($ käyttäjä)) {
palauta $ käyttäjä;
}

// Palautusvirhe, jos käyttäjätili on kielletty
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
if ($ kielletty) {
palauta uusi WP_Error ('rc_banned', __ ('VIRHE: Tämä käyttäjätili on poistettu käytöstä. ',' Rc '));
}

palauta $ käyttäjä;
}

Nyt meidän on vain lisättävä suodatin:

add_filter ('wp_authenticate_user', 'rc_authenticate_user', 1);

johtopäätös

Loimme laajennuksen, joka lisää valintaruudun käyttäjäprofiilin painos-sivulle. Käytimme toista toimintoa arvon tallentamiseksi valintaruutuun ja luomme toiminnon kieltää WordPress-käyttäjän ja toisen toiminnon käyttäjän lukituksen avaamiseksi. Olemme myös luoneet pienen toiminnon tarkistaaksesi, onko käyttäjä kielletty. Ja lopulta koukutimme funktion “wp_authenticate_user” -suodattimeen käyttämällä WP_Error WordPress-oletusluokkaa.

Jos pidit tästä opetusohjelmasta, tulet rakastamaan tämän laajennuksen premium-versiota: User Access Manager.

Lataa koko koodi Githubissa

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map