Skip to content

Instantly share code, notes, and snippets.

@fdaciuk
Last active May 12, 2020 23:43
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save fdaciuk/4574393 to your computer and use it in GitHub Desktop.
Save fdaciuk/4574393 to your computer and use it in GitHub Desktop.
Envia um e-mail para o administrador do site/blog se houver algum post para revisão. PS.: Configurar a conta que receberá o e-mail na variável $email. Por padrão, está configurado o e-mail do administrador do blog.
<?php
/*
Enviar e-mail para o administrador se houver posts para revisão
Dicas do @GugaAlves (@tudoparawp):
- Adicionar link para enviar e-mail diretamente para o administrador;
- Incluir link para a edição do post no admin, facilitando a vida do admin que receber este email.
Dicas do Gustavo Bordoni (@webord):
- incluir na função o $post (objeto para WP_Query) para não ficar passando o $post_id a cada save;
- Passar os parâmetros direto para a função admin_url() ao invés de concatenar.
Dica do Manoel Netto: Incluir a verificação "! wp_is_post_revision( $post )" para não enviar e-mail a cada auto save.
*/
function send_mail_post_pending( $post_id, $post ) {
$post_status = get_post_status( $post );
if( $post_status === 'pending' && ! wp_is_post_revision( $post ) ) {
$email = get_option( 'admin_email' );
$subject = '[REVISAR NOVO POST] ' . get_the_title( $post );
$message = 'Existe um novo post para revisão: ' . get_the_title( $post ) . "\n\n";
$message .= 'Revisar o post: ' . admin_url( "post.php?post={$post_id}&action=edit" );
wp_mail( $email, $subject, $message );
}
}
add_action( 'save_post', 'send_mail_post_pending', 10, 2 );
?>
@bordoni
Copy link

bordoni commented Jan 19, 2013

Vale lembrar que caso queira utilizar HTML no email, tem que passar o filtro para o wp_mail.
add_filter('wp_mail_content_type',function() {return 'text/html';});

@bordoni
Copy link

bordoni commented Jan 19, 2013

Fiz uma alteraçãozinha, para só pegar infos do banco caso seja pending e uma parada para não ter que rodar o get_post() denovo, já que ele é passado no filtro.

@fdaciuk
Copy link
Author

fdaciuk commented Jan 19, 2013

Valeu Gustavo (@webord), boa dica! Fiz uma melhoria também que o Manoel Netto postou no blog Tudo para WordPress o/

@gugaalves
Copy link

Dica do GugaAlves: adicionar o link do post no admin para facilitar o acesso..
Adiciona ai :P

@fdaciuk
Copy link
Author

fdaciuk commented Jan 20, 2013

Foi mal Guga (@tudoparawp).. não poderia esquecer de creditar essa dicas o/

@bordoni
Copy link

bordoni commented Jan 21, 2013

Se pode passar o path dentro da função, não precisa concatenar:

admin_url("post.php?post={$post_id}&action=edit");

Assim como você pode passar ao invéz do $post_id no get_the_title() passar o objeto $post, tal qual na função get_post_status()

@fdaciuk
Copy link
Author

fdaciuk commented Jan 21, 2013

Bem mais limpo.. valeu @webord! :)

@abraao2012
Copy link

$email = get_option( 'admin_email' );
a parte do 'admin_email' eu coloca um email qualquer

@fdaciuk
Copy link
Author

fdaciuk commented Nov 21, 2013

@abraao2012, você pode trocar toda a função pelo seu email:
$email = 'seu@email.com';

@mauriciogofas
Copy link

Legal!
E se eu quiser incluir no email outros elementos do post? Como o autor, resumo, etc.

Seria algo parecido com isto?:

$message = 'Título: ' . get_the_title( $post ) . "\n\n";
$message = 'Autor: ' . get_the_author( $author );

@fdaciuk
Copy link
Author

fdaciuk commented Jul 8, 2014

Isso mesmo @gofas, mas precisa concatenar com a variável $message, usando o ponto :)

PS.: Desculpe a demora em responder.. o gist não manda notificação de novas mensagens =/

@corrija
Copy link

corrija commented Oct 15, 2015

Fala pessoal.
Gostei muito do código e já até fiz uso do mesmo com sucesso.
Mas eu queria saber o seguinte:
eu tenho um "shortcode" que mostra os valores de um campo personalizado no wordpress, porém eu não consigo jogar esse valor dentro da variavel $email do código de vocês.
A idéia é pegar o email que esta cadastrado neste campo do post e quando atualizar o post, enviar o email.
Caso alguém saiba como jogar este valor do shortcode dentro da variável $email, serei muito grato.
Obrigado pelo código.

@tihhgoncalves
Copy link

Muito bom o artigo, obrigado pela dica.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment