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.
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.
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:
- WordPress regularly bumps the recommended PHP, MySQL and Apache version and no one bats an eye.
- Dropping support for IE versions 8, 9, and 10 just happened.
- WP 3.2 dropped the PHP4 support – but how?
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:
- 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.
- 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.
- 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 …
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_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?
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.
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.
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.
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.
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.
There were unit tests missing in my hacktoberfest project. Unfortunately there is no framework which does proper unit tests for WordPress plugins or themes. Most of them do integration tests so I made another approach to speed up tests and keep them very modular. Continue reading “Proper and fast unit tests in WordPress”
Allow and disallow access to terms comes down to only one capability and there were no cap for single terms. This isn’t great for an atomar user access control. Since WordPress 4.7 there are a few more capabilities to have granular control what a user is allowed to do and what not. Continue reading “Capabilities for single terms”
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 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”
My hacktober project will be a WordPress Theme that is very extensible and contains clean code. Instead of multiple project I concentrate on one new and the first steps look very good! This will become the greatest theme of all time. Continue reading “Hacktober 2016: Best WordPress Theme in the world”
How filters and actions are used in the WordPress Core is very interesting and a nice principle for extensible plugins or themes. Within the last years I stepped several times through the WordPress core and saw some lovely structures. Let me show you some of them so that your plugin or theme is more flexible and makes other developers happy. Continue reading “Writing extensible plugins: Early exit”
Some developer like to extend the WordPress tables with a custom wp_posts column. To have it as a sortable column for queries like in get_posts you need to extend WordPress a bit. This article shows how to make custom columns sortable. Continue reading “get_posts: Order by custom wp_posts column”
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”