记录成长
分享快乐

WordPress添加文章密码保护功能

因为目前添加的很多功能放在新的编辑器上可能无法使用,所以原本想着等WordPress更新新版本正式启用“古腾堡”编辑器之后再更新主题修改相关的文章的。但是一则鉴于“古腾堡”编辑器用着确实别扭,未来可能还会使用老版编辑器,再则这个功能未来几天可能会用到(部分文章内容不想被浏览器收录),所以说还是决定更新了。

WordPress文章密码保护功能网上有很多相关的代码,但是没找到密码输入错误时提示的代码,所以最终还是自己对源代码做了些简单修改,便成了下面这幅样子。下面说一下具体修改的路子:、

functions.php 文件修改

将以下代码添加到主题的 functions.php 文件中去即可。

// 输入密码查看文章内容
function password_protected_post($atts, $content=null){
    extract(shortcode_atts(array('key'=>null), $atts));
    if(isset($_POST['password_key']) && $_POST['password_key']==$key){
        return '
			<div class="password_protected_post_content">'.$content.'</div>
		';
    }elseif(isset($_POST['password_key']) && $_POST['password_key']!=$key){
        return '
			<script>
				alert("密码错误,请仔细核对密码后重试!!!");
				window.location.href="'.get_permalink().'";
			</script>
		';
	
	}else{
        return '
			<form class="password_protected_post_form" action="'.get_permalink().'" method="post">
			<input type="password" id="password_key" name="password_key" size="20" placeholder="请输入密码查看隐藏内容"/>
			<input type="submit" value="确    定" />
			</form>
		';
    }
}
add_shortcode('pwd_protected_post','password_protected_post');
// 输入密码查看文章内容快捷按钮
function appthemes_add_pwd_protected_post() {
	if (wp_script_is('quicktags')){
?>
    <script type="text/javascript">
        QTags.addButton( 'pwd_protected_post', '文章密码保护', '【pwd_protected_post key="保护密码"]','[/pwd_protected_post】' );
    </script>
<?php
    } 
}
add_action('admin_print_footer_scripts', 'appthemes_add_pwd_protected_post' );

添加完成后在文章编辑器“文本”编辑模式下应该会出现一个“文章密码保护”的按钮,选中需要保护的文字点击该按钮即可进行密码保护,另外注意设置保护的密码(key)。当然,你也可以通过下面这段短代码直接编辑进行密码保护:

【pwd_protected_post key="保护密码"][/pwd_protected_post】

注意将代码中的“【】”修改为“[]”.

CSS样式文件修改

原本添加完上述代码后即可实现密码保护,但是默认的样式实在是有些丑,大致是下面这个样子:

将下面这段代码复制到你主题的样式文件中去,一般为 style.css 文件,DUX 主题的话为 main.css 文件即可。

/** 输入密码查看文章内容 */
.password_protected_post_content{
	margin: 20px 0;
    padding: 20px;
    background: #f8f8f8;
}

.password_protected_post_form{
	margin: 20px 0;
	height:52px;
	font-size:24px;
	text-align: center;	
}

.password_protected_post_form [type="password"]{
	float: left;
    width: 70%;
	height: 100%;
	display: block;
	padding: 5px 16px;
	line-height: 36px;
	color: #777;	
	background: #FCFCFC;
	border: 3px solid #f3f3f3;
	border-right: 0px;
	border-radius: 3px 0 0 3px;
	box-sizing: border-box;
}

.password_protected_post_form [type="submit"]{
	float: right;
    width: 30%;
	height: 100%;
	display: block;
	padding: 5px 16px;
	line-height: 36px;
	color: #fff;
	background: #3498db;
	border: 3px solid #3498db;
	border-left: 0px;
	border-radius: 0 3px 3px 0;
	box-sizing: border-box;
	cursor: pointer;
}

@media (max-width:560px){
	.password_protected_post_form{
	height:36px;
	font-size:14px;
	text-align: center;
	}
	.password_protected_post_form [type="password"]{
		padding: 3px 9px;
		line-height: 24px;
	}
	.password_protected_post_form [type="submit"]{
		padding: 3px 9px;
		line-height: 24px;
	}
}

添加完成后前端大致显示为如下这般:

输入密码后查看的隐藏内容样式如下:

样式不算太漂亮。当然,你也可以根据自己喜好再重新调整下样式。最后你可以通过下面来对该功能进行测试,密码为:123456

 

赞(3) 我要打赏
蝈蝈提醒:转载请注明出处哦>>>蝈蝈要安静 » WordPress添加文章密码保护功能
分享到: 更多 (0)

评论 11

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #3

    你这个CSS有问题的 溢出了,css错位,建议修复一下

    QQ游客   | Windows NT | Firefox 63.0 | 2个月前 (09-26)回复
    • @ QQ游客 我这边显示倒是没什么问题,可能是浏览器兼容性的问题。CSS样式的话自行调整下应该就可以了。

      蝈蝈要安静     | Windows NT | Chrome 63.0.3239.132 | 2个月前 (09-26)回复
      • @ 蝈蝈要安静 我弄了代码好了

        QQ游客   | Windows NT | Firefox 63.0 | 2个月前 (09-26)回复
      • @ 蝈蝈要安静 不是浏览器兼容问题可能是主题兼容性问题

        QQ游客   | Windows NT | Firefox 63.0 | 2个月前 (09-26)回复
  2. #2

    加入了CSS没有什么改变,还是丑的

    xiaomabk   | Windows 7 | Chrome 55.0.2883.87 | 2个月前 (09-11)回复
  3. #1

    没有任何效果呢

    隐藏在黑暗中的路人丶   | Windows 7 | Chrome 63.0.3239.26 | 3个月前 (08-30)回复

博客文章有用,赏博主一包辣条~~~

支付宝扫一扫打赏

微信扫一扫打赏