解决 WordPress on SAE 不能编辑图片的问题

修改Wordpress

这个问题已经困扰我很久了,今天要在iPad上发一文章,发现拍的照片太大了,而Wordpress的图片编辑功能图片总是出不来,iPad又没好的APP可以改分辨率,索性开电脑排查错误。

先升级到4.1版,发现问题还在。然后就一条一条跟踪代码,在关键地方插入 var_dump 语句查看变量,终于在 文件 class-wp-image-editor-imagick.php (位于 /wp-includes )的 141行跟踪到 Exception,大概是给定的URL不能加载图片,然后在 dump URL,得到地址为 “saestor://wordpress/uploads”开头的URL,应该是Imagick不支持SAE的storage协议所致,看来不能使用Imagick而得改用gd。

解决办法很简单,改图片编辑器为gd即可,在 wp-includes下找到media.php,在第 2489行,找到 $implementations = apply_filters( ‘wp_image_editors’, array(  ‘WP_Image_Editor_Imagick’,’WP_Image_Editor_GD’ ) ); 改为 $implementations = apply_filters( ‘wp_image_editors’, array(  ‘WP_Image_Editor_GD’,’WP_Image_Editor_Imagick’ ) ); 即把GD作为优先使用的图像编辑器即可。

如下图所示,保存修改后,Wordpress即可恢复图像编辑功能。

修改Wordpress

当然Imagick的性能比GD好,只是懒得去了解如何用Imagick加载SAE的storage里面的图片,平常编辑GD足够了。注意:上面的代码行数可能因为版本不同而不同。