文是大发那拷贝过来的,和以前那篇“仿 WordPress 的 Post Embed 功能”功能类似,所以在这里做个记录,以便以后用得到。

仿 WordPress 的 Post Embed 功能

WordPress 的 Post Embed 功能,是 4.4 版本新增的,可以在任意 WordPress 站点用嵌入的方式插入 WordPress 博客内的文章。当然了,前提是嵌入和被嵌入的 WordPress 博客都...

写博客自然就会有评论,讲道理有些评论内容还是蛮不错的,可以引用到文章里,类似上面的文章,我们可以采用短代码的方式把评论引入到文章内容中,还可以自定义引入样式。

例:来自常阳时光博客

下面的代码加入到functions.php

  1. function fa_insert_comments( $atts$content = null ){
  2.     extract( shortcode_atts( array(
  3.         'ids' => ''
  4.     ),$atts ) );
  5.     $content     = '';
  6.     $comment_ids = explode(',', $ids);
  7.     $query_args  = array('comment__in'=>$comment_ids,);
  8.     $fa_comments = get_comments($query_args);
  9.     if ( emptyempty($fa_comments) ) return;
  10.     foreach ($fa_comments as $key => $fa_comment) {
  11.         $content .= '<div class="comment-mixtapeEmbed"><span class="comment-mixtapeEmbed-avatar">' . get_avatar($fa_comment->comment_author_email,32) . '</span><div class="comment-mixtapeEmbed-author">' . $fa_comment->comment_author . '</div><div class="comment-mixtapeEmbed-date">' . $fa_comment->comment_date .'</div><div class="comment-mixtapeEmbed-text">'.  $fa_comment->comment_content . '</div></div>';
  12.     }
  13.     return $content;
  14. }
  15. add_shortcode('fa_insert_comments', 'fa_insert_comments');

修改版:

  1. function xx_insert_comments( $atts$content = null ){
  2.     extract( shortcode_atts( array(
  3.         'ids' => ''
  4.     ),$atts ) );
  5.     $content     = '';
  6.     $comment_ids = explode(',', $ids);
  7.     $query_args  = array('comment__in'=>$comment_ids,);
  8.     $fa_comments = get_comments($query_args);
  9.     if ( emptyempty($fa_comments) ) return;
  10.     foreach ($fa_comments as $key => $fa_comment) {
  11.         $content .= '<div class="comment-mixtype-embed"><span class="comment-mixtype-embed-avatar">' . get_avatar($fa_comment->comment_author_email,32) . '</span><div class="comment-mixtype-embed-author"><a href="' . get_permalink($fa_comment->comment_post_ID).'#comment-' . $fa_comment->comment_ID . '">' . $fa_comment->comment_author . '</a> - <a href="' . get_permalink($fa_comment->comment_post_ID) . '">' . get_the_title($fa_comment->comment_post_ID) . '</a></div><div class="comment-mixtype-embed-date">' . $fa_comment->comment_date .'</div><div class="comment-mixtype-embed-text">'.  $fa_comment->comment_content . '</div></div>';
  12.     }
  13.     return $content;
  14. }
  15. add_shortcode('xx_insert_comments', 'xx_insert_comments');

参考CSS:

  1. .comment-mixtype-embed {
  2.     background: #f6f6f6;
  3.     border: 1px solid #e5e5e5;
  4.     box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  5.     color: #82878c;
  6.     font-size: 14px;
  7.     overflow: auto;
  8.     padding: 16px;
  9.     margin-bottom: 16px;
  10. }
  11. .comment-mixtype-embed-avatar {
  12.     float: left;
  13.     margin-right: 10px
  14. }
  15. .comment-mixtype-embed-avatar .avatar {
  16.     border-radius: 100%;
  17.     width: 32px;
  18.     height: 32px;
  19.     border: none;
  20.     margin: auto;
  21. }
  22. .comment-mixtype-embed-author {
  23.     font-size: 12px;
  24.     color: #3e8432;
  25.     line-height: 1.4
  26. }
  27. .comment-mixtype-embed-date {
  28.     line-height: 1.2;
  29.     font-size: 12px;
  30.     color: rgba(0,0,0,.44)
  31. }
  32. .comment-mixtype-embed-text {
  33.     margin-top: 10px;
  34.     font-size: 12px;
  35.     color: rgba(0,0,0,.6)
  36. }
  37. .comment-mixtype-embed-text p {
  38.     margin-bottom: 2px!important
  39. }

如果想输出评论格式,则把代码中的

  1. $fa_comment->comment_content

替换为

  1. apply_filters('comment_text',$fa_comment->comment_content)

你可以根据你自己的需要来调整代码,也可以自己自定义CSS样式,我这里就不给出CSS代码了。

至于调用就非常简单了,直接使用短代码[fa_insert_comments ids=123,245]即可

如果你不是在文章内容中,而是在其他地方想调用,则可使用do_shortcode('[fa_insert_comments ids=123,245]')来调用。