Oi @linaldobnascimento,
Qual é o plugin que você está usando para modificar a página de acesso ao painel? Ele altera o endereço da página de login somente ou de tudo o que está no painel?
Olá Felipe, obrigado pelo retrno!
O plugin é este: https://br.wordpress.org/plugins/wps-hide-login/
Altera apenas o endereço da página de login… após a entrada os caminhos ficam padrão com “wp-admin”.
Oi @linaldobnascimento,
Acho que não entendi o seu problema então, desculpa. O link que vai no e-mail já é de uma interna do Painel e não o da página de login, certo?
O erro é no redirecionamento então? Quando tenta acessar o painel e não está logado você acaba indo para o link do login “normal”? Sem estar logado, quando você tenta acessar nomedosite/wp-admin/plugins.php você também vai para o login “normal”?
Olá Felipe, vamos lá, vou tentar explicar detalhado:
Se não utilizar o plugin WPS Hide Login para modificar o caminho padrão de login do Painel Admin, tudo certo, clico no link que vai no email de aviso de comentário para moderar (estando conectado ou não) e beleza!
Problema é que o plugin muda, no caminho do link da página de login da administração, o wp-admin por um outro qualquer que personalizo… se eu estiver conectado na administração do site tudo bem; porém se eu estiver desconectado (que é o ideal, pois vou delegar esta função); como o link que vai no email é com o caminho padrão utilizando o wp-admin, dá página não encontrada 404 pois primeiro preciso logar na conta para acessar as páginas de moderação.
Detalhe: O plugin modifica apenas o endereço da página de login; depois de entrar as páginas continuam com o wp-admin no caminho.
Em último caso gostaria ao menos de identificar onde vão os endereços destes links no email para modificar manualmente… mas gostaria mesmo de uma alternativa sem alterar os arquivos do wordpress, devido as atualizações! Estou testando neste site, pois tenho mais nove esperando uma alternativa que me atenda!
Obrigado pela atenção!
Oi @linaldobnascimento,
A função que envia o link é a wp_notify_moderator(). A partir da linha 1665 ele faz um monte de chamadas para a função admin_url() para montar o endereço da página de aprovação do comentário no Painel.
Para não alterar o código-fonte do WordPress, você pode usar o filtro comment_moderation_text para alterar o texto do e-mail e trocar (pode ser por regex mesmo) todas as URLs do painel para a sua URL de login personalizado. Só tome cuidado nessa transformação porque você terá que explicar o caminho que o leitor do e-mail deverá percorrer no Painel para a aprovação do comentário, já que ao invés da URL direta você vai passar só a de login.
Você poderia sobrescrever o corpo do e-mail completamente também, com um código mais ou menos assim (não cheguei a testar):
/**
* Função para alterar o corpo do e-mail enviado quando tem comentário novo.
* @param string $notify_message Texto original do e-mail.
* @param int $comment_id ID do comentário.
* @return string Texto alterado do e-mail
*/
function wpbr_78485_comment_moderation_text( $notify_message, $comment_id ) {
$notify_message = 'Existe um comentário novo esperando aprovação.
Conecte-se pelo endereço http://dominio.com/login-personalizado e
depois acesse' . admin_url( "comment.php?action=editcomment&c={$comment_id}" ) .
'para aprová-lo, exclui-lo ou marcá-lo como spam';
return $notify_message;
}
add_filter( 'comment_moderation_text', 'wpbr_78485_comment_moderation_text', 10, 2 );
A função get_admin_url usa o filtro admin_url, que te permitiria alterar esses links para o painel, mas como não é possível saber se o usuário estará ou não logado na hora em que ele ler o e-mail, acho que não vai funcionar.
Não esqueça de voltar para contar como resolveu e, se for o caso, para marcar seu tópico como resolvido.