Adicionar item de ação à tabela de usuários de administração e envio de email

Estou tentando adicionar um link para cada item da tabela Usuários na área WP Admin e use esse link para enviar esse usuário específico para um e-mail. Estou na maior parte do caminho, mas estou tendo algum comportamento estranho que não consigo descobrir. Aqui está o meu código: (Eu descrevo meus problemas abaixo disso)

// Adds "Send rejection email" action to Users page function jm_send_rejection_link($actions, $user_object) { if( ($_POST['send']) && ($_POST['email-address'] == $user_object->user_email) ) { $sendto = $_POST['email-address']; $sendsub = "Your registration has been rejected."; $sendmess = "Sorry! Your registration has been rejected. I guess someone doesn't like you."; $headers = array('From: The Company '); wp_mail($sendto, $sendsub, $sendmess, $headers); echo ''; } $actions['send_rejection'] = "
user_email . "' />
"; return $actions; } add_filter('user_row_actions', 'jm_send_rejection_link', 10, 2);

Então, este código adiciona o link de ação “Enviar e-mail de rejeição” para cada usuário na tabela. Ele também envia o e-mail … às vezes. Para o primeiro usuário na tabela, parece falhar e também adiciona algumas coisas inesperadas ao URL:

 http://sampledomain.org/wp-admin/users.php?s&action=-1&new_role&paged=1&email-address=emailaddress%sampledomain.com&send=Send+Rejection&action2=-1&new_role2 

Também não mostra a mensagem de sucesso neste caso.

Para um número de outros usuários, ele exibe com sucesso a mensagem de sucesso e envia o email. No entanto, não para todos os outros usuários. Os outros usuários exibem a mensagem de sucesso, mas não recebem o email. É possível que essas contas estejam apenas pegando o email em um firewall ou algo assim, embora não apareça no spam.

Estou mais preocupado com o que estou fazendo errado que está causando o problema com o primeiro usuário. Alguma ideia?

PS – Eu reconheço que a minha declaração IF lá é um pouco estranha. Eu acho que porque estou adicionando isso para user_row_actions está sendo executado para cada usuário na tabela, e é por isso que estou fazendo esse e-mail enviar apenas para o usuário cujo email corresponde ao endereço postado. Um pouco para trás, eu sei. Se eu deveria dividir essas funções em duas funções diferentes, todos os conselhos sobre como executar essa segunda function na página do usuário sem serem executados para cada usuário seriam muito apreciados.

Solutions Collecting From Web of "Adicionar item de ação à tabela de usuários de administração e envio de email"

Obrigado por essa orientação, mmm. Isso foi útil. Resolvi o problema desta forma:

 // Adds "Send rejection email" action to Users page function jm_send_rejection_link($actions, $user_object) { if( ($_GET['action'] == 'jm_send_rejection') && ($_GET['user'] == $user_object->user_email) ) { $sendto = $_GET['user']; $sendsub = "Your registration has been rejected."; $sendmess = "Your registration for has been rejected."; $headers = array('From: The Company '); wp_mail($sendto, $sendsub, $sendmess, $headers); echo '

Success! The rejection email has been sent to ' . $_GET['user'] . '.

'; } $actions['send_rejection'] = "" . __( 'Send Rejection' ) . ""; return $actions; } add_filter('user_row_actions', 'jm_send_rejection_link', 10, 2);

Isso definitivamente corrigiu o problema que eu estava tendo com o primeiro usuário na lista. Não resolveu o problema com a outra conta que não recebeu e-mails, mas tenho 90% de certeza de que isso tem algo a ver com as configurações do servidor de e-mail dessa conta, e não com o meu código.