WordPress实现回复可见小功能两种方法

时间:5年前   阅读:6804

说到隐藏部分文章内容,这种做法常见于论坛,在wordpress博客程序中用得其实并不广泛。当然,这也与两者的用户群体以及定位不同;论坛经常设置部分内容隐藏、内容登陆、回复可见等限制,主要是为了吸引用户注册,而对于wordpress博主而言,这个目的并不是很强烈,所以对这个功能的需求也相对小很多。但是,随着wordpress的盛行,使用wordpress建站的类型以及用途越来越多元化,而wordpress本帖隐藏的内容需要回复才可以浏览等这些功能也能起到一定的作用,下面就分享下2种简单的方法来实现这个功能!

注意一下:请勿开启评论可以匿名,就是不需要填写任何信息就能提交评论的,要不然会无法显示。

废话不多说,下面开始如何让WordPress代码实现回复可见小功能。

1、在 functions.php 中加入下列代码:

add_filter('the_content', 'hide');  
add_filter('comment_text','hide');  
function hide($content) {  
    if (preg_match_all('/<!--hide start{?([\s\S]*?)}?-->([\s\S]*?)<!--hide end-->/i', $content, $matches)) {  
        $params = $matches[1][0];  
        $defaults = array('reply_to_this' => 'false');  
        $params = wp_parse_args($params, $defaults);  
        $stats = 'hide';  
        if ($params['reply_to_this'] == 'true') {  
            global $current_user;  
            get_currentuserinfo();  
            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';  
                }  
            }  
            $tip = __('<span class="vihide">抱歉,隐藏内容 <a href="#comments">回复</a> 后刷新可见</span>', 'hide');  
        } else {  
            if (isset($_COOKIE['comment_author_'.COOKIEHASH]) or current_user_can('level_0')) {  
                $stats = 'show';  
            }  
            $tip = __();  
        }  
        $hide_notice = $tip;  
        if ($stats == 'show') {  
            $content = str_replace($matches[0], $matches[2], $content);  
        } else {  
            $content = str_replace($matches[0], $hide_notice, $content);  
        }  
    }  
    return $content;  
}  
add_action('admin_footer', 'hide_footer_admin');

加上之后我们在美化一下CSS:

.vihide {  
    display:inline-block;  
    text-align:center;  
    border: 2px dashed #ff6666;  
    padding:8px;  
    margin:10px auto;  
    color:#FF6666;  
    width:100%;  
}  
.vihide a {  
    color:#04a1ef  
}  
.vihide a:hover {  
    color:#ffb300  
}

那么如何调用呢?

很简单,只需要在写文章的时候转到文本模式,填写: 

<!--hide start{reply_to_this=true}-->隐藏内容<!--hide end--> 

二、通过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. 这样未登录的用户浏览文章的时候,将无法阅读隐藏的内容。

本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。

微信扫码关注

更新实时通知

上一篇:浅谈JS函数优化

下一篇:上证50ETF期权适合做日内交易还是趋势交易?

网友评论

请先 登录 再评论,若不是会员请先 注册