wordpress创建自定义后台评论,并且发送邮件

2018-09-30 1,278 0

由于客户需要定义一个举报系统,所以我就使用了wordpress自带的评论系统进行修改。是后台能够显示用户想要的字段。后台显示效果如下:

含有填写人的姓名,内容(评论),电话,身份证,地址。当然这些都用js检验。

前台的页面如下所示:

将表单填写完成后,进行提交。然后就能在后台进行显示。在页面处引用评论的模板。

<?php comments_template(); ?>

然后在functions.php中引用自定义的后台字段:

require_once( TEMPLATEPATH . '/inc/comment_custom.php' );

然后在相应的文件夹下面进行comment_custom.php的编写:

  1. <?php
  2. /**
  3. *添加评论自定义评论字段
  4. *
  5. */
  6. add_filter('comment_form_default_fields','comment_form_add_tel');
  7. function comment_form_add_tel($fields) {
  8. $label = __( '电话' );
  9. $value = isset($_POST['tel']) ? $_POST['tel'] : false;
  10. $fields['tel'] =<<<HTML
  11. <p class="comment-form-tel">
  12. <label for="tel">{$label}</label>
  13. <input id="tel" name="tel" type="text" value="{$value}" size="30" />
  14. </p>
  15. HTML;
  16. return $fields;
  17. }
  18. add_filter('comment_form_default_fields','comment_form_add_sfz');
  19. function comment_form_add_sfz($fields) {
  20. $label = __( '身份证' );
  21. $value = isset($_POST['sfz']) ? $_POST['sfz'] : false;
  22. $fields['sfz'] =<<<HTML
  23. <p class="comment-form-sfz">
  24. <label for="sfz">{$label}</label>
  25. <input id="sfz" name="sfz" type="text" value="{$value}" size="30" />
  26. </p>
  27. HTML;
  28. return $fields;
  29. }
  30. add_filter('comment_form_default_fields','comment_form_add_dz');
  31. function comment_form_add_dz($fields) {
  32. $label = __( '地址' );
  33. $value = isset($_POST['dz']) ? $_POST['dz'] : false;
  34. $fields['dz'] =<<<HTML
  35. <p class="comment-form-dz">
  36. <label for="dz">{$label}</label>
  37. <input id="dz" name="dz" type="text" value="{$value}" size="30" />
  38. </p>
  39. HTML;
  40. return $fields;
  41. }
  42. add_filter('comment_form_default_fields','comment_form_add_yb');
  43. function comment_form_add_yb($fields) {
  44. $label = __( '邮编' );
  45. $value = isset($_POST['yb']) ? $_POST['yb'] : false;
  46. $fields['yb'] =<<<HTML
  47. <p class="comment-form-yb">
  48. <label for="yb">{$label}</label>
  49. <input id="yb" name="yb" type="text" value="{$value}" size="30" />
  50. </p>
  51. HTML;
  52. return $fields;
  53. }
  54. /**
  55. *添加评论自定义评论字段写入数据库
  56. *
  57. */
  58. add_action('wp_insert_comment','wp_insert_tel',10,2);
  59. function wp_insert_tel($comment_ID,$commmentdata) {
  60. $tel = isset($_POST['tel']) ? $_POST['tel'] : false;
  61. update_comment_meta($comment_ID,'_tel',$tel);
  62. }
  63. add_action('wp_insert_comment','wp_insert_sfz',10,2);
  64. function wp_insert_sfz($comment_ID,$commmentdata) {
  65. $sfz = isset($_POST['sfz']) ? $_POST['sfz'] : false;
  66. update_comment_meta($comment_ID,'_sfz',$sfz);
  67. }
  68. add_action('wp_insert_comment','wp_insert_dz',10,2);
  69. function wp_insert_dz($comment_ID,$commmentdata) {
  70. $dz = isset($_POST['dz']) ? $_POST['dz'] : false;
  71. update_comment_meta($comment_ID,'_dz',$dz);
  72. }
  73. add_action('wp_insert_comment','wp_insert_yb',10,2);
  74. function wp_insert_yb($comment_ID,$commmentdata) {
  75. $yb = isset($_POST['yb']) ? $_POST['yb'] : false;
  76. update_comment_meta($comment_ID,'_yb',$yb);
  77. }
  78. /**
  79. *后台管理页面显示自定义字段
  80. *
  81. */
  82. add_filter( 'manage_edit-comments_columns', 'my_comments_columns' );
  83. add_action( 'manage_comments_custom_column', 'output_my_comments_columns', 10, 2 );
  84. function my_comments_columns( $columns ){
  85. $columns[ '_tel' ] = __( '电话' );
  86. return $columns;
  87. }
  88. function output_my_comments_columns( $column_name, $comment_id ){
  89. switch( $column_name ){
  90. case '_tel';
  91. echo get_comment_meta( $comment_id, '_tel', true );
  92. break;
  93. }}
  94. add_filter( 'manage_edit-comments_columns', 'my_comments_columns_sfz' );
  95. add_action( 'manage_comments_custom_column', 'output_my_comments_columns_sfz', 10, 2 );
  96. function my_comments_columns_sfz( $columns ){
  97. $columns[ '_sfz' ] = __( '身份证' );
  98. return $columns;
  99. }
  100. function output_my_comments_columns_sfz( $column_name, $comment_id ){
  101. switch( $column_name ){
  102. case '_sfz';
  103. echo get_comment_meta( $comment_id, '_sfz', true );
  104. break;
  105. }}
  106. add_filter( 'manage_edit-comments_columns', 'my_comments_columns_dz' );
  107. add_action( 'manage_comments_custom_column', 'output_my_comments_columns_dz', 10, 2 );
  108. function my_comments_columns_dz( $columns ){
  109. $columns[ '_dz' ] = __( '地址' );
  110. return $columns;
  111. }
  112. function output_my_comments_columns_dz( $column_name, $comment_id ){
  113. switch( $column_name ){
  114. case '_dz';
  115. echo get_comment_meta( $comment_id, '_dz', true );
  116. break;
  117. }}
  118. add_filter( 'manage_edit-comments_columns', 'my_comments_columns_yb' );
  119. add_action( 'manage_comments_custom_column', 'output_my_comments_columns_yb', 10, 2 );
  120. function my_comments_columns_yb( $columns ){
  121. $columns[ '_yb' ] = __( '邮编' );
  122. return $columns;
  123. }
  124. function output_my_comments_columns_yb( $column_name, $comment_id ){
  125. switch( $column_name ){
  126. case '_yb';
  127. echo get_comment_meta( $comment_id, '_yb', true );
  128. break;
  129. }}
  130. /**
  131. *删除url评论字段
  132. *
  133. */
  134. add_filter('comment_form_default_fields', 'unset_url_field');
  135. function unset_url_field($fields){
  136. if(isset($fields['url']))
  137. unset($fields['url']);
  138. return $fields;
  139. }

在后台字段中添加了如上的字段。然后就是自定义评论表单的显示。我们编写comment.php文件:

  1. <?php
  2. /**
  3. * The template for displaying comments
  4. *
  5. * The area of the page that contains both current comments
  6. * and the comment form.
  7. *
  8. * @package WordPress
  9. * @subpackage Twenty_Sixteen
  10. * @since Twenty Sixteen 1.0
  11. */
  12. /*
  13. * If the current post is protected by a password and
  14. * the visitor has not yet entered the password we will
  15. * return early without loading the comments.
  16. */
  17. if ( post_password_required() ) {
  18. return;
  19. }
  20. ?>
  21. <div id="comments" class="comments-area">
  22. <?php if ( have_comments() ) : ?>
  23. <h2 class="comments-title">
  24. <?php
  25. $comments_number = get_comments_number();
  26. if ( 1 === $comments_number ) {
  27. /* translators: %s: post title */
  28. printf( _x( 'One thought on “%s”', 'comments title', 'twentysixteen' ), get_the_title() );
  29. } else {
  30. printf(
  31. /* translators: 1: number of comments, 2: post title */
  32. _nx(
  33. '%1$s thought on “%2$s”',
  34. '%1$s thoughts on “%2$s”',
  35. $comments_number,
  36. 'comments title',
  37. 'twentysixteen'
  38. ),
  39. number_format_i18n( $comments_number ),
  40. get_the_title()
  41. );
  42. }
  43. ?>
  44. </h2>
  45. <?php the_comments_navigation(); ?>
  46. <ol class="comment-list">
  47. <?php
  48. wp_list_comments( array(
  49. 'style' => 'ol',
  50. 'short_ping' => true,
  51. 'avatar_size' => 42,
  52. ) );
  53. ?>
  54. </ol><!-- .comment-list -->
  55. <?php the_comments_navigation(); ?>
  56. <?php endif; // Check for have_comments(). ?>
  57. <?php
  58. // If comments are closed and there are comments, let's leave a little note, shall we?
  59. if ( ! comments_open() && get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) :
  60. ?>
  61. <p class="no-comments"><?php _e( 'Comments are closed.', 'twentysixteen' ); ?></p>
  62. <?php endif; ?>
  63. <?php
  64. /* $args = array(
  65. 'title_reply_before' => '<h2 id="reply-title" class="comment-reply-title">',
  66. 'title_reply_after' => '</h2>',
  67. 'title_reply'=>'内容',
  68. 'label_submit' => '确认举报'
  69. );
  70. comment_form( $args );*/
  71. ?>
  72. <?php get_template_part('comment-field'); ?>
  73. </div><!-- .comments-area -->

上面的comment.php中,我们调用了comment-field.php,我们需要在编写这个文件,来显示页面中的评论表单。

  1. <div id="cancel_comment_reply"><?php //cancel_comment_reply_link() ?></div>
  2. <?php if ( get_option('comment_registration') && !$user_ID ) : ?>
  3. <p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.'), get_option('siteurl')."/wp-login.php?redirect_to=".urlencode(get_permalink()));?></p>
  4. <?php else : ?>
  5. <form class="form-horizontal" id="form-horizontal" action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform" name="commentform">
  6. <!--<p><label for="author"><?php //_e('Name'); ?> <?php //if ($req) _e('(required)'); ?></label>
  7. <input type="text" name="author" id="author" value="<?php //echo $comment_author; ?>" size="22" tabindex="1" /></p>-->
  8. <div class="col-lg-6">
  9. <div class="input-group form-group">
  10. <span class="input-group-btn">
  11. <button class="btn btn-default" type="button">姓 名   </button>
  12. </span>
  13. <input type="text" class="form-control" name="author" id="author" placeholder="输入姓名" value="<?php echo $comment_author; ?>" required data-msg-required="不能为空" data-rule-gt="true" data-gt="0">
  14. </div><!-- /input-group -->
  15. </div><!-- /.col-lg-6 -->
  16. <div class="col-lg-6">
  17. <div class="input-group form-group">
  18. <span class="input-group-btn">
  19. <button class="btn btn-default" type="button">邮 箱   </button>
  20. </span>
  21. <input type="email" value="<?php echo $comment_author_email; ?>" name="email" class="form-control" placeholder="请输入email地址" required data-rule-email="true" data-msg-required="请输入email地址" data-msg-email="请输入正确的email地址" />
  22. </div><!-- /input-group -->
  23. </div><!-- /.col-lg-6 -->
  24. <div />
  25. <div class="col-lg-6">
  26. <div class="input-group form-group">
  27. <span class="input-group-btn">
  28. <button class="btn btn-default" type="button">手机号</button>
  29. </span>
  30. <input type="tel" value="<?php echo $tel; ?>" name="tel" class="form-control" placeholder="手机号" required data-rule-tel="true" data-msg-required="请输入手机号" data-msg-tel="请输入正确格式" />
  31. </div><!-- /input-group -->
  32. </div><!-- /.col-lg-6 -->
  33. <div class="col-lg-6">
  34. <div class="input-group form-group">
  35. <span class="input-group-btn">
  36. <button class="btn btn-default" required type="button">身份证</button>
  37. </span>
  38. <input type="idCard" class="form-control" name="sfz" id="sfz" placeholder="身份证" value="<?php echo $sfz; ?>" required data-rule-idCard="true" data-msg-required="请输入身份证" data-msg-idCard="请输入正确格式" minlength="18" data-msg-minlength="至少输入正确身份证">
  39. </div><!-- /input-group -->
  40. </div><!-- /.col-lg-6 -->
  41. <div class="col-lg-6">
  42. <div class="input-group form-group">
  43. <span class="input-group-btn">
  44. <button class="btn btn-default" type="button">地 址   </button>
  45. </span>
  46. <input type="text" class="form-control" name="dz" id="dz" placeholder="输入地址" value="<?php echo $dz; ?>">
  47. </div><!-- /input-group -->
  48. </div><!-- /.col-lg-6 -->
  49. <div class="col-lg-6">
  50. <div class="input-group form-group">
  51. <span class="input-group-btn">
  52. <button class="btn btn-default" type="button">邮 编   </button>
  53. </span>
  54. <input type="text" class="form-control" name="yb" id="yb" placeholder="输入邮编" value="<?php echo $yb; ?>">
  55. </div><!-- /input-group -->
  56. </div><!-- /.col-lg-6 -->
  57. <p><textarea name="comment" id="comment" rows="8" class="form-control" tabindex="4" required></textarea></p>
  58. <center><br><div id="drag"></div><br></center>
  59. <p><button class="btn btn-primary btn-group-justified"/><?php echo attribute_escape(__('确认举报')); ?></p>
  60. <?php comment_id_fields(); ?>
  61. <?php do_action('comment_form', $post->ID, $comment_id); ?>
  62. </form>
  63. <?php endif; // If registration required and not logged in ?>
  64. </div>
  65. <script>
  66. $('#drag').drag();
  67. $(function(){
  68. //jquery.validate
  69. $("#jsForm").validate({
  70. submitHandler: function() {
  71. //验证通过后 的js代码写在这里
  72. }
  73. })
  74. })
  75. //下面是一些常用的验证规则扩展
  76. /*-------------验证插件配置-------------*/
  77. //配置错误提示的节点,默认为label,这里配置成 span (errorElement:'span')
  78. $.validator.setDefaults({
  79. errorElement:'span'
  80. });
  81. //配置通用的默认提示语
  82. $.extend($.validator.messages, {
  83. required: '必填',
  84. equalTo: "请再次输入相同的值"
  85. });
  86. /*-------------扩展验证规则-------------*/
  87. //邮箱
  88. jQuery.validator.addMethod("mail", function (value, element) {
  89. var mail = /^[a-z0-9._%-]+@([a-z0-9-]+\.)+[a-z]{2,4}$/;
  90. return this.optional(element) || (mail.test(value));
  91. }, "邮箱格式不对");
  92. //电话验证规则
  93. jQuery.validator.addMethod("phone", function (value, element) {
  94. var phone = /^0\d{2,3}-\d{7,8}$/;
  95. return this.optional(element) || (phone.test(value));
  96. }, "电话格式如:0371-68787027");
  97. //区号验证规则
  98. jQuery.validator.addMethod("ac", function (value, element) {
  99. var ac = /^0\d{2,3}$/;
  100. return this.optional(element) || (ac.test(value));
  101. }, "区号如:010或0371");
  102. //无区号电话验证规则
  103. jQuery.validator.addMethod("noactel", function (value, element) {
  104. var noactel = /^\d{7,8}$/;
  105. return this.optional(element) || (noactel.test(value));
  106. }, "电话格式如:68787027");
  107. //手机验证规则
  108. jQuery.validator.addMethod("mobile", function (value, element) {
  109. var mobile = /^1[3|4|5|7|8]\d{9}$/;
  110. return this.optional(element) || (mobile.test(value));
  111. }, "手机格式不对");
  112. //邮箱或手机验证规则
  113. jQuery.validator.addMethod("mm", function (value, element) {
  114. var mm = /^[a-z0-9._%-]+@([a-z0-9-]+\.)+[a-z]{2,4}$|^1[3|4|5|7|8]\d{9}$/;
  115. return this.optional(element) || (mm.test(value));
  116. }, "格式不对");
  117. //电话或手机验证规则
  118. jQuery.validator.addMethod("tm", function (value, element) {
  119. var tm=/(^1[3|4|5|7|8]\d{9}$)|(^\d{3,4}-\d{7,8}$)|(^\d{7,8}$)|(^\d{3,4}-\d{7,8}-\d{1,4}$)|(^\d{7,8}-\d{1,4}$)/;
  120. return this.optional(element) || (tm.test(value));
  121. }, "格式不对");
  122. //年龄
  123. jQuery.validator.addMethod("age", function(value, element) {
  124. var age = /^(?:[1-9][0-9]?|1[01][0-9]|120)$/;
  125. return this.optional(element) || (age.test(value));
  126. }, "不能超过120岁");
  127. ///// 20-60 /^([2-5]\d)|60$/
  128. //传真
  129. jQuery.validator.addMethod("fax",function(value,element){
  130. var fax = /^(\d{3,4})?[-]?\d{7,8}$/;
  131. return this.optional(element) || (fax.test(value));
  132. },"传真格式如:0371-68787027");
  133. //验证当前值和目标val的值相等 相等返回为 false
  134. jQuery.validator.addMethod("equalTo2",function(value, element){
  135. var returnVal = true;
  136. var id = $(element).attr("data-rule-equalto2");
  137. var targetVal = $(id).val();
  138. if(value === targetVal){
  139. returnVal = false;
  140. }
  141. return returnVal;
  142. },"不能和原始密码相同");
  143. //大于指定数
  144. jQuery.validator.addMethod("gt",function(value, element){
  145. var returnVal = false;
  146. var gt = $(element).data("gt");
  147. if(value > gt && value != ""){
  148. returnVal = true;
  149. }
  150. return returnVal;
  151. },"不能小于0 或空");
  152. //汉字
  153. jQuery.validator.addMethod("chinese", function (value, element) {
  154. var chinese = /^[\u4E00-\u9FFF]+$/;
  155. return this.optional(element) || (chinese.test(value));
  156. }, "格式不对");
  157. //指定数字的整数倍
  158. jQuery.validator.addMethod("times", function (value, element) {
  159. var returnVal = true;
  160. var base=$(element).attr('data-rule-times');
  161. if(value%base!=0){
  162. returnVal=false;
  163. }
  164. return returnVal;
  165. }, "必须是发布赏金的整数倍");
  166. //身份证
  167. jQuery.validator.addMethod("idCard", function (value, element) {
  168. var isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;//(15位)
  169. var isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;//(18位)
  170. return this.optional(element) || (isIDCard1.test(value)) || (isIDCard2.test(value));
  171. }, "格式不对");
  172. </script>

其中包含了验证。然后就能进行正常的显示。

邮件的发送提醒:

由于举报写完,我们需要将所填写的信息通过邮件进行发送到指定的邮箱。我们自己写一个点击确认举报时发送邮件的代码。

首先我们在functions.php中应用我们将要编写的代码youjian.php

  1. <?php
  2. /**
  3. * Mail smtp setting
  4. */
  5. add_action('phpmailer_init', 'mail_smtp');
  6. function mail_smtp( $phpmailer , $comment_id) {
  7. {
  8. $mail_name = 'mail_name';
  9. $mail_host = 'smtp.163.com';;
  10. $mail_port = 465;
  11. $mail_username = '15****7@163.com';
  12. $mail_passwd = 'mima********';
  13. $mail_smtpsecure = 'ssl';
  14. $phpmailer->FromName = $mail_name ? $mail_name : 'wu';
  15. $phpmailer->Host = $mail_host ? $mail_host : 'smtp.163.com';
  16. $phpmailer->Port = $mail_port ? $mail_port : '994';
  17. $phpmailer->Username = $mail_username ? $mail_username : 'no_reply@wu.com';
  18. $phpmailer->Password = $mail_passwd ? $mail_passwd : '123456789';
  19. $phpmailer->From = $mail_username ? $mail_username : 'no_reply@wu.com';
  20. $phpmailer->SMTPAuth = true ;
  21. $phpmailer->SMTPSecure = $mail_smtpsecure ? $mail_smtpsecure : 'ssl';
  22. $phpmailer->IsSMTP();
  23. //测试发送邮件的内容
  24. $comment = get_comment($comment_id);
  25. $parent_id = $comment->comment_parent ? $comment->comment_parent : '';
  26. $spam_confirmed = $comment->comment_approved;
  27. $message = '
  28. <div style="background:#ececec;width: 100%;padding: 50px 0;text-align:center;">
  29. <div style="background:#fff;width:750px;text-align:left;position:relative;margin:0 auto;font-size:14px;line-height:1.5;">
  30. <div style="zoom:1;padding:25px 40px;background:#518bcb; border-bottom:1px solid #467ec3;">
  31. <h1 style="color:#fff; font-size:25px;line-height:30px; margin:0;"><a href="' . get_option('home') . '" style="text-decoration: none;color: #FFF;">' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . '</a></h1>
  32. </div>
  33. <div style="padding:35px 40px 30px;">
  34. <h2 style="font-size:18px;margin:5px 0;">Hi ' . trim(get_comment($parent_id)->comment_author) . ':</h2>
  35. <p style="color:#313131;line-height:20px;font-size:15px;margin:20px 0;">您有一条留言有了新的回复,摘要信息请见下表。</p>
  36. <table cellspacing="0" style="font-size:14px;text-align:center;border:1px solid #ccc;table-layout:fixed;width:500px;">
  37. <thead>
  38. <tr>
  39. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="235px;">原文</th>
  40. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="235px;">回复</th>
  41. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="100px;">作者</th>
  42. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="90px;" >测试</th>
  43. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="90px;" >操作</th>
  44. </tr>
  45. </thead>
  46. <tbody>
  47. <tr>
  48. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">' . (get_option('comment_author_email')) . '</td>
  49. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">'. (get_option('tel')) . '</td>
  50. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">' . trim($comment->comment_author) . '</td>
  51. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">' . $comment_id . '</td>
  52. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;"><a href="'.get_comment_link( $comment->comment_ID ).'" style="color:#1E5494;text-decoration:none;vertical-align:middle;" target="_blank">查看回复</a></td>
  53. </tr>
  54. </tbody>
  55. </table>
  56. <br>
  57. <div style="font-size:13px;color:#a0a0a0;padding-top:10px">该邮件由系统自动发出,如果不是您本人操作,请忽略此邮件。</div>
  58. <div class="qmSysSign" style="padding-top:20px;font-size:12px;color:#a0a0a0;">
  59. <p style="color:#a0a0a0;line-height:18px;font-size:12px;margin:5px 0;">' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . '</p>
  60. <p style="color:#a0a0a0;line-height:18px;font-size:12px;margin:5px 0;"><span style="border-bottom:1px dashed #ccc;" t="5" times="">' . date("Y年m月d日",time()) . '</span></p>
  61. </div>
  62. </div>
  63. </div>
  64. </div>';
  65. $phpmailer->IsHTML( true );
  66. $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
  67. $phpmailer->Body = $message;
  68. }
  69. }
  70. /**
  71. * Comments email response system
  72. */
  73. add_action('comment_unapproved_to_approved', 'kratos_comment_approved');
  74. function kratos_comment_approved($comment) {
  75. if(is_email($comment->comment_author_email)) {
  76. $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
  77. $to = trim($comment->comment_author_email);
  78. $post_link = get_permalink($comment->comment_post_ID);
  79. $subject = '[通知]您的留言已经通过审核';
  80. $message = '
  81. <div style="background:#ececec;width: 100%;padding: 50px 0;text-align:center;">
  82. <div style="background:#fff;width:750px;text-align:left;position:relative;margin:0 auto;font-size:14px;line-height:1.5;">
  83. <div style="zoom:1;padding:25px 40px;background:#518bcb; border-bottom:1px solid #467ec3;">
  84. <h1 style="color:#fff; font-size:25px;line-height:30px; margin:0;"><a href="' . get_option('home') . '" style="text-decoration: none;color: #FFF;">' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . '</a></h1>
  85. </div>
  86. <div style="padding:35px 40px 30px;">
  87. <h2 style="font-size:18px;margin:5px 0;">Hi ' . trim($comment->comment_author) . ':</h2>
  88. <p style="color:#313131;line-height:20px;font-size:15px;margin:20px 0;">您有一条留言通过了管理员的审核并显示在文章页面,摘要信息请见下表。</p>
  89. <table cellspacing="0" style="font-size:14px;text-align:center;border:1px solid #ccc;table-layout:fixed;width:500px;">
  90. <thead>
  91. <tr>
  92. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="280px;">文章</th>
  93. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="270px;">内容</th>
  94. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="110px;" >操作</th>
  95. </tr>
  96. </thead>
  97. <tbody>
  98. <tr>
  99. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">《' . get_the_title($comment->comment_post_ID) . '》</td>
  100. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">'. trim($comment->comment_content) . '</td>
  101. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;"><a href="'.get_comment_link( $comment->comment_ID ).'" style="color:#1E5494;text-decoration:none;vertical-align:middle;" target="_blank">查看留言</a></td>
  102. </tr>
  103. </tbody>
  104. </table>
  105. <br>
  106. <div style="font-size:13px;color:#a0a0a0;padding-top:10px">该邮件由系统自动发出,如果不是您本人操作,请忽略此邮件。</div>
  107. <div class="qmSysSign" style="padding-top:20px;font-size:12px;color:#a0a0a0;">
  108. <p style="color:#a0a0a0;line-height:18px;font-size:12px;margin:5px 0;">' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . '</p>
  109. <p style="color:#a0a0a0;line-height:18px;font-size:12px;margin:5px 0;"><span style="border-bottom:1px dashed #ccc;" t="5" times="">' . date("Y年m月d日",time()) . '</span></p>
  110. </div>
  111. </div>
  112. </div>
  113. </div>';
  114. $from = "From: \"" . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . "\" <$wp_email>";
  115. $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
  116. wp_mail( $to, $subject, $message, $headers );
  117. }
  118. }
  119. function comment_mail_notify($comment_id) {
  120. $comment = get_comment($comment_id);
  121. $parent_id = $comment->comment_parent ? $comment->comment_parent : '';
  122. $spam_confirmed = $comment->comment_approved;
  123. if (($parent_id != '') && ($spam_confirmed != 'spam')) {
  124. $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
  125. $to = trim(get_comment($parent_id)->comment_author_email);
  126. $subject = '[通知]您的留言有了新的回复';
  127. $message = '
  128. <div style="background:#ececec;width: 100%;padding: 50px 0;text-align:center;">
  129. <div style="background:#fff;width:750px;text-align:left;position:relative;margin:0 auto;font-size:14px;line-height:1.5;">
  130. <div style="zoom:1;padding:25px 40px;background:#518bcb; border-bottom:1px solid #467ec3;">
  131. <h1 style="color:#fff; font-size:25px;line-height:30px; margin:0;"><a href="' . get_option('home') . '" style="text-decoration: none;color: #FFF;">' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . '</a></h1>
  132. </div>
  133. <div style="padding:35px 40px 30px;">
  134. <h2 style="font-size:18px;margin:5px 0;">Hi ' . trim(get_comment($parent_id)->comment_author) . ':</h2>
  135. <p style="color:#313131;line-height:20px;font-size:15px;margin:20px 0;">您有一条留言有了新的回复,摘要信息请见下表。</p>
  136. <table cellspacing="0" style="font-size:14px;text-align:center;border:1px solid #ccc;table-layout:fixed;width:500px;">
  137. <thead>
  138. <tr>
  139. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="235px;">原文</th>
  140. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="235px;">回复</th>
  141. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="100px;">作者</th>
  142. <th style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:normal;color:#a0a0a0;background:#eee;border-color:#dfdfdf;" width="90px;" >操作</th>
  143. </tr>
  144. </thead>
  145. <tbody>
  146. <tr>
  147. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">' . trim(get_comment($parent_id)->comment_content) . '</td>
  148. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">'. trim($comment->comment_content) . '</td>
  149. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">' . trim($comment->comment_author) . '</td>
  150. <td style="padding:5px 0;text-indent:8px;border:1px solid #eee;border-width:0 1px 1px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;"><a href="'.get_comment_link( $comment->comment_ID ).'" style="color:#1E5494;text-decoration:none;vertical-align:middle;" target="_blank">查看回复</a></td>
  151. </tr>
  152. </tbody>
  153. </table>
  154. <br>
  155. <div style="font-size:13px;color:#a0a0a0;padding-top:10px">该邮件由系统自动发出,如果不是您本人操作,请忽略此邮件。</div>
  156. <div class="qmSysSign" style="padding-top:20px;font-size:12px;color:#a0a0a0;">
  157. <p style="color:#a0a0a0;line-height:18px;font-size:12px;margin:5px 0;">' . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . '</p>
  158. <p style="color:#a0a0a0;line-height:18px;font-size:12px;margin:5px 0;"><span style="border-bottom:1px dashed #ccc;" t="5" times="">' . date("Y年m月d日",time()) . '</span></p>
  159. </div>
  160. </div>
  161. </div>
  162. </div>';
  163. $from = "From: \"" . htmlspecialchars_decode(get_option('blogname'), ENT_QUOTES) . "\" <$wp_email>";
  164. $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
  165. wp_mail( $to, $subject, $message, $headers );
  166. }
  167. }
  168. add_action('comment_post', 'comment_mail_notify');
  169. ?>

 

但是代码在发送邮件的时候出现问题,就是不能够得到前台评论的一些相关信息。mail_smtp( $phpmailer , $comment_id)不能够得到$comment_id的信息,这句是我自己添加的。等明天在找下原因。

还有就是这样不能进行后台订制一些邮箱的信息。明天再一起写一个后台的菜单,来让用户自己填写邮箱的一些信息。

--------------------- 本文来自 juezhanangle 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/juezhanangle/article/details/77841372?utm_source=copy

相关文章

宝塔开启系统防火墙,导致宝塔面板无法打开
谷歌广告插入附加宣传图片,可以降低每次的平均点击费用
使用Thumbnails插件处理图片缩略图及图片调用的php代码汇总
独立站和站群站点,分区别使用缓存和压缩插件
关于压缩html、css和js使网站加速的问题
linux服务器wordpress目录站群伪静态

发布评论

6 + 14 =