WordPress添加评论at(@)功能:Git-Minori主题评论at(@)功能失效修复

发布于 2017-01-18  123 次阅读


一直没注意到,Git-Minori主题的评论@功能竟然失效了,昨天晚上看到百思不得其解,明明以前还是可以的啊!

之前 Git-Minori 主题使用的评论添加 @ 功能是采用来自 ludou 的代码。

// 评论添加@,by Ludou
function ludou_comment_add_at( $comment_text, $comment = '') {
  if( $comment->comment_parent > 0) {
    $comment_text = '@'.get_comment_author( $comment->comment_parent ) . ' ' . $comment_text;
  }

  return $comment_text;
}
add_filter( 'comment_text' , 'ludou_comment_add_at', 20, 2);

作为机械狗出身的我并不懂“最好的语言”PHP,胡乱将上面的代码改了改,发现除了报错之外,没有任何效果,就算把这段代码删除了也是毫无变化,可以说明此段代码完全是废了。我想有可能是 WordPress 版本升级,最新版本不支持了。

可惜搜索了半天,也没找到相关 WordPress 版本升级后评论 @ 功能失效的信息,我也不知道究竟是为什么失效了。至于添加评论 @ 功能的方法,也到处都是拷贝 ludou 的代码,并没有什么其他好的方式。

Copy Code 是无望了。只能自己动手 Coding 了……

将主题里面有关评论区域的代码看了一遍逻辑,翻看了下 WordPress 的 comment 文档,搞起。

这个问题,直接修改评论样式可破。

由于不懂 PHP,而且这个解释起来好麻烦啊……→_→

所以呢,我就直接放代码示例上来了,代码上已经添加了注释,我觉得应该很好懂的了。看得懂的人应该知道怎么改了,看不懂的,就找类似的代码段来修改,因为每个主题的 function.php 模板函数都不一样的,要看实际的实现逻辑再具体分析。

/*
* 自定义评论外观
*Author: ChIaS(MrORZ)
*Site: www.mrorz.com
*Create: 2017-01-17
*License: MIT
*/
function deel_comment_list($comment, $args, $depth) {
 echo '<li ';
 comment_class();
 echo ' id="comment-' . get_comment_ID() . '">';
 //输出头像
 echo '<div class="c-avatar">';
 echo str_replace(' src=', ' data-original=', get_avatar($comment->comment_author_email, $size = '54', deel_avatar_default()));
 
 //评论主体内容(重点是改这段代码)====
 
 echo '<div class="c-main" id="div-comment-' . get_comment_ID() . '">';
 //判断逻辑:如果这条评论存在上一级评论,则在评论前面添加“@+上一级评论的人”
 if( $comment->comment_parent > 0) {
 echo str_replace(' src=', ' data-original=', convert_smilies('<a href="#comment-' . $comment->comment_parent . '">@'.get_comment_author( $comment->comment_parent ) . '</a>:' . get_comment_text()));
 }
 //判断逻辑:如果这条评论没有上一级评论,则直接输出评论内容
 if( $comment->comment_parent == 0){
 echo str_replace(' src=', ' data-original=', convert_smilies(get_comment_text())); 
 }
 //判断逻辑:如果这条评论待审核,则直接输入提示。
 if ($comment->comment_approved == '0') {
 echo '<span class="c-approved">您的评论正在排队审核中,请稍后!</span><br />';
 }
 //评论主体内容结束(重点是改上面这部分)====
 
 echo '<div class="c-meta">';
 echo '<span class="c-author">' . get_comment_author_link() . '</span>';
 //输出评论时间
 echo get_comment_time('Y-m-d H:i ');
 //判断逻辑:如果这条评论不是处于待审核中,根据嵌套评论的设置逻辑显示回复和编辑。
 if ($comment->comment_approved !== '0') {
 echo comment_reply_link(array_merge($args, array(
 'add_below' => 'div-comment',
 'depth' => $depth,
 'max_depth' => $args['max_depth']
 )));
 echo edit_comment_link(__('(编辑)') , ' - ', '');
 }
 echo '</div>';
 echo '</div></div>';
}

改完这个之后,刷新下网站。

(。・∀・)ノ゙ Git-Minori 和 ISay 这两个主题我一直在使用 Git 更新修复,只要不是大改,我还是有耐心继续维护下去的~

有机会的话,我是很乐意将代码开源共享出来,可惜……目前还有很多无法拿出来开源的问题,只能自用。