WP Offload S3 1.4 Released

By Ashley Rich

Today is release day for WP Offload S3 and with it comes some new features and some changes. It’s been just over two months since we released version 1.3, but as we didn’t publish a release post for that version I will include the noteworthy changes here.

Remove All Files From S3 Tool

Prior to version 1.3, removing your Media Library from S3 was a manual process and involved deleting rows from the database, which is far from ideal! This tool completely automates the process by going through your Media Library and deleting the files from S3. If a file doesn’t exist on your server, it will be downloaded before being deleted.

Remove files from S3 modal

Remove All Files From Server Tool

The ‘Remove Files From Server’ option can greatly reduce the disk usage on your server by deleting local Media Library files as they’re offloaded to S3. However, when you enable the option it doesn’t retrospectively remove the local files. That’s fine if you enable the option when first installing WP Offload S3, but what happens if you’ve already uploaded your Media Library to S3? You could potentially have thousands of files locally on your server with no easy way to remove them.

We have included a new tool to delete all Media Library files from your local server that have already been offloaded to S3. The tool is only visible when the ‘Remove Files From Server’ option is enabled. We also show a prompt when the option is enabled for the first time.

Prompt to remove server files

The files are quietly deleted in the background and the process can be paused or canceled at any time.

Sidebar tool removing server files

Better Support For Non-Latin Filenames

WP Offload S3 now fully supports filenames containing non-latin characters including Chinese. Previously, any filename starting with a non-latin character would result in an empty filename on S3. All occurrences of basename have been replaced with the i18n friendly wp_basename().

Media Library Action Permissions

Until today, anyone with the manage_options capability can access the on-demand Media Library actions, which by default is Admin users only.

Media Library S3 actions

But, what if you want to give permission to a single Editor, or a trusted Author? Up until this point, there was no easy way to grant those users permission. A new capability has been added that allows you to control which users have access to the on-demand Media Library actions. Anyone with the use_as3cf_media_actions capability will have access.

New Content Filtering Hooks

In WP Offload S3 1.2 we introduced content filtering. One of the default places that URL rewriting happens is on the_content filter which will replace any local server URLs with their S3 counterpart. If you need to filter any custom content you can simply apply the_content filter and the URLs will be rewritten as expected. However, there are quite a few additional actions that hook into the_content that you might not wish to be applied to your custom content. For example, you may not want shortcodes to be parsed or paragraph tags inserted.

In version 1.4, we are introducing 2 new hooks which allow you to filter custom content. They are: as3cf_filter_post_local_to_s3 and as3cf_filter_post_s3_to_local. These filters will automatically convert S3 URLs to local URLs and vice versa for Media Library items.

$content = 'Lorem ipsum... <img src="http://wordpress.dev/wp-content/uploads/2017/03/image.jpeg" alt="" width="300" height="200" class="alignnone size-medium wp-image-491" />';
$content = apply_filters( 'as3cf_filter_post_local_to_s3', $content );
// $content = 'Lorem ipsum... <img src="https://s3-eu-west-1.amazonaws.com/your-bucket-name/wp-content/uploads/2017/03/image.jpeg" alt="" width="300" height="200" class="alignnone size-medium wp-image-491" />';

AWS SDK Updated

The AWS SDK has been updated to version 2.8.31 and support for the London and Montreal regions has been added.

We’ve received a number of requests for supporting v3 of the SDK, which is something we will tackle in the future. The latest version of the SDK requires PHP 5.5+ and with 42.7% of all WordPress installs running on servers with PHP 5.4 or less, bumping the minimum version isn’t currently an option. The solution will be to support both SDK versions, which is going to require a substantial refactor of the WP Offload S3 codebase.

If you’re keen to have support for v3 of the SDK, please let us know. The more requests for this we get, the higher it goes on our priority list. We’re also open to having someone sponsor the development to bump the priority.

Bug Fixes

As usual, we’ve also fixed a number of bugs. Check out the full WP Offload S3 changelog for more details.

What Next?

That’s all for this update. In the next version, we plan on introducing a new tool for moving all attachments between S3 buckets. This should simplify the process of using different S3 buckets for different environments, such as production and staging. If you haven’t already, subscribe below to be the first to hear about the release. That’s all for now, let us know what you think of this release in the comments.

About the Author

Ashley Rich

Ashley is a Laravel and Vue.js developer with a keen interest in tooling for WordPress hosting, server performance, and security. Before joining Delicious Brains, Ashley served in the Royal Air Force as an ICT Technician.