-
-
Save fdaciuk/4574393 to your computer and use it in GitHub Desktop.
<?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 ); | |
?> |
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.
Valeu Gustavo (@webord), boa dica! Fiz uma melhoria também que o Manoel Netto postou no blog Tudo para WordPress o/
Dica do GugaAlves: adicionar o link do post no admin para facilitar o acesso..
Adiciona ai :P
Foi mal Guga (@tudoparawp).. não poderia esquecer de creditar essa dicas o/
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()
Bem mais limpo.. valeu @webord! :)
$email = get_option( 'admin_email' );
a parte do 'admin_email' eu coloca um email qualquer
@abraao2012, você pode trocar toda a função pelo seu email:
$email = '[email protected]';
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 );
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 =/
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.
Muito bom o artigo, obrigado pela dica.
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';});