前两天找到了旧博的备份数据,想着把旧文整理上来也好丰富下久不更新的博客。

整理的第一篇是智商、财商的测试类文章——《【转】智商财商大测试》,前面是题目,后面是答案。一般网页上这类的都会做分页处理,答案会放在题目的下一页,但是在一篇博文中去做分页或是另开一篇博文公布答案感觉都不合适。所以要是能像论坛那样可设置回复可见,不仅能增强与博友的互动,还能提高博客的访问量,多棒!

网上找了一圈,有用各种各样插件达成的,其中提到最多的是“Easy2Hide”,虽然它代码也蛮短的,但是“插件”二字总让我嫌弃,还是找纯代码的才能抚慰我轻微的强迫症。

搜索不负强迫人,总算找到一段完美的代码可以实现这个功能,具体样式请见已用该效果的博文——《【转】智商财商大测试》,我在这里介绍该代码分别对于一般主题和Mossight主题的添加方法。

对于一般主题,只要把这段代码添加到function.php中即可,详细代码如下:

function reply_to_read($atts, $content=null) {
extract(shortcode_atts(array("notice" => '

温馨提示: 此处内容需要评论本文后才能查看

'), $atts));
$email = null;
$user_ID = (int) wp_get_current_user()->ID;
if ($user_ID > 0) {
$email = get_userdata($user_ID)->user_email; //对博主直接显示内容
$admin_email = "on@sunny.lu"; //博主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');

Mossight主题


Mossight主题本身就自带丰富的短代码,我们无需修改function.php,只要把这个“回复可见”添加进短代码库,在使用后台编辑器写文章时就可以很方便地调用了。(话说Mossight主题里有个下拉菜单的短代码可以暂时把想隐藏的内容藏起来,但是既点既现让懒博友又方便了,所以还是回复可见比较好)。

短代码库:wp-content\themes\Mossight\functions\shortcode.php
找到代码

add_shortcode('toggle','post_toggle');

另起一行插入代码:

//shortcode - self
//reply_to_read
function reply_to_read($atts, $content=null) { 
extract(shortcode_atts(array("notice" => '
<blockquote>
<p style="color: #993300;"><strong>温馨提示:</strong></p>
<p>此处内容需要评论本文后才能查看</p> 
</blockquote>
'), $atts)); 
$email = null; 
$user_ID = (int) wp_get_current_user()->ID; 
if ($user_ID > 0) { 
$email = get_userdata($user_ID)->user_email; //对博主直接显示内容 
$admin_email = "on@sunny.lu"; //博主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');

然后再找到最后一个QTags.addButton项

QTags.addButton( 'm31', '下载按钮', '【butdown href="链接"】标题【/butdown】');//这用【 】防止代码运行,使用时请用[ ]替换

在其后面新增一项:

QTags.addButton( 'm32', '回复可见', '【reply】这里输入内容【/reply】');//这用【 】防止代码运行,使用时请用[ ]替换

就可以了。

这段代码的显示样式是可以设定的,只要用Html标签和样式把“温馨提示: 此处内容需要评论本文后才能查看”美化即可,比如在Mossight主题里的,我使用了blockquote标签、p标签和css,博友们可以根据自己的需求更改。

使用方法:
一般主题:在后台编辑文章时使用“【reply】【/reply】”把要隐藏的内容包起来即可(这用【 】防止代码运行,使用时请用[ ]替换)
Mossight主题:修改好shortcode.php后,进后台编辑器直接点“回复可见”按钮插入

“回复可见”这个功能虽有优点,但也是有缺点的
优点:增强与博友的互动,提高博客的访问量
缺点:回复可见不是实时的,内容要等评论审核通过后才可见

目前有16条回应
Comment
Trackback
  • 本篇文章没有Trackback
你好,欢迎光临!