Ștergerea utilizatorilor din interfața frontală cu wp_delete_user()
Doresc ca administratorii să poată șterge utilizatori din interfața frontală prin simpla apăsare a unui buton. Cum aș putea utiliza funcția wp_delete_users() pentru a crea un astfel de buton în interfața frontală dacă ID-ul utilizatorului este furnizat?

Răspunsul de mai sus conține o eroare și o omisiune (nu sunt sigur de ce are 4 verificări)
1) int_val
nu este o funcție WordPress, intval
este funcția corectă
2) Este necesar să include("./wp-admin/includes/user.php" )
pentru a putea apela wp_delete_user
Am vrut să șterg utilizatori fără a accesa panoul de administrare - Iată soluția funcțională:
add_action('init','prefix_delete_user');
function prefix_delete_user() {
if(isset($_REQUEST['action']) && $_REQUEST['action']=='prefix_delete_user') {
include("./wp-admin/includes/user.php" );
//verifică permisiunile de administrator
if (current_user_can('edit_users')) {
$user_id = intval($_REQUEST['user_id']);
wp_delete_user($user_id);
exit();
}
}
}
Acțiunea se declanșează când accesezi acest URL:
http://website.com/?action=prefix_delete_user&user_id=<ID>
Adaugă în fișierul functions.php

Puteți utiliza AJAX pentru a solicita o acțiune personalizată și a trimite ID-ul utilizatorului. Alternativ, puteți trimite prin 'POST' acțiunea și ID-ul utilizatorului către aceeași pagină. Ambele metode sunt în esență la fel, dar prima nu necesită reîncărcarea paginii.
Există numeroase subiecte pe acest site care tratează AJAX, așa că voi omite detaliile (verificați eticheta ajax pentru mai multe informații).
În orice caz, doriți să setați acțiunea la 'myprefix_delete_user', și 'user_id' la ID-ul utilizatorului corespunzător.
Metoda Ajax
Trimiterea unei cereri AJAX cu acțiunea 'myprefix_delete_user' va declanșa următoarele hook-uri:
wp_ajax_myprefix_delete_user
- dacă sunteți autentificatwp_ajax_nopriv_myprefix_delete_user
- dacă nu sunteți autentificat
Vrem să acționăm doar dacă suntem autentificați, așa că atașăm un callback doar primului hook:
add_action('wp_ajax_myprefix_delete_user','myprefix_delete_user_cb');
function myprefix_delete_user_cb(){
//Aici ar trebui să verificați nonce-urile și permisiunile utilizatorului.
$user_id = int_val($_REQUEST['user_id']);
wp_delete_user($user_id);
exit();
}
Metoda 'POST/GET'
(nu eram sigur cum să numesc această metodă...). Funcționează în mare parte la fel. Din nou, trimiteți prin 'POST' variabilele de acțiune și user_id. Puteți face asta construind un link:
$user_id=9 //ID-ul utilizatorului care va fi șters.
$url = add_query_arg(array('action'=>'myprefix_delete_user', 'user_id'=>$user_id));
echo "<a href='".$url. "'>Șterge Utilizator</a>";
Aceasta 'trimite' (nu chiar) datele către pagina curentă. Apoi, dacă acțiunea este setată, atașați un hook la 'init
':
if(isset($_REQUEST['action']) && $_REQUEST['action']=='myprefix_delete_user')
add_action('init','myprefix_delete_user_cb');
Aceeași funcție callback poate fi utilizată, cu următoarele modificări:
- Eliminați
exit();
- S-ar putea să doriți să folosiți
wp_redirect
pentru a redirecționa înapoi către aceeași pagină. Prin redirecționare, dacă un utilizator apasă refresh, nu se va încerca ștergerea din nou.
Notă, nu am efectuat nicio verificare de nonce sau permisiuni. Chiar ar trebui să faceți asta. Ultima este o simplă verificare cu current_user_can
. Cum faceți prima va depinde de metoda aleasă, dar vă încurajez să citiți aceasta.
Această întrebare este similară și vă poate ajuta:
