解决WordPress更新提示无法连接到FTP服务器

最近WordPress更新到最新版本之后,更新插件的时候提示如下图所示的错误信息(以前一直使用FTPS更新插件):

观察系统日志,没有发现异常,倒是登陆认证日志出现异常

$ tail -f /var/log/auth.log

出现如下内容:

Mar 15 17:23:27 xxxx sshd[9476]: Did not receive identification string from 121.199.27.227

解决方法如下:
WordPress目录下找到wp-config.php文件并编辑,在最后一行加上:

define('FS_METHOD', "direct");

貌似这样操作之后,效率快了很多的样子。

参考链接


在指定的页面中阻止WordPress插入额外换行

众所周知WordPress会对编辑器里的内容再格式化一遍,比如自动分段。但有些时候这些添加的格式反而也会让人很头疼。最近遇到WordPressinput,select,pre前会插入额外的换行即<br>,从而破坏页面样式的问题。

继续阅读在指定的页面中阻止WordPress插入额外换行

ubuntu 16.04上调整使用Innodb存储引擎的MySQL性能

最近WordPress上使用的WP Statistics打开的时候,整个网站都几乎处于卡顿的状态,无法正常访问。

使用top命令发现主要是mysqldCPU占用很高。于是使用mytop分析当前执行的查询语句,发现主要是在查询wp_statistics_visitor表导致的问题(我设置了不要删除浏览记录,因此会导致表内数据偏多)。

大致估计是由于分配给MySQL的内存不足导致频繁的磁盘交换引起的性能问题。

解决方法比较简单,就是增大MySQL可以使用的内存即可。

首先确认服务器上的MySQL使用的存储引擎是否为Innodb(缺省情况下已经是Innodb了):

$ mysql -p -e "show variables like '%storage_engine%';"

如果确定是Innodb,则查询Innodb被限制使用的内存大小,如下:

$ mysql -p -e "SELECT @@innodb_buffer_pool_size;"

默认情况下是128MB,鉴于内存已经不够了,我们扩大到256MB,这部分内存原则上越大越好,越大与磁盘的交互越少,性能越高。

如下命令调整Innodb的内存:

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]部分增加(如果存在则修改):

innodb_buffer_pool_size = 256M

然后重启MySQL服务:

$ sudo service mysql restart

上面的调整之后,性能提升还是比较明显的。

参考链接


让WordPress 4.9支持上传更多文件类型

WordPress对上传的文件类型是有限制的,在这里,我们以在子主题twentyfifteen-child中增加扩展名为.bz2的文件类型为例子。

首先编辑子主题的functions.php文件

$ sudo vim /var/www/wordpress/wp-content/themes/twentyfifteen-child/functions.php

在文件尾部增加如下内容:

<?php
	/*BUG Fix for after wordpress https://core.trac.wordpress.org/ticket/21299*/
	add_filter( 'wp_check_filetype_and_ext', 'upload_mimes_fix_after_47', 10, 4 );
	function upload_mimes_fix_after_47($data, $file, $filename, $mimes) {
		global $wp_version;
		if( $wp_version == '4.7' || ( (float) $wp_version < 4.7 ) ) { return $data; }
		$filetype = wp_check_filetype( $filename, $mimes );
		return [ 'ext' => $filetype['ext'], 'type' => $filetype['type'], 'proper_filename' => $data['proper_filename'] ];
	}

	/*add upload file type*/
	add_filter('upload_mimes', 'custom_upload_mimes');
	function custom_upload_mimes ( $existing_mimes=array() ) {
		$existing_mimes['bz2'] = 'application/octet-stream';
		return $existing_mimes;
	}
?>

参考链接


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

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

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

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

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

参考链接


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

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

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

$ sudo vim /etc/php/7.0/fpm/php.ini

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

重启PHP-FPM服务

$ sudo service php7.0-fpm restart

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

移除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中,使用如下配置即可:

#reject all .bak,.old file download because wordpress upgrade may rename 
#wp-config.php to wp-config.php.bak 
<FilesMatch (.*)\.(bak|old)>
        Order allow,deny
        deny from all
</FilesMatch>