Excluindo usuários do front-end com wp_delete_user ()

Gostaria que os administradores pudessem excluir usuários do frontend com o clique de um botão. Como eu poderia usar a function wp_delete_users () para criar um desses botões no frontend se o ID do usuário for fornecido?

Solutions Collecting From Web of "Excluindo usuários do front-end com wp_delete_user ()"

Você pode usar o AJAX para solicitar uma “ação” personalizada e enviar a ID dos usuários. Alternativamente, “publique” a ação e o ID do usuário para a mesma página. Ambos são essencialmente a mesma coisa, mas o primeiro não exige que a página seja recarregada.

Há muitos tópicos neste site que lidam com AJAX, então eu omitirei os detalhes (veja a tag ajax para obter mais informações).

De qualquer forma, você deseja configurar a ação ‘myprefix_delete_user’ e ‘user_id’ para a ID do usuário apropriado.

Método Ajax

Enviar uma solicitação ajax com ação ‘myprefix_delete_user’ triggersrá os ganchos:

  • wp_ajax_myprefix_delete_user – se você estiver logado
  • wp_ajax_nopriv_myprefix_delete_user – se você estiver desconectado

Nós só queremos fazer algo se estiver logado, então nós atribuímos um retorno de chamada apenas ao primeiro gancho:

 add_action('wp_ajax_myprefix_delete_user','myprefix_delete_user_cb'); function myprefix_delete_user_cb(){ //You should check nonces and user permissions at this point. $user_id = int_val($_REQUEST['user_id']); wp_delete_user($user_id); exit(); } 

Método ‘POST / GET’

(não tinha certeza do que chamar esse método …). Funciona da mesma maneira. Você novamente ‘publicar’ as variables ​​de ação e user_id. Você pode fazer isso construindo um link:

 $user_id=9 //ID of the user to be deleted. $url = add_query_arg(array('action'=>'myprefix_delete_user', 'user_id'=>$user_id)); echo "Delete User"; 

Este “publica” ( não bastante ) os dados para a página atual. Em seguida, você liga a ‘ init ‘ se a ação estiver definida:

 if(isset($_REQUEST['action']) && $_REQUEST['action']=='myprefix_delete_user') add_action('init','myprefix_delete_user_cb'); 

A mesma function de retorno de chamada pode ser usada, com as seguintes alterações:

  • Remova a exit();
  • Você pode usar wp_redirect para redirect de volta para a mesma página. Ao redirect, se um usuário clicar em atualizar, ele não tenta re-executar a exclusão.

Tenho em atenção que não realizei nenhuma verificação de permissão ou não . Você realmente deve fazer isso. Mais tarde é uma simples verificação current_user_can . Como você faz, o primeiro dependerá de qual método, mas eu encorajo você a ler isso .

Esta questão é amplamente similar e pode ajudar:

  • Modificar o botão de exclusão frontal para publicar mensagens pendentes

A resposta acima possui um erro e uma omissão (não sabe por que tem 4 cheques)

1) int_val não uma function WP intval é uma function WP

2) Você precisa include("./wp-admin/includes/user.php" ) para ligar para wp_delete_user

Eu queria excluir usuários sem entrar no painel de administração – Aqui está a solução de código de trabalho:

 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" ); //check admin permissions. if (current_user_can('edit_users')) { $user_id = intval($_REQUEST['user_id']); wp_delete_user($user_id); exit(); } } } 

Ação acontece quando você publica isso

 http://website.com/?action=prefix_delete_user&user_id= 

Adicione às suas funções.php