说到隐藏部分文章内容,这种做法常见于论坛,在 WordPress 博客程序中用得其实并不广泛。当然,这也与两者的用户群体以及定位不同;论坛经常设置部分内容隐藏、内容登陆、回复可见等限制,主要是为了吸引用户注册,而对于 WordPress 博主而言,这个目的并不是很强烈,所以对这个功能的需求也相对小很多。但是,随着 WordPress 的盛行,使用 WordPress 建站的类型以及用途越来越多元化,而 WordPress 本帖隐藏的内容需要回复才可以浏览等这些功能也能起到一定的作用,下面就分享下 2 种简单的方法来实现这个功能!
一、通过修改代码实现
个人觉得 WordPress 插件来实现是很简单方法,但是大家都知道 WordPress 插件安装过多的话,不仅会影响网站的整体访问速度,同时网络上的免费 WordPress 插件安全性也有待考量,如果你不患有代码恐惧症,还是自己倒腾吧,其实操作起来也很简单!只需要将以下隐藏内容回复可见代码加入到当前使用的主题的 functions.php 文件里即可。
if ($current_user->ID) {
$email = $current_user->user_email;
} else if (isset($_COOKIE['comment_author_email_'.COOKIEHASH])) {
$email = $_COOKIE['comment_author_email_'.COOKIEHASH];
}
$ereg = "^[_.a-z0-9]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,5}$";
if (eregi($ereg, $email)) {
global $wpdb;
global $id;
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_author_email = '".$email."' and comment_post_id='".$id."'and comment_approved = '1'");
if ($comments) {
$stats = 'show';
}
}
$admin_email = "admin@admin.com"; //博主 Email, 博主直接查看
if ($email == $admin_email) {
$stats = 'show';
}
$hide_notice = '<div style="text-align:center;border:1px dashed #FF9A9A;padding:8px;margin:10px auto;color:#FF6666;"> 温馨提示:此处内容需要<a href="'.%20get_permalink().'#respond" title="评论本文"> 评论本文</a> 后,<a href="javascript:window.location.reload();" title="刷新"> 刷新本页</a> 才能查看。</div>';
if( $stats == 'show' ){
$content = str_replace($hide_words[0], $hide_words[1], $content);
}else{
$content = str_replace($hide_words[0], $hide_notice, $content);
}
}
return $content;
}
add_filter('the_content', 'reply');
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
////回复可见///// functionreply($content){ if(preg_match_all('/<!--reply start-->([sS]*?)<!--reply end-->/i',$content,$hide_words)){ $stats='hide'; global$current_user; get_currentuserinfo(); if($current_user->ID){ $email=$current_user->user_email; }elseif(isset($_COOKIE['comment_author_email_'.COOKIEHASH])){ $email=$_COOKIE['comment_author_email_'.COOKIEHASH]; } $ereg="^[_.a-z0-9]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,5}$"; if(eregi($ereg,$email)){ global$wpdb; global$id; $comments=$wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_author_email = '".$email."' and comment_post_id='".$id."'and comment_approved = '1'"); if($comments){ $stats='show'; } } $admin_email="admin@admin.com";//博主 Email, 博主直接查看 if($email==$admin_email){ $stats='show'; } $hide_notice='<div style="text-align:center;border:1px dashed #FF9A9A;padding:8px;margin:10px auto;color:#FF6666;"> 温馨提示:此处内容需要<a href="'.get_permalink().'#respond" title="评论本文"> 评论本文</a> 后,<a href="javascript:window.location.reload();" title="刷新"> 刷新本页</a> 才能查看。</div>'; if($stats=='show'){ $content=str_replace($hide_words[0],$hide_words[1],$content); }else{ $content=str_replace($hide_words[0],$hide_notice,$content); } } return$content; } add_filter('the_content','reply'); |
然后打开你的 WordPress 后台——外观——编辑,找到右侧的 funtion.php——点击打开,然后把上面的代码黏贴到 function.php 的最后——点击更新
在发表博文,在你想要隐藏的某部分内容中加入
<!--reply start--> 隐藏内容<!--reply end--> 【需要你使用代码模式中输入】
PS:(1) 请将管理员的 E-mail 改成自己管理账户的 E-mail,这样你可以不用回复就可见。
(2) 另外,目前 BUG 是,使用多说等评论插件无效,只支持主题内置留言。
二、通过 WordPress 插件实现
(1) 效果预览
其实隐藏部分内容还是挺简单的!
(2) 安装方法:
1. 直接在 WordPress 后台插件搜索安装 「login to view all」 或者去 WordPress 官网下载插件,解压缩,你将会看到一个文件夹 login-to-view-all,然后将其放置到插件目录下,插件目录通常是 /wp-content/plugins/
2. 在后台对应的插件管理页激活该插件 Login to view all
4. 完成
(3) 使用说明:
1. 在 WordPress 后台编辑文章的时候,切换到 HTML 模式,选中你要隐藏的内容,点击按钮 loginview 即可用
<!--loginview start--> 隐藏内容<!--loginview end-->
将隐藏内容括起来;使用这个标签的好处是,你停用本插件后,该标签不会被显示出来。
2. 这样未登录的用户浏览文章的时候,将无法阅读隐藏的内容。