If you have followed all the buzz about HHVM, you know that HHVM started a revolution. It can speed up PHP execution dramatically. You can expect more than 2x the speed compared to PHP 5.6 for WordPress. PHP is not the only factor in website speed. You can use a $10 VPS and experience a website that can host Millions hits per day by the means of Nginx caching. On the other hand, there are situations where you can’t use such methods.
Don’t forget about Woocommerce and applications where you require backend not being cached.
While HHVM started a revolution, PHP quickly followed. Now, PHP7 is slower only for some 10%. I am sure PHP developers won’t rest and will improve the speed in upcoming releases.
Downside of HHVM was compatibility (not all plugins were compatible) and some bugs that took some time get fixed, like memory leaks (high memory consumption) and high CPU usage in some cases. I hear that most problems were fixed with the latest version and compatibility improved even further.
HHVM required some knowledge to implement, meaning that not every hosting panel (Vesta, Virtualmin, Zpanel, etc…) implemented it. It was used primarily by hosting companies and websites with dedicated VPS administrator. Easyengine made it possible for normal people to use HHVM. On the other hand, super popular ServerPilot does not use HHVM, but they featured PHP7 support recently with similar speed boost.
One major benefit of PHP 7 is almost identical speed for WordPress and easier implementation. If you would like to try PHP7, now is the time. PHP 7 is stable and plugins and themes got support, at least if they were updated in the past couple of months. Time to try PHP7 is right.
By using one of the best hosting panel solutions – ServerPilot. I think that time is right for developers to test their plugins, especially in this time when great and affordable assets like DigitalOcean (charged by the hour and very affordable) and ServerPilot (free) are available.
PHP 7 WordPress Plugin compatibility
I asked couple of friends what plugins they would like to see compatible with PHP 7 out of the box and here is a list of Free and Premium plugins I had access to and were deemed essential to my friends.
- Admin Word Count – Free
- AdRotate – Premium and Free
- Akismet – Free
- Awesome Shortcodes For Genesis – Free
- Broken Link Checker – Free
- CloudFlare – Free
- Contact Form 7 – Free
- CSSHero – Premium
- Duplicator – Free and Premium
- Easy Plugin for AdSense – Free and Premium
- Easy Social Share Buttons for WordPress – Free
- Fanciest Author Box – Premium
- FEEDZY RSS Feeds by b*web – Free
- FFF Cron Manager – Free
- Genesis Custom Footer – Free
- Genesis Shortcodes – Free
- Genesis Simple Sidebars – Free
- Genesis Sandbox Featured Content Widget
- Google Analytics by Yoast – Free and Premium
- Growmap Anti Spambot Plugin – Free
- Hide My WP – Premium
- Jetpack by WordPress.com – Free
- Kraken Image Optimizer – Plugin is free, but the service is premium
- Leadin – Free
- Local Indicator – Free
- NextScripts – Free and Premium
- Optimize Database after Deleting Revisions – Free
- OptinMonster – Premium
- Pretty Link – Free and Premium
- Redirection – Free
- Remove XMLRPC Pingback Ping – Free
- Roost Web Push – Free but the service is premium
- RSS with Images – Free
- SEO Friendly Images – Free
- Shortcodes Ultimate – Free and Premium
- Simple 301 Redirects – Free
- Theme Junkie Custom CSS – Free
- ThirstyAffiliates – Free and Premium
- TinyMCE Advanced – Free
- UberMenu 3 – Premium
- Ultimate Nofollow – Free
- UpdraftPlus – Free and Premium
- WordPress Related Posts – Free
- WP Pro Ad System – Premium
- WP Rich Snippets – Premium
- WP Rocket – Premium
- WP Shortcode by MyThemeShop – Free
- WP-Mail-SMTP – Free
- WP-Optimize – Free
- Yoast SEO – Free and Premium
- Simple Social Icons – Free
Once I activated website on a PHP7 RC enabled website, the look was not so pleasant. I was greeted by a blank white website with an error message that prevented website from loading:
Fatal error: ‘break’ not in the ‘loop’ or ‘switch’ context in /itsmdaily/public/wp-content/plugins/social-networks-auto-poster-facebook-twitter-g/inc-cl/fl.php on line 39
Warning: Declaration of tcm_management_table::prepare_items($search) should be compatible with WP_List_Table::prepare_items() in /itsmdaily/public/wp-content/plugins/thin-content-manager/thin-content-manager.php on line 39
Warning: Cannot modify header information – headers already sent by (output started at /itsmdaily/public/wp-content/plugins/thin-content-manager/thin-content-manager.php:39) in /itsmdaily/public/wp-includes/pluggable.php on line 1207
After 2 minutes I got fourth error on the site:
Fatal error: Uncaught Error: Class ‘GS_Featured_Content’ not found in /itsmdaily/public/wp-includes/widgets.php:591 Stack trace: #0 /itsmdaily/public/wp-includes/widgets.php(720): WP_Widget_Factory->register(‘GS_Featured_Con…’)
PHP 7 and the WordPress plugins
Out of the box, 3 plugins from the list that do not work with PHP 7 are:
- NextScripts – Last updated 2 weeks ago, but I hear release 4 is imminent
- Thin Content Manager – Last updated 2 years ago
- Genesis Featured Content – Last updated 1 year ago
As you can see, older the plugin, higher the chance that it will break. But be careful, even recently updated plugins can break like NextScripts. Test before moving the site to PHP7.
But in general, you will be fine. Maybe a plugin or two will have a problem. I am sure plugins will get an update soon after PHP7 official release.
update 2016: Nextscipts was updated with PHP7 support and now works.
One plugin that caught my attention from the list is called Simple Social Icons from StudioPress
Maybe because the plugin is really simple, but, the author, Nathan Rice, updated the plugin with PHP 7 compatibility in beginning of August. You can see excerpt from the change log below:
If plugins work and If WordPress is compatible with PHP7, would I run my site on a pre-release version? I would, but…
Unfortunately, NewRelic is not yet available for PHP7. Meaning that I could not spot serious problems and even plugin related problems while away from the computer. But as soon it’s available, I will move my sites to PHP7 powered droplet.
What about the plugin X?
Well, both WordPress and PHP tend to break plugins with latest releases. For example, WordPress 4.3 broke a plugin Front-end Editor (in beta).
If you were used to it, then heck, bad things happen. And I remember back in the PHP 5.5 days that a plugin called Max Banner PRO (Premium) stopped working on PHP 5.5.
When the plugin gets abandoned, users have two choices. Find a replacement or use a PHP version older than 5.5. If you use a plugin that does not work with the latest PHP version, Free or a Premium, the best thing to do, is to notify the author. If you are lucky, they will add a support fairly quickly.
Which leads us to a general question. How do I know that the plugin I use, will be supported in the future?
I guess that the best answer is to use plugins which are from companies with reputation (Automaticc, StudioPress, MyThemeShop, ElegantThemes, etc…) Applies to both, free and Premium.
When searching for free plugins in a WordPress repository, look at the last updated date and number of installations / downloads. They are all good indicator of a plugin health. Perhaps one day WordPress will hide unsupported plugins from the repository.
You should note that abandoned plugins can have a vulnerability and can serve as a break in point to your website.
Second problem you can have with plugin that get’s abandoned is clean up. Imagine using a shortcode plugin. You insert nice objects in your posts. You have about 1000 posts. Plugin gets abandoned. You have to find a replacement.
And the fun part? You have to replace 1000 shortcodes…
PHP 7 was released on December, 3rd, 2015
If you want to try PHP7 and are running your website on a shared hosting with cPanel, find a Select PHP Version in cPanel.
Then select version 7 and set it as default with Set as current button.
Check your website, just in case a plugin is not compatible with the latest PHP version. Hopefully, you won’t have a problem. If you do run into the problem, then it’s time to find a replacement for that plugin. There is no excuse to use outdated plugins.