使用Polylang插件让你的WordPress站点支持多语言

如果你的WordPress站点是针对全球用户的,那就很有必要为它添加多语言支持,使用多语言插件Polylang就能很好地实现这个功能。你可以通过Polylang添加所需的语言,然后就可以将网站标题、文章、页面、分类、标签、菜单、小工具等等翻译为多种语言。

该插件可以根据浏览器的语言来自动切换到对应的语言版本。比如你可以像平常一样发布简体中文文章,然后为它添加一个英语版本(英语版的标题和正文内容),那么,如果一个使用英语浏览器的人访问你的网站,就会自动为他显示英语版本的文章。

注:该插件不会自动生成多语言版本的文章,需要你自己翻译

Polylang不仅支持单独的WordPress站点,还支持多站点模式。而且用户可以自己设置网站后台的语言。

参考链接


Ubuntu 16.04 LTS下通过PHP7-FPM配置的服务器增大WordPress文件上传大小限制

一般来说你使用的主机会限制你上传文件的大小,在 WordPress的媒体文件上传可以看到,大多数都是 2MB。如果是图片的话可能会还够用,但是如果是其他文件就不一定够用了。

增大可以上传的文件大小的话,则执行如下命令

搜索" upload_max_filesize",把默认的 2M修改为需要的大小。
搜索" post_max_size",把默认的 8M修改为需要的大小。

重启 PHP-FPM服务

重新刷新页面,上传文件即可。

移除WordPress-4.7.5自动加载的emoji脚本

WordPress 4.2版本之后,查看网页源代码你会发现 WordPress会自动在加载一段用于支持 emjo表情的脚本( JS+CSS)。对于大部分人来说,这个是十分鸡肋的功能,反而影响加载速度,仔细观察一下就会发现,这部分功能引入了非常多的脚本以及代码,实际上绝大部分人从来不使用这部分功能,另外这部分加载脚本在 Internet Explorer 11 + HTTPS的时候,会出现警告访问不安全的内容,原因就在于 emjo加载脚本在 HTTPS的情况下依旧会使用 HTTP去请求数据。

继续阅读移除WordPress-4.7.5自动加载的emoji脚本

WordPress 4.7.5改善Twenty Fifteen主题在Internet Explorer 11上的兼容显示问题

WordPress 4.7.5使用 Twenty Fifteen主题的时候,在 Internet Explorer 11上存在兼容问题,页面的左边的侧边栏经常会不绘制,出现空白,这个问题是由于 Internet Explorer 11使用的 Trident引擎导致的,我们可以通过强制 Internet Explorer 11使用 Internet Explorer 9引擎来改善问题,注意: 是改善,暂时还没办法彻底解决

继续阅读WordPress 4.7.5改善Twenty Fifteen主题在Internet Explorer 11上的兼容显示问题

Ubuntu 14.04服务器利用Apache 2.4的.htaccess文件阻止对wp-config.php.bak的访问

最近在分析请求链接的时候发现有对 wp-config.php.bak的下载请求,被吓了一跳。在 WordPress的某些升级操作中,会特意备份 wp-config.php方便出现问题后的回退。如果有人恶意下载这个文件,会导致数据库密码以及配置信息的泄漏,后果影响很大。

对于使用 Apache 2.4的服务器来说,比较简单,只要在 .htaccess中,使用如下配置即可:

如何正确隐藏WordPress的版本号?

默认情况下,当你使用 WordPress来搭建网站的时候, WordPress会在你的网站上留下个标记:这就是 WordPress的版本号。在某些时候,这个标记也会成为网站的安全漏洞。
打开你的 WordPress网站,在浏览中的空白地方点击右键,选择查看源代码,通常你会找到有这样一行代码:

这是 WordPress自动生成的代码,向外界宣告你所使用的 WordPress版本。如果你的网站一直使用的是最新版 WordPress,那你基本无需担心因为泄露版本号而导致的安全问题。但是,由于某些特殊的原因,如果你使用的是旧版本的软件,那么暴露 WordPress版本号可能会成为你网站的安全漏洞。

因此,在这种情况下,你应该隐藏网站所使用的 WordPress版本号。

在你的网站中,有四个地方容易暴露 WordPress的版本号:

  1. 网站源码页头部分的 meta标签里:
  2. 脚本和样式表文件中:
  3. 网站 RSS feeds中:
  4. 网站根目录下的 readme.html文件中。

网络中各种隐藏 WordPress版本号的技巧很多,功能最为完整且简洁的代码,应当是属于下面这段:

这段代码可以移除前面3个地方中所包含的 WP版本号。记得要把这段代码放在你所用主题(或子主题)的 funcitons.php模板文件中。

修改完成后,如果是使用 PHP-FPM来进行处理的服务器,需要重启 PHP-FPM服务否则代码可能不能及时生效:

对于上面第4点提到的,位于 WordPress根目录下的 readme.html文件,你直接删除该文件就可以了。这份文件是关于 WordPress的简单介绍和安装说明,安装好账户就没有什么用途了。

如果使用的是 Apache服务器,也可以简单的在根目录下面建立 .htaccess文件,里面增加如下内容:

当然,以上这些做法,隐藏了 WordPress的版本号,并不能真正解决网站中所存在的安全漏洞。确保网站安全的第一要素,还是要及时更新 WordPress核心软件,所使用的主题、插件;使用健壮的用户名和密码;不要使用来历不明的盗版主题和插件等。

引用链接


如何正确隐藏WordPress的版本号?

WordPress首页显示摘要(手工设置)

WordPress比较长的时间了,一直是在首页显示文章全文的,但是最近由于摘抄的某些文章中的图片非常多,导致每次加载首页会下载非常多的图片资源,整个页面加载速度都被拖慢了,于是想只在首页显示摘要,而不是全文显示。
网上搜索了一下,发现 WordPress早就有这个功能了,如下图:


如果想手工编辑 Html的话,只要简单的加入

标签就可以达到相同的效果了。

WordPress 4.7.x版本禁用 REST API

最近 Wordpress频繁爆出漏洞,尤其是 REST API部分,简直是漏洞百出,但是,从4.7.0版本开始,这部分功能被深度整合进入了核心模块,没办法彻底屏蔽 REST API,只有通过 rest_authentication_errors这个接口来限制非登陆用户,具体代码如下

此部分的代码需要被添加到当前主题的 functions.php中的最后即可。
增加完成后,重启 Apache2服务器,然后再访问https://www.mobibrw.com/wp-json/ 就可以看到错误信息了。

参考链接


解决从WordPress 4.7.1升级到WordPress 4.7.2失败后再次更新提示"另一更新正在进行"

从WordPress 4.7.1升级到WordPress 4.7.2,中途失败了,结果再次更新的时候,提示“另一更新正在进行”,如下图所示:

这是由于在升级 Wordpress时, Wordpress会在数据库 wp_options表中增加 core_updater.lock记录。如中途打断 Wordpress升级,这个记录会留在数据库中。当下次升级时, Wordpress检测到此记录的存在就会返回”另一更新正在进行”。可通过终端登录数据库删除这条记录来处理.

如上操作之后,再次重新升级,就可以解决问题了。

参考链接


从零创建WordPress自定义插件

序曲


使用 Wordpress统计插件 WP Statistics之后,经常会出现某个IP的访问突然出现比较多的情况,那么这个时候就需要了解这个IP访问的是哪个页面,是否发生了访问攻击。但是遗憾的是, WP Statistics并没有根据IP地址查询访问记录的功能,因此,我们就自己写一个查询插件好了。

创建插件的文件和文件夹


Wordpress插件存储在 wp-content/plugins/文件夹中,而我们的新建文件也要存放在这个文件夹中。一般情况下,如果所制作的插件非常简单,可直接把所有代码放在一个 PHP文件中,然后把其放在 wp-content/plugins/文件夹中。但是,我们这里要制作的插件要使用两个文件(一个是主要的插件文件,另一个为执行管理页面的文件),因此,我们需要把新创建的文件另放在一个文件夹中,我们这里把这个文件夹命名为 wp-statistics-visitor-query

创建插件的功能文件


我们就要创建插件主要文件了,我们把其命名为 wp-statistics-visitor-query.php。当然,你也可把其命名为其它名称,这并不重要。

然后再文件的头部增加插件的描述信息,如果不增加描述信息, Wordpress是找不到这个插件的。增加的内容如下:

这样操作完成后,就可以在插件管理界面中找到名字为" WP Statistics Visitors Query"的插件了。

使用行为钩子(Action Hook)


虽然插件现在已在管理面板显示,但是由于它只含有 header信息,因此它并没有其它功用。现在,我们就来增加它的功能吧。
Wordpress允许用户把插件代码放在模板的任意位置,包括页面的空间位置及页面创建过程中的逻辑位置。在此,我们将进一步了解后者,逻辑位置——即行为钩子。

行为钩子

我们可把行为钩子视为回调函数。 Wordpress执行某项操作时,如,显示页脚,它就会让插件来执行自己的代码并且要在确切的时间运行。
为了方便大家理解,我们以 my_plugin这个普通插件为例,当系统显示页脚时,这个插件就会执行 mp_footer()函数。因此,显示页脚时,使用名为 add_action()这个特殊的函数,我们就会告知 WordPress调用 mp_footer()函数:

add_action()函数把行为钩子名称作为其第一个参数,同时把必须执行的函数名称作为其第二个参数。我们将把此函数调用添加到插件的主要文件(即包括 header信息的文件),通常把它放在需要执行的函数代码正下方(本例中即放在 mp_footer()下)。可在 Wordpress Codex查看所有可用的行为钩子 。

创建插件管理页面

我们要先创建新菜单条目并把其放置在设置菜单中。

Wordpress提供了新建菜单可调用的钩子(即 admin_menu),因此,这也是我们创建菜单条目的最佳地点。

既然已确认需使用的行为钩子,我们接着就要定义行为钩子运行时要调用的函数了,我们把其称为 visitors_query_admin_actions()。代码显示如下:

正如您所看到的,我们已创建了 visitors_query_admin_actions()函数,并用 add_action()函数让其与 admin_menu行为钩子结合。接下来,我们就要给 visitors_query_admin_actions()函数添加一些代码以创建真正的菜单条目了。

WordPress其它许多操作类似,添加新菜单条目也非常简单,只需调用一个函数就可完成!把新菜单条目添加到设置菜单需要使用 add_options_page()函数,然后把以下代码添加到 visitors_query_admin_actions()函数中。

此时刷新管理页面,设置页面下就已包括新建菜单条目了。
QueryVisitorFromIP
WordPress中的每个菜单都使用不同的函数来添加其子菜单条目。例如,如果要给工具添加子菜单条目,我们就应该使用 add_management_page()函数,而非设置页面使用的 add_options_page()。更多信息,请查看 Wordpress Codex中的添加管理菜单
重新回到新添加的代码,或许您已注意到了最后一个参数。它即是请求新增菜单条目时,系统将调用的函数,我们也将使用它来创建插件的管理页面。
我们最好把此页面功能放在单独的文件中,并给其命名为 query_visitor_import_admin.php

此时点击设置菜单下的链接,系统将显示空白页面,这是因为 query_visitor_import_admin.php文件现在没有任何内容。
接下来我们配置页面中的内容,如下:

如此调整之后,需要禁用一下插件,然后再启用,否则可能不会生效。

代码详解


熟悉HTML和PHP的人都会理解以上代码,但我们这里仍将简单解释一下。

  • 我们首先用 wrap类创建一个 div,它是一个标准的 Wordpress类,使新建页面能够和 WordPress管理版块的其它页面风格一致。
  • 表单将使用 POST方法回发数据。这意味着表单数据将由同一页面接收,这样以来,我们就可添加数据库更新代码到同一文件。
  • 查询数据库的时候使用 Wordpress自带的全局数据库对象 $wpdb来访问数据库。

参考链接


从零创建WordPress自定义插件