前言

昨天发了篇带密码的保护文章,但标题前面的“密码保护:”这五个字符实在令人讨厌。如下图:

修改前

一来使原来的文章标题从观感弱化了,使得第一眼让人注意到的不是 “中秋节快乐!” 而是 “密码保护:”

二来可能对于不知道WordPress的人来说,你这篇文章的访问密码就是后面的“中秋节快乐!”,输入进去,诶,不对?!

 

所以就有了把这个碍眼的前缀给去了的想法,通过bing搜索方法,发现前面几条结果都是七八年前的,考虑到版本差异,于是就懒得接着找了。接下来我按照我的思路进行尝试。

省流版本:直接跳到最后一步 “Find Out”

 

第一步,查主题

首先我用vscode打开我网站(之前)所用的主题 corepress 的文件夹,全局搜索 密码保护 四个字,发现没有需要的结果。那肯定就是 WordPress 本身的设置了。

 

第二步,查WordPress

老规矩,能显示 密码保护: 这几个字,八成就是 php 文件定义的,全局一搜,找到了,在WordPress文件夹/wp-content/languages/zh_CN.po (如下图)。我不想看到这几个字咋办,简单,删掉,保存。然后刷新页面,嘶,结果发现那几个字还在,看来问题根源不在这。

第一步

[clickshow]至于刚才删掉的内容,可以复原回去(把字打回去),不复原也OK,亲测没影响。[/clickshow]

 

第三步

上面那个文件应该是起翻译作用的,如果想追底层实现,还得是用英文查找。于是就搜索上图的 msgid 的值 Protected: 。找到了以下几个结果。

第二步

左侧红圈框住的三个结果都带有以下一段话:(从5.9版本开始)

Overwrites the default protected title format.
By default, WordPress will show password protected posts with a title of "Protected: %s", as the REST API communicates the protected status of a post in a machine readable format, we remove the "Protected: " prefix.

翻译之后是:

覆盖默认受保护的标题格式。
默认情况下,WordPress会显示一个标题为“Protected:%s”的密码保护的帖子,由于REST API以机器可读的格式传达一个帖子的受保护状态,我们删除了“Protected:”前缀。

看上去似乎没有影响,于是,查找上面的 js 文件,看了眼,似乎不是。那么,就只剩最后一个php文件了。

 

Find Out

位于wordpress文件夹/wp-includes/post-template.php  文件,在其 128及141 行的:

第三步

$prepend = __( 'Protected: %s' );

$protected_title_format = apply_filters( 'protected_title_format', $prepend, $post );

想必就是我们要找的答案,根据函数注释可以看到,默认情况下 prepend (前置)是 Protected: 紧接 %s 字符串(应该就是指文章原标题了)。那么,$prepend = __( 'Protected: %s' ); 中的 Protected: 去掉,只保留 %s (原文章标题)是不是就ok了。试试就试试。毕竟,[clickshow]不行的话就再还原回去咯~ [/clickshow]

第四步

 

删除,保存,刷新网页,成功!

结果

 

至此,结束!

注意:更新wordPress后,需要重新设置,才能再次生效。