问题描述
每当发布页面或帖子时,有没有办法让 WordPress 发邮件给我?
最佳解决方案
有一个 few plugins that handle email notifications,但它们似乎都像一个 WordPress 用户的订阅服务。
要在发布信息或页面时通知您:
/**
* Send an email notification to the administrator when a post is published.
*
* @param string $new_status
* @param string $old_status
* @param object $post
*/
function wpse_19040_notify_admin_on_publish( $new_status, $old_status, $post ) {
if ( $new_status !== 'publish' || $old_status === 'publish' )
return;
if ( ! $post_type = get_post_type_object( $post->post_type ) )
return;
// Recipient, in this case the administrator email
$emailto = get_option( 'admin_email' );
// Email subject, "New {post_type_label}"
$subject = 'New ' . $post_type->labels->singular_name;
// Email body
$message = 'View it: ' . get_permalink( $post->ID ) . "nEdit it: " . get_edit_post_link( $post->ID );
wp_mail( $emailto, $subject, $message );
}
add_action( 'transition_post_status', 'wpse_19040_notify_admin_on_publish', 10, 3 );
您可以将其放在主题的 functions.php
中,也可以将其保存为插件 (可能更适合,因为它不是完全相同的’theme’) 。
次佳解决方案
沙 – 它回答了这个问题,提出了所有情况下发布的解决方案不起作用的知识。
24 小时后,我可以更新我所贡献的知识。该位置的解决方案 (Notify admin when page is edited?) 适用于上述解决方案没有的服务器。引用线程与在两个上下文中更好的解决方案我尝试:
来自 wpcodex 的原始脚本工作正常:
add_action( 'save_post', 'my_project_updated_send_email' );
function my_project_updated_send_email( $post_id ) {
//verify post is not a revision
if ( !wp_is_post_revision( $post_id ) ) {
$post_title = get_the_title( $post_id );
$post_url = get_permalink( $post_id );
$subject = 'A post has been updated';
$message = "A post has been updated on your website:nn";
$message .= "<a href='". $post_url. "'>" .$post_title. "</a>nn";
//send email to admin
wp_mail( get_option( 'admin_email' ), $subject, $message );
}
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。