Hvernig á að banna WordPress notanda

Mér var beðið fyrir nokkrum dögum að búa til kerfi myndi banna WordPress notanda að setja upp. Svo ég bjó til einfalt viðbót og mig langaði til að deila með ykkur grunnatriðum þessa viðbót. Í þessari kennslu munum við fjalla um WordPress síur, aðgerðir, stjórnun dálka notenda og nokkra fleiri frábæra hluti.


Skref 1: Búðu til viðbótina

Enn og aftur, þetta er mjög flókið, allt sem þú þarft að gera er að búa til nýja möppu með „wp-innihaldi / viðbótum“ sem kallast „bann-notendur“. Búðu til þessa skrá í þessari möppu sem heitir „ban-users.php“, opnaðu hana og límdu þennan kóða:

Skref 2: Bættu við gátreit á prófílssíðu notenda

Það fyrsta sem við þurfum að gera er að bæta við gátreit á hverri útgáfu síðu notendasniðsins. Þegar þú hakar við þennan gátreit mun það geyma metavalkost fyrir notendur sem gefur til kynna að notandinn hafi ekki lengur leyfi til að skrá sig inn á vefsíðuna þína.

Hér er kóðinn:

/ **
* Stjórnandi init
*
* @ aðgang almennings
* @since 1.0
* @ afturkalla
* /
fall rc_admin_init () {

// Breyta notandasniði
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');

Þessi kóða er einfaldlega að búa til kall á aðgerð sem við verðum að búa til núna. Þessi aðgerð bætir gátreit við prófíl prófíl notenda.

/ **
* Bætir sérsniðnum gátreit við síðu útgáfu notenda
*
* @ aðgang almennings
* @since 1.0
* @ afturkalla
* /
fall rc_edit_user_profile () {
ef (! current_user_can ('edit_users')) {
snúa aftur;
}

alþjóðlegt $ user_id;

// Notandi getur ekki gert sjálfan sig óvirkan
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
ef ($ current_user_id == $ user_id) {
snúa aftur;
}

// Athugaðu hvort það er virkt
$ merkt = merkt (get_user_option ('rc_banned', $ user_id, false));

// Sýna gátreit
echo '
Bann notandi
'; }

Við verðum nú að hafa þann aðgerð sem vistar í gagnagrunninn gildi gátreitinn:

/ **
* Vista sérsniðna gátreit
*
* @ aðgang almennings
* @since 1.0
* @ afturkalla
* /
fall rc_edit_user_profile_update () {

ef (! current_user_can ('edit_users')) {
snúa aftur;
}

alþjóðlegt $ user_id;

// Notandi getur ekki gert sjálfan sig óvirkan
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> ID;
ef ($ current_user_id == $ user_id) {
snúa aftur;
}

// Læsa
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'á') {
rc_ban_user ($ user_id);
} annars {// Opna
rc_unban_user ($ user_id);
}

}

Eins og þú sérð notar þessi nýja aðgerð tvær aðrar aðgerðir: rc_ban_users () og rc_unban_users (). Nöfn þeirra eru ansi skýr, sá fyrri mun geyma í gagnagrunninum þá staðreynd að notandi er bannaður, sá seinni mun opna notendur.

Skref 3: Banna notendur

Það er kominn tími til að búa til rc_ban_users () aðgerðina. Í þessari aðgerð þurfum við að athuga hvort gildi er þegar geymt og ef ekki verðum við að geyma gildið. Það er ástæðan fyrir því að ég kalla aðgerð sem ég mun lýsa seinna: rc_is_user_banned ():

/ **
* Bann notandi
*
* @ aðgang almennings
* @since 1.0
* @ afturkalla
* /
fall rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Uppfæra stöðu
ef (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', satt, ósatt);
}
}

Skref 4: Notendur ekki bannaðir

Eftirfarandi aðgerð er hið gagnstæða og það sem við bjuggum til: við verðum að veita getu til að „afbanna“ notendur:

/ **
* Notandi bannað
*
* @ aðgang almennings
* @since 1.0
* @ afturkalla
* /
fall rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Uppfæra stöðu
ef ($ old_status) {
update_user_option ($ user_id, 'rc_banned', ósatt, ósatt);
}
}

Skref 5: Er notandi bannaður?

Við sáum í rc_ban_users () og rc_unban_users () að við notum aðgerð sem kallast rc_is_user_banned () til að athuga hvort notandi sé bannaður eða ekki. Við skulum búa það til:

/ **
* Athugar hvort notandi sé þegar bannaður
*
* @ aðgang almennings
* @since 1.0
* @ afturkalla
* /
fall rc_is_user_banned ($ user_id) {
skila get_user_option ('rc_banned', $ user_id, false);
}

Í grundvallaratriðum skilar þessi aðgerð einfaldlega gildi valmöguleikans sem er vistaður í rc_ban_users ().

Um þessar mundir höfum við nýjan gátreit á síðu útgáfu notenda sem ætti að vera svona:

ban_users_1

Síðasta skrefið er að krækja aðgerð við innskráningarformið til að forðast að bönnuðir notendur geti skráð sig inn.

Skref 5: Forðist að bannaðir notendur geti skráð sig inn

Til að gera það verðum við að nota WordPress sjálfgefna síu sem kallast „wp_authenticate_user“. Við þessa síu munum við festa aðgerð sem kallast „rc_authenticate_user ()“. Þessi aðgerð mun nota WP_Error flokkur.

/ **
* Athugaðu hvort notandinn sé læstur meðan á innskráningarferli stendur
*
* @ aðgang almennings
* @since 1.0
* @ afturkalla
* /
fall rc_authenticate_user ($ notandi) {

ef (is_wp_error ($ notandi)) {
skila $ notanda;
}

// Afturskekkja ef notandi reikningur er bannaður
$ banned = get_user_option ('rc_banned', $ user-> ID, false);
ef ($ bannað) {
skila nýjum WP_Error ('rc_banned', __ ('VILLA: Þessi notendareikningur er óvirkur. ',' Rc '));
}

skila $ notanda;
}

Nú verðum við bara að bæta við síunni:

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

Niðurstaða

Við bjuggum til viðbót sem bætir gátreit við útgáfu síðu notendasniðsins. Við notuðum aðra aðgerð til að geyma gildi á gátreitnum og við búum til aðgerð til að banna WordPress notanda og annan til að opna notanda. Við bjuggum einnig til litla aðgerð til að athuga hvort notandi sé bannaður eða ekki. Og við tengdum loksins aðgerð við „wp_authenticate_user“ síuna með því að nota WP_Error WordPress sjálfgefna bekkinn.

Ef þér líkar vel við þessa kennslu muntu elska aukagjald útgáfu þessa viðbótar: Aðgangsstjóri notenda.

Sæktu allan kóðann á Github

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