post

WordPress博客中实现评论后可见功能

这篇文章的方法是在远方的雪山博客(http://salonglong.com/)中看到的,首先感谢他的分享。

相信大家逛论坛的时候,看到好的资源的时候,都会碰到“该帖子需要回复后才能查看”的字样,虽然对于访客来说,很麻烦,但是对文章的seo有很大帮助,也可以避免让好文章沉入海底,今天就介绍下,如何在WordPress中实现这个功能,适用于分享独一无二的资源的时候,会引来质量不高的评论,建议慎用!

通过读代码和测试发现:

1、已登录的用户,如果评论过,可以查看资源;
2、博客采用原生评论,游客评论后会有Cookie记录,刷新页面即可查看资源;
3、必须是通过审核的评论人,才可以查看;
4、采用多说、灯鹭等社交评论插件的话,此方法就不奏效了,需要自己添加获取当前评论人Email地址的逻辑,并且评论要及时同步回本地。

具体实现方法:

一、首先将下面给的代码,加到你的主题的 functions.php 中:

//短代码之评论可见
function reply_to_read($atts, $content=null) {
extract(shortcode_atts(array("notice" => '

<span style="color: red;">温馨提示:</span>此处内容需要<a title="评论本文" href="#respond">评论本文</a>后才能查看.

'), $atts));
$email = null;
$user_ID = (int) wp_get_current_user()->ID;
if ($user_ID > 0) {
$email = get_userdata($user_ID)->user_email;
//对博主直接显示内容
$admin_email = "***@gmail.com"; //博主Email,直接对博主显示而不需要评论!
if ($email == $admin_email) {
return $content;
}
} else if (isset($_COOKIE['comment_author_email_' . COOKIEHASH])) {
$email = str_replace('%40', '@', $_COOKIE['comment_author_email_' . COOKIEHASH]);
} else {
return $notice;
}
if (empty($email)) {
return $notice;
}
global $wpdb;
$post_id = get_the_ID();
$query = "SELECT `comment_ID` FROM {$wpdb->comments} WHERE `comment_post_ID`={$post_id} and `comment_approved`='1' and `comment_author_email`='{$email}' LIMIT 1";
if ($wpdb->get_results($query)) {
return do_shortcode($content);
} else {
return $notice;
}
}
add_shortcode('reply', 'reply_to_read');

二、然后就是短代码部分(把下面两段代码中的“{}”大括号都改成“[]”中括号),编写文章时插入:

{reply}评论可见的内容{/reply}

三、提醒内容也可以自定义,代码如下:

{reply notice="自定义提醒回复内容"}自定义提醒回复内容{/reply}

四、附上我自己博客中的css样式,添加到主题下的style.css中:

.reply-to-read{
  background: #F4F7F7;
  color: #528294;
  font-family: Georgia, Times New Roman, Trebuchet MS;
  font-size: 16px;
  font-style: italic;
  margin: 0 15px 15px;
  padding: 15px 20px 0;
  line-height: 26px;
  text-shadow: white 1px 1px;
}

这句是样式的预览效果

原文地址:http://salonglong.com/wordpress-comment-visible.html

Comments

  1. 哈哈,这个好流氓啊。逼着人家留言不是。

    • 张衡Henry(在公司) says:

      呵呵,就是要评论的,以免有些人“不劳而获”,说一句话得到好东西,值得的。前提是资源要好。

  2. 哈哈,这个好流氓啊。逼着人家留言不是。

    • 张衡Henry(在公司) says:

      呵呵,就是要评论的,以免有些人“不劳而获”,说一句话得到好东西,值得的。前提是资源要好。

  3. 这样垃圾评论留言会爆多。。。弄点||色||情|资源,回复可见下载。。。

    • 张衡Henry(在公司) says:

      说的也有道理,不过我相信玩博客的人素质都是比较高的, 。那种资源可不能随便传bo啊,你懂的。

  4. 这样垃圾评论留言会爆多。。。弄点||色||情|资源,回复可见下载。。。

    • 张衡Henry(在公司) says:

      说的也有道理,不过我相信玩博客的人素质都是比较高的, 。那种资源可不能随便传bo啊,你懂的。

  5. 呃~~这个功能不错。。。

  6. 呃~~这个功能不错。。。

  7. 功能不错哦,借鉴了,能做到无刷新读取吗?

  8. 功能不错哦,借鉴了,能做到无刷新读取吗?

  9. 我的评论呢

  10. 我的评论呢

  11. [嘻嘻] 这个功能还是不错滴….

  12. 这个功能还是不错滴….

  13. 有意思的功能

  14. 有意思的功能

  15. 有点意思,试一下看看

  16. 有点意思,试一下看看

Speak Your Mind

*

· 592 次浏览