The PHP 5.2 burden of WordPress

Hello Folks, long time no see. My self-employment consumes much time but after a great start I finally manage to have time for this blog again. And I am bringing unsettling news: WordPress has a problem!

Spoiler: It’s about technical debt and old PHP versions!

The problem of leading so many people

We know that moving a big mass is very hard, slow and sometimes upsetting. In general we experience this in two ways. Either you pull someone towards your target or you push this person there. Pull expects others to move without the need to move and push has the effort to help each on until the whole group crossed the finish line.

(okay, wait. The “teacher” in me wants to say: “there are more ways but lets stick to the major two.”.)

Pull people to the sunshine

If you want to move people away from the dark side you can show up the advantages of the more modern solutions. Doing this gives them the freedom to decide about an upgrade and some intrinsic motivation happens.

Image result for free hugs
Find this image on https://www.flickr.com/photos/stillwanderer/3314737024 (without changes)

Sounds easy? It isn’t. We all had a brilliant idea once but did we manage to immediately convince people? It takes time because …

  • Those advantages are very technical and can only be sold as “performance” and “security” enhancements.
  • Some people may not hear you scream those advantages as their WP are either dead or for an intranet.
  • Moving towards you has some costs like upgrading the hosting and (even worse) fix very old plugins that break due to incompatibility.

So pulling people towards you is an effort for them which make plenty site-owner resign. Lets fix that …

Pushing people to the wonderland

Another way would be to push the remaining part towards the new world. Give them a hand and walk side-by-side with them along the way. This helping hand is what they want, when it comes to things they neither understand nor have time for. But don’t drag them to the finish line – gently push.

Vroooooooom!

So this other side sounds good too but it also has some problems:

  • Too much pressure/changes and some people fall off the road (moving away from WordPress).
  • Walking slower than the steady progress of technology will leave you and your protégé behind.
  • Educating everyone about the topic is hard because one half doesn’t care and the other doesn’t understand.

Your words must be wide spread enough to meet every kind of technical expertise. During my study as a teacher I’ve learned: Classes with 15 students are perfect to educate but more is almost impossible – the larger the harder. But all in all we have a pull and a push – so we’re good right? Well, not really.

Do the IDGAF

What if I told you, that “don’t care at all” is a solution? Imagine WordPress still supports PHP 5.2 but no longer with WP 5.0 and beyond. This isn’t crazy, that’s the actual way how WordPress does things and it’s great.

Don’t make me think – WordPress has a strategy for this

We had such situations and still have them today with WordPress:

So it just happens from time to time but WP 4.7 for example still supports the old IE and gets updates. WordPress 3.0 still could’ve got patches after PHP 4 was dropped. Now we struggle with PHP 5.2 and should do the same.

Let time do the job

Admit it: Most things in our live solve themselves just by ride out. This applies to the WordPress situation too:

  1. Announce that WordPress 5.0 and higher no longer supports PHP 5.2
    and disallow people with such low PHP to upgrade to a higher WP.
  2. WP < 5.0 only gets bugfixes and security fixes which is no effort, because those will shrink over time as finding new bugs or leaks gets rare and difficult to find.
  3. WP >= 5.0 continues on the usual path but with new crazy stuff on its back.

How about that? You can drive your vintage car and still get some parts for it. Or you buy a new one and overtake the competitors. The effort for this is less than the effort to push/pull a whole crowd and all its hosting companies. Don’t tell them to clean up their room, just let them be because things are working for them.

Time will solve this. And at some point you can officially say:

PHP 5.2 has been insecure for 10 years now. U mad bro?

Keep this up for the next 5 years

Modern software like PHP, Symfony and so on have a lifetime. With the above described “IDGAF situation” WordPress can achieve this too without leaving people behind.

Every 3 years some PHP version could be dropped to close the gap to the current modern state. But the last WordPress Version before the drops will automatically become some kind of LTS (long term support) for 5 years. The effort for such LTS is low as it only supports its own frozen upper and lower boundaries of PHP.

What do you guys think?
How should WordPress do such change?
Did I miss something that might not work out?

And: If someone finds the Trac Issue then please let me know – I can’t find it right now …

Recent changes with WordPress 4.7

WordPress 4.7 comes with a lot of new features. There are some everyone should know about. Read on what are the best changes in October so far.

The best changes in October so far

It is mid-october and there are already a few changes worth mentioning. I am really happy about them. The first one might bring a lot of new plugin playing around with the capabilities for terms.

More granular control over terms

Some new capabilities were introduced for a more granular control over terms:

  • edit_term
  • delete_term
  • assign_term
  • manage_post_tags
  • edit_categories / edit_post_tags
  • delete_categories / delete_post_tags
  • assign_categories / assign_post_tags

All of these capabilities map to the manage_categories capability. This keeps it backward compatible and does not change the internal behaviour about registering taxonomies.

This is so great that I wrote it down in an own post. Read this one if you like to know what those new capabilities can do for you. How about rejecting the deletion of non-empty terms?

Capabilities for single terms

Custom backend language for each user

A very nice change is that every user can choose his own locale. First of all this is for the backend and solves a very common case (see “User Admin Language“):

[…] but if a Chinese client asks me to look into an issue in their site admin, I need to change the default WP language in WP config to English, do what I need to do and then change it back.

But with the upcoming WordPress 4.7 there will be a switch for the backend language of every user.

screen-161011-184203

This works because the WP_User class has “locale” as a new property which can be fetched using the new get_user_locale() function. This function is now used in almost any places within wordpress. It seems to read and write in the “locale” user meta. So if you already use this meta field for users then be aware of this change which will use or overwrite the data.

Shiny little things

Approving comments have become a bit better. Once a visitor is approved then he is allowed to continue posting comments without approving them. by just providing the right email. But registered user can change their email address so the site admin needs to revalidate such users. WordPress 4.7 does it a bit better by checking the user ID. So once a registered user is approved then he can chane his mail address as often as he wants without the need to reapprove comment of him/her.

Dangerous changes in WordPress 4.7

As nice as some changes are in WordPress 4.7 some of them are really suspicious. Those are the most interesting unlikely decisions up to strange breaking changes.

This tag cloud has been removed in WP 4.7
This tag cloud has been removed in WP 4.7

Good bye tag cloud! There used to be a tag cloud as shown in the screenshot which has been removed in WordPress 4.7 . This is because the list of terms already is ordered by the usage count. Having the popular tags as well felt like a duplicate so it has been removed.

New update screen in WordPress 4.7
New update screen in WordPress 4.7

And this might be the new update screen in the backend. Currently it is a simple and ugly list of things. Thanks to Pascal Birchler it will use the WP_List_Table class which is a thing I really like. But some might miss the “Download”-Button. Take a look in you backend when 4.6.2 is released and see that there is a download button. In WordPress 4.7. it will be removed.

WordPress 4.7 so far

There are additional things to know about the upcoming WordPress:

  • Easier Theme inheritance in WordPress 4.7
  • Override any shortcode you like
  • Custom bulk actions
  • Smilies, logos and other abbreviations
  • Create your own event system with WP_Hook
  • Customizer: Support for IE8 dropped

Read “WordPress 4.7: Custom bulk actions, Theme inheritance and more” to learn more about those features. Further ones can be found in “Everything cool and wrong about upcoming WordPress 4.7“:

  • WordPress wants to get rid of global variables
  • Functions instead of global variables
  • Functions instead of constants: wp_doing_ajax()
  • First steps for autoloader: Classes get their own file
  • Negative paging in queries leads to 404

Expect more to come in this blog. I keep track with the latest changes in the WordPress Core and show the best of it.

Conclusion

WordPress really has some goodies to show and deliver for christmas this year. Again there are parts I really love to see but also some that don’t make sense.

Remember what happend when the additional link on edit-post pages were removed. Some in the community got crazy about removing a tiny button, while a link right beside it does the excact same functionality. This time it is the tag cloud that I am curious about. I wonder who will miss it.

What do you think about the decisions that the WordPress-Team made? Is this slightly refactoring and clean up a good way or just to slow to keep the pace with other CMS? Let me know in the comments below.

Hide other users posts in the backend

In WordPress you can hide other users posts in the backend for those who should not see them. Authors see every post but are not capable of editing them, which can be really frustrating. Two short snippets help cleaning up the post lists programatically. Continue reading “Hide other users posts in the backend”

WordPress 4.7: Custom bulk actions, Theme inheritance and more

WordPress 4.7 brought a lot of new features in September and there are more to come. Again there are great things like custom bulk actions, better theme inheritance and many more. But there are also things that might break your customers site which I want to show you.  Continue reading “WordPress 4.7: Custom bulk actions, Theme inheritance and more”

wp_text_diff – Highlight text changes as visual control

The wp_text_diff view of revisions is not only a thing for admins but also for guests. Imagine the client can view the differences he made in a form as a visual control. This is a funny and easy way for visitors to verify their changes.  Continue reading “wp_text_diff – Highlight text changes as visual control”

Email Subscription Form without Plugin

Recently someone asked me which plugin is the best for email subscription form popups. First of all WordPress already has things for that and secondly I don’t like those boxes. Anyway here is a solution that is already given in the WordPress Core.  Continue reading “Email Subscription Form without Plugin”

Take control of new bundled plugins and themes

On the WordCamp Frankfurt 2016 I showed some useful constants. One of them was CORE_UPGRADE_SKIP_NEW_BUNDLED which allows you to suppress/control the installation of twenty* themes and akismet with every WordPress update. Let’s take a look how to do that. Continue reading “Take control of new bundled plugins and themes”

Use the force for a reliable design

The Theme Customization API has become a great thing in WordPress and gives much power to the user. But some settings should never change, like colors for corporate identity. To keep them from accidental change or loss you can override their value no matter what. Let me show you how. Continue reading “Use the force for a reliable design”