现在的位置: 首页 > WordPress教程 > 正文

WordPress密码保护文章正文密码输入前提示文字

2014年10月14日 WordPress教程 ⁄ 共 1463字 评论数 2 ⁄ 阅读 3,379 次

解决了标题前丑陋的文字提示,到正文中我们又发现了更丑的提示文字,“这是一篇受密码保护的文章。您需要提供访问密码:”。按照中文逻辑这里面“文章”字样后该用逗号的有木有(我不是处女座,没有强迫症,真的)!而且,按照本来的预想,加密文章是为了不让百度等收录或者恶意采集,但是对于正常用户应该是可以访问了。那么,就需要将密码提供给这些用户。我们何不改掉这丑不拉叽的提示文字,改成我们想要的效果?

好了,下面看具体方法:

找到主题所在文件夹,找到其中function.php文件,用Editplus或UE打开,在内容最后的“?>”之前添加如下代码:

想要什么样的正文提示就直接改我那段中文就好了。这段代码相对有点复杂了,能写出来的人应该是个PHP+CSS大神。虽然代码是我写出来的,但我很谦虚的认为自己不是大神。因为,这段代码基本是我从WordPress源码里复制出来的……

为何这段代码达到目的了呢,下面看步骤吧:

1、找到主题文章页的控制文件,一般为single.php。查看代码我们发现控制文章内容展示的竟然只有另人发指的一小行代码,而这行代码里有效的仅是一个函数the_content()。

2、通过百度查找发现该函数的定义代码在wp-includes/post-template.php,然后我们就愉快的看代码了:

3、我们又愉快的发现,这代码里没有我们要找的内容。但我们要找的内容由get_the_content()得到,好吧,我们继续愉快的找函数get_the_content()的代码:

这代码太长了,我就不一一分析了,只拿出来对我们有用的一段:

这段代码的意思是如果文章密码存在,则返回值为get_the_password_form()。

4、又被坑了,好吧,只能继续往下找函数get_the_password_form()的代码:

皇天不负苦心人,我们最终还是找到了正文提示文字的控制代码。变量$output中有正文密码提示信息,还有密码输入框样式等。这样,我们就没办法简单仅改提示信息了。当然,如果你说用替换函数,那也是可以的,但效率不高。怎样效率高呢,我们就不查找文字替换文字了,我们直接把整段代码给换了!

所以,就有了我们最开始看到的那段代码,那段代码基本就是在WordPress函数get_the_password_form()的基础上修改得到的。

WP为我们提供了密码保护文章正文内容控制的过滤钩子the_password_form,我们只需要建一个函数重新定义这些内容再return,再将这个函数使用add_filter()挂载到钩子上就OK了。如果你不懂什么是过滤钩子,可以详见“WordPress过滤钩子函数add_filter()、apply_filters()源码解析”。

另外,再补充一点,在正文上面的状态栏里,密保文章的评论数提示为“要查看留言请输入您的密码。”。中间还多个句号,看着就爆丑,想去掉它?找到主题single.php文件,在其中查找comments_popup_link,在这行代码的上下一行分别添加代码,修改后代码如下:

» 声明:本站文章源于个人经验总结或书籍、互联网转载,内容仅用于个人学习,请勿转载,否则后果自负!

目前有 2 条留言 其中:访客:2 条, 博主:0 条

  1. 大炸 : 2015年10月21日11:04:40  -49楼 @回复 回复

    能把你这段代码看懂的,基本不用这个代码了,自己做得了

  2. oct11 : 2016年09月17日21:34:17  -48楼 @回复 回复

    您好,有没有办法对不同文章使用不同的提示

给我留言

留言无头像?