Πώς να απαγορεύσετε έναν χρήστη WordPress

Μου ζήτησαν πριν από λίγες μέρες να δημιουργήσω ένα σύστημα που θα απαγόρευε σε έναν χρήστη του WordPress από μια εγκατάσταση. Έτσι δημιούργησα ένα απλό πρόσθετο και ήθελα να μοιραστώ μαζί σας τα βασικά αυτής της προσθήκης. Σε αυτό το σεμινάριο θα καλύψουμε φίλτρα WordPress, ενέργειες, διαχείριση στηλών χρηστών και μερικά ακόμη σπουδαία πράγματα.


Βήμα 1: Δημιουργία της προσθήκης

Για άλλη μια φορά, εδώ είναι πολύ περίπλοκο, το μόνο που έχετε να κάνετε είναι να δημιουργήσετε έναν νέο φάκελο με το “wp-content / plugins” που ονομάζεται “αποκλεισμός χρηστών”. Σε αυτόν το φάκελο, δημιουργήστε ένα νέο αρχείο που ονομάζεται “ban-users.php”, ανοίξτε το επικολλήστε αυτόν τον κωδικό:

Βήμα 2: Προσθέστε ένα πλαίσιο ελέγχου στη σελίδα προφίλ των χρηστών

Το πρώτο πράγμα που πρέπει να κάνουμε είναι να προσθέσουμε ένα πλαίσιο ελέγχου σε κάθε σελίδα έκδοσης προφίλ χρήστη. Όταν επιλέξετε αυτό το πλαίσιο ελέγχου, θα αποθηκευτεί μια επιλογή μετα-χρήστη που θα υποδεικνύει ότι δεν επιτρέπεται πλέον στον χρήστη να συνδέεται στον ιστότοπό σας.

Εδώ είναι ο κωδικός:

/ **
* Διαχειριστής init
*
* @ πρόσβαση στο κοινό
* @since 1.0
* @ return void
* /
συνάρτηση rc_admin_init () {

// Επεξεργασία προφίλ χρήστη
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');

Αυτός ο κωδικός δημιουργεί απλώς μια κλήση σε μια λειτουργία που πρέπει να δημιουργήσουμε τώρα. Αυτή η λειτουργία θα προσθέσει ένα πλαίσιο ελέγχου στη σελίδα προφίλ χρηστών.

/ **
* Προσθέτει προσαρμοσμένο πλαίσιο ελέγχου στη σελίδα έκδοσης χρήστη
*
* @ πρόσβαση στο κοινό
* @since 1.0
* @ return void
* /
συνάρτηση rc_edit_user_profile () {
εάν (! current_user_can ('edit_users')) {
ΕΠΙΣΤΡΟΦΗ;
}

παγκόσμιο $ user_id;

// Ο χρήστης δεν μπορεί να απενεργοποιηθεί
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> Αναγνωριστικό;
εάν ($ current_user_id == $ user_id) {
ΕΠΙΣΤΡΟΦΗ;
}

// Ελέγξτε εάν είναι ενεργοποιημένο
$ check = check (get_user_option ('rc_banned', $ user_id, false));

// Εμφάνιση πλαισίου ελέγχου
ηχώ '
Απαγόρευση χρήστη
"; }

Τώρα πρέπει να έχουμε τη λειτουργία που θα σώσει στη βάση δεδομένων την αξία του πλαισίου ελέγχου:

/ **
* Αποθήκευση προσαρμοσμένου πλαισίου ελέγχου
*
* @ πρόσβαση στο κοινό
* @since 1.0
* @ return void
* /
συνάρτηση rc_edit_user_profile_update () {

εάν (! current_user_can ('edit_users')) {
ΕΠΙΣΤΡΟΦΗ;
}

παγκόσμιο $ user_id;

// Ο χρήστης δεν μπορεί να απενεργοποιηθεί
$ current_user = wp_get_current_user ();
$ current_user_id = $ current_user-> Αναγνωριστικό;
εάν ($ current_user_id == $ user_id) {
ΕΠΙΣΤΡΟΦΗ;
}

// Κλείδωμα
if (isset ($ _POST ['rc_ban']) && $ _POST ['rc_ban'] = 'on') {
rc_ban_user ($ user_id);
} αλλιώς {// Ξεκλείδωμα
rc_unban_user ($ user_id);
}

}

Όπως μπορείτε να δείτε, αυτή η νέα λειτουργία χρησιμοποιεί δύο άλλες λειτουργίες: rc_ban_users () και rc_unban_users (). Τα ονόματά τους είναι αρκετά ρητά, το πρώτο θα αποθηκεύσει στη βάση δεδομένων το γεγονός ότι ένας χρήστης απαγορεύει, το δεύτερο θα ξεκλειδώσει τους χρήστες.

Βήμα 3: Απαγόρευση χρηστών

Ήρθε η ώρα να δημιουργήσετε τη συνάρτηση rc_ban_users (). Σε αυτήν τη συνάρτηση πρέπει να ελέγξουμε εάν μια τιμή έχει ήδη αποθηκευτεί και αν όχι πρέπει να αποθηκεύσουμε την τιμή. Αυτός είναι ο λόγος για τον οποίο ονομάζω μια συνάρτηση που θα περιγράψω αργότερα: rc_is_user_banned ():

/ **
* Απαγόρευση χρήστη
*
* @ πρόσβαση στο κοινό
* @since 1.0
* @ return void
* /
συνάρτηση rc_ban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Ενημέρωση κατάστασης
αν (! $ old_status) {
update_user_option ($ user_id, 'rc_banned', true, false);
}
}

Βήμα 4: Κατάργηση αποκλεισμού χρηστών

Η ακόλουθη συνάρτηση είναι το αντίθετο με αυτήν που μόλις δημιουργήσαμε: πρέπει να δώσουμε τη δυνατότητα στους χρήστες να «καταργήσουν την απαγόρευση»:

/ **
* Κατάργηση αποκλεισμού χρήστη
*
* @ πρόσβαση στο κοινό
* @since 1.0
* @ return void
* /
συνάρτηση rc_unban_user ($ user_id) {

$ old_status = rc_is_user_banned ($ user_id);

// Ενημέρωση κατάστασης
εάν ($ old_status) {
update_user_option ($ user_id, 'rc_banned', false, false);
}
}

Βήμα 5: Απαγορεύεται ο χρήστης?

Είδαμε στους rc_ban_users () και rc_unban_users () ότι χρησιμοποιούμε μια συνάρτηση που ονομάζεται rc_is_user_banned () για να ελέγξουμε εάν ένας χρήστης έχει απαγορευτεί ή όχι. Ας το δημιουργήσουμε:

/ **
* Ελέγχει εάν ένας χρήστης έχει ήδη απαγορευτεί
*
* @ πρόσβαση στο κοινό
* @since 1.0
* @ return void
* /
συνάρτηση rc_is_user_banned ($ user_id) {
επιστροφή get_user_option ('rc_banned', $ user_id, false);
}

Βασικά, αυτή η συνάρτηση επιστρέφει απλώς την τιμή της επιλογής που έχει αποθηκευτεί στο rc_ban_users ().

Προς το παρόν έχουμε ένα νέο πλαίσιο ελέγχου στη σελίδα έκδοσης χρήστη που θα ήθελε αυτό:

ban_users_1

Το τελευταίο βήμα είναι να συνδέσετε μια συνάρτηση με τη φόρμα σύνδεσης για να αποφύγετε την απαγόρευση σύνδεσης των χρηστών.

Βήμα 5: Αποφύγετε την απαγόρευση σύνδεσης χρηστών

Για να το κάνουμε αυτό, πρέπει να χρησιμοποιήσουμε ένα προεπιλεγμένο φίλτρο WordPress που ονομάζεται "wp_authenticate_user". Σε αυτό το φίλτρο θα συνδέσουμε μια λειτουργία που ονομάζεται "rc_authenticate_user ()". Αυτή η συνάρτηση θα χρησιμοποιήσει το WP_Error τάξη.

/ **
* Ελέγξτε εάν ο χρήστης είναι κλειδωμένος κατά τη διαδικασία σύνδεσης
*
* @ πρόσβαση στο κοινό
* @since 1.0
* @ return void
* /
συνάρτηση rc_authenticate_user ($ user) {

εάν (is_wp_error ($ χρήστης)) {
επιστροφή χρηστών $;
}

// Σφάλμα επιστροφής εάν ο λογαριασμός χρήστη έχει αποκλειστεί
$ ban = get_user_option ('rc_banned', $ user-> ID, false);
εάν ($ απαγορευμένο) {
επιστροφή νέου WP_Error ('rc_banned', __ ('ΛΑΘΟΣ: Αυτός ο λογαριασμός χρήστη είναι απενεργοποιημένος. ',' Rc '));
}

επιστροφή χρηστών $;
}

Τώρα, πρέπει απλώς να προσθέσουμε το φίλτρο:

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

συμπέρασμα

Δημιουργήσαμε μια προσθήκη που προσθέτει ένα πλαίσιο ελέγχου στη σελίδα έκδοσης προφίλ χρήστη. Χρησιμοποιήσαμε μια δεύτερη συνάρτηση για να αποθηκεύσουμε την τιμή στο πλαίσιο ελέγχου και δημιουργούμε μια συνάρτηση για την απαγόρευση ενός χρήστη του WordPress και μια άλλη για το ξεκλείδωμα ενός χρήστη. Δημιουργήσαμε επίσης μια μικρή λειτουργία για να ελέγξουμε εάν ένας χρήστης έχει απαγορευτεί ή όχι. Και επιτέλους συνδέσαμε μια λειτουργία στο φίλτρο "wp_authenticate_user" χρησιμοποιώντας την προεπιλεγμένη κλάση WP_Error WordPress.

Αν σας άρεσε αυτό το σεμινάριο, θα λατρέψετε την premium έκδοση αυτής της προσθήκης: Χρήστες Πρόσβαση Διαχειριστής.

Κατεβάστε τον πλήρη κώδικα στο 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