Trước kia tôi có một ý tưởng là tại sao không gửi email chào mừng những bạn lần đầu tiên comment trên trang của mình, làm như vậy có phải sẽ rất tuyệt và đoàn kết hay sao, ngoài ra họ còn có cái cảm giác được liên hệ với một cái blog sống tinh tươm và chuẩn mực 😀 chứ không phải một cái blog chết. Vậy là mình ngồi hí hoáy.
Tôi vào trong codex, tìm thấy hàm preprocess_comment, đây là nơi xử lý các thông tin thô để ghi vào cơ sở dữ liệu, thực tình là phải nghĩ cả kế chống SPAM, nhưng hàm này chưa được Akismet xử lý nên mỗi ngày tôi gửi hơn 100 cái thư vào hòm thư rác của bọn SPAM tặc.
//comment_author_email
function EmailCommentFirstTime( $comment ) {
global $wpdb;
$email = $comment['comment_author_email'];
$ck = $wpdb->get_var(sprintf('select * from %s where comment_author_email = \'%s\' LIMIT 1', $wpdb->comments, $email));
if ( ! $ck ) {
$message = sprintf('
<p>Xin chào <strong>%s</strong> !</p>
<p>Tôi thấy rằng bạn đã thú vị khi ghé thăm blog Jam Việt và vừa để lại nhận xét, cũng có thể đây là lần đầu tiên bạn để lại một nhận xét trên blog cá nhân của tôi, cho dù nó có được duyệt hay không thì cũng cảm ơn bạn đã ghé thăm.</p>
<p>Ở trên blog có rất nhiều các thông tin hấp dẫn và vui vẻ, mang tính giải trí rất cao, nên tôi sẽ cảm thấy rất vui nếu bạn thường xuyên ghé qua và để lại nhận xét/góp ý cho các thông tin đăng tải.</p>
<p>Cảm ơn và chúc vui vẻ !</p>
<p><i>Email này được gửi cho bạn một cách tự động, và chỉ lần đầu tiên bạn tham gia nhận xét cho bài đăng</i></p>
<p>(Jam Việt - https://www.jamviet.com)</p>
', $comment['comment_author']);
wp_mail( $email, 'Chào mừng bạn đến với blog Jam Việt', $message);
}
return $comment;
}
add_action( 'preprocess_comment' , 'EmailCommentFirstTime');
Đầu tiên là phải lấy được email của người comment, sau đó kiểm tra trong cơ sở dữ liệu xem có dữ liệu chưa, nếu chưa có thì người này mới comment cái đầu tiên, nên tôi sẽ gửi email.
Nếu các bạn cũng muốn làm như vậy thì có thể copy hàm này, thả vào trong file functions.php và chỉnh sửa lại đi một chút nhé.
Update: Do một số bạn gửi mail hiện lên toàn mã html mà không thể nào hiển thị theo ý thích của mình được, đó là do hàm mail trong WordPress luôn gửi dưới dạng text chứ không phải HTML, các bạn thêm hàm sau vào đầu file funtions.php nhé:
add_filter('wp_mail_content_type',create_function('', 'return "text/html";'));
Chúc các bạn thành công !
Copy hàm này, thả vào trong file functions.php thế là lỗi luôn . Đã test 😀
Bạn thử xem nó báo lỗi gì ? Chắc copy thả vào lệch chỗ, hoặc do mình thừa thiếu dấu nào đó, xem lỗi nó là gì ?
Chắc là thiếu dấu chấm hay dấu phẩy gì đấy nên lỗi thôi. Mà anh jam hướng dẫn tiếp phần tích hợp cái Plugin ReplyMe vào theme đi.
Bạn chỉ cần copy hết toàn bộ code, hoặc từ trong file functions.php bạn dùng lệnh Include cái file plugin vào thôi mà !
E mới thêm vô đoạn code trên, giờ test thử xem thế nào 😀
Làm mãi mà không được anh jam à. Nó báo lỗi ở dòng này $ck = $wpdb->get_var(sprintf(‘select * from %s where comment_author_email = ‘%s’ LIMIT 1′, $wpdb->comments, $email));
Bạn thử sửa lại dấy phẩy xem sao nhé:
$ck = $wpdb->get_var(sprintf('select * from %s where comment_author_email = %s LIMIT 1', $wpdb->comments, $email));Anh jam xem đoạn code này bị lỗi ở đâu không mà em làm mãi không được rồi gửi đoạn code này vào mail em luôn cái nhé. Em cám ơn anh nhiều.
Bạn nên paste cái thông báo ra mình đọc cái hiểu ngay 😀
Được rồi anh jam ơi, thừa dấu ‘ . Cám ơn anh jam nhiều nhá nhưng giờ em muốn thay đổi email mặc định wordpress@sitecuaem.com thì thay ở đâu hả anh?
Cái Code của bạn bị lỗi gì mà nó hiện gì đầy nè !
http://i.imgur.com/tUSEzDq.png
Không phải lỗi, mà do thiếu một hàm hook vào phần gửi email. bạn đọc lại bài viết, mình vừa update lại hàm đó trong bài viết, sorry vì đăng thiếu hàm !
Chỉ thêm thêm một đoạn cuối là được phải không anh jam. Còn sửa cái email mặc định ở ở đâu hả anh jam?
https://www.jamviet.com/2014/11/chinh-sua-ten-nguoi-gui-va-email-nguoi-gui-trong-wordpress.html
Ngon chưa !
jam ơi cho mình hỏi, khi chèn đường dẫn của ảnh sản phẩm thay thế cái có sẵn trong template, nó có lỗi không hiển thị được, mình không hiểu.
mình trước khi chèn đã lấy cả đường dẫn hình ra xem thử cái ảnh có chuẩn không. đúng hình đúng chỗ mới chèn vào. nhưng không dc
Có thể chỉ giáo được không, thanks.
Mình chưa thử, nhưng có thể do Gmail chặn ảnh ngoài, hoặc do lý do nào đó, để bữa mình thử thì tính nha !