Villain博客

您现在的位置是:首页 > 技术笔记

技术笔记

WordPress添加文章密码保护功能

2020-10-06技术笔记
WordPress添加文章密码保护功能

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

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

functions.php 文件修改

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


 
  1. // 输入密码查看文章内容
  2. function password_protected_post($atts, $content=null){
  3. extract(shortcode_atts(array('key'=>null), $atts));
  4. if(isset($_POST['password_key']) && $_POST['password_key']==$key){
  5. return '
  6. <div class="password_protected_post_content">'.$content.'</div>
  7. ';
  8. }elseif(isset($_POST['password_key']) && $_POST['password_key']!=$key){
  9. return '
  10. <script>
  11. alert("密码错误,请仔细核对密码后重试!!!");
  12. window.location.href="'.get_permalink().'";
  13. </script>
  14. ';
  15.  
  16. }else{
  17. return '
  18. <form class="password_protected_post_form" action="'.get_permalink().'" method="post">
  19. <input type="password" id="password_key" name="password_key" size="20" placeholder="请输入密码查看隐藏内容"/>
  20. <input type="submit" value="确 定" />
  21. </form>
  22. ';
  23. }
  24. }
  25. add_shortcode('pwd_protected_post','password_protected_post');
  26. // 输入密码查看文章内容快捷按钮
  27. function appthemes_add_pwd_protected_post() {
  28. if (wp_script_is('quicktags')){
  29. ?>
  30. <script type="text/javascript">
  31. QTags.addButton( 'pwd_protected_post', '文章密码保护', '【pwd_protected_post key="保护密码"]','[/pwd_protected_post】' );
  32. </script>
  33. <?php
  34. }
  35. }
  36. add_action('admin_print_footer_scripts', 'appthemes_add_pwd_protected_post' );

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


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

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

CSS样式文件修改

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

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


 
  1. /** 输入密码查看文章内容 */
  2. .password_protected_post_content{
  3. margin: 20px 0;
  4. padding: 20px;
  5. background: #f8f8f8;
  6. }
  7.  
  8. .password_protected_post_form{
  9. margin: 20px 0;
  10. height:52px;
  11. font-size:24px;
  12. text-align: center;
  13. }
  14.  
  15. .password_protected_post_form [type="password"]{
  16. float: left;
  17. width: 70%;
  18. height: 100%;
  19. display: block;
  20. padding: 5px 16px;
  21. line-height: 36px;
  22. color: #777;
  23. background: #FCFCFC;
  24. border: 3px solid #f3f3f3;
  25. border-right: 0px;
  26. border-radius: 3px 0 0 3px;
  27. box-sizing: border-box;
  28. }
  29.  
  30. .password_protected_post_form [type="submit"]{
  31. float: right;
  32. width: 30%;
  33. height: 100%;
  34. display: block;
  35. padding: 5px 16px;
  36. line-height: 36px;
  37. color: #fff;
  38. background: #3498db;
  39. border: 3px solid #3498db;
  40. border-left: 0px;
  41. border-radius: 0 3px 3px 0;
  42. box-sizing: border-box;
  43. cursor: pointer;
  44. }
  45.  
  46. @media (max-width:560px){
  47. .password_protected_post_form{
  48. height:36px;
  49. font-size:14px;
  50. text-align: center;
  51. }
  52. .password_protected_post_form [type="password"]{
  53. padding: 3px 9px;
  54. line-height: 24px;
  55. }
  56. .password_protected_post_form [type="submit"]{
  57. padding: 3px 9px;
  58. line-height: 24px;
  59. }
  60. }

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

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

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

[pwd_protected_post key=”123456″]

博客标语:蝈蝈要安静 | 一个不学无术的伪程序员

博客地址:https://blog.quietguoguo.com/

最后感谢各位对本博客的支持!!!

[/pwd_protected_post]