Today we have a new master version released, version 3.0.148! The last master version was 3.0.123, so there are 25 new versions worth of upgrades, fixes and optimizations in this new master version, relative to the previous. In this post we’ll take a closer look at what’s new.
In going through all of the changes, version by version on the dev branch, one thing I noticed is that a large percentage of the commits over the last year had to do with resolving hundreds of issues reported at GitHub. While none are major things, the combined effect of so many minor fixes is actually quite large, and definitely makes this upgrade worthwhile, regardless of the new additions. While an itemized list of fixes doesn’t make for good blog reading material, I did just want to preface this post by mentioning that this is one of the major differences between 3.0.123 and 3.0.148.
A special thanks to everyone that's contributed to this version with reports, ideas, code and troubleshooting at GitHub over the last year. You all are the reason why ProcessWire is so reliable and stable. Thanks also to Teppo Koivula for covering all of the core updates and everything else he does at ProcessWire Weekly. In addition, thanks to Horst for providing the initial development of the WebP support, one of the most exciting additions in this version relative to the previous master. Thanks also to the entire ProcessWire community for all that you do in supporting the project and helping others here. I think we've got one of our best master version releases ever, let’s take a look at what’s new in this version relative to the last master version…
New $page->meta() method – A useful new Page method that provides a new storage option for page-specific data, independent of ProcessWire fields.
New $page->if() method – This new method enables you to conditionally render a string or execute an inline function according to whether the expression in the first argument matches.
New “Unique” status for pages (Page::statusUnique) – a way of specifying that a page should have a globally unique name.
New “Flagged” status for pages (Page::statusFlagged) – Currently it is used to flag a page as potentially having errors. A page receives this flag from the Page editor when the last interactive save to it produced one or more error messages.
New $cache->renderFile() method – does the same thing as $files->render() (rendering any PHP file as a template file with all API variables, etc.) except that it caches the output so that it doesn’t have to re-render the same file until your cache expiration rules take effect.
New “toggle” field – You can think of it like a checkbox in that it offers a simple ON or OFF selection like in this example. But rather than having a single checkbox to represent that state, it uses two buttons with their own labels. This enables the user to specifically select ON or OFF, YES or NO, TRUE or FALSE, etc. It comes with several of predefined labels like these, but you can also specify your custom labels (and in multiple languages if you'd like).
Improvements to field/template context override settings – You now get a list of all field settings that you want to allow to be customized per-template, you get a table that shows you a diff of what overrides are present, and you now get modal links to modify them.
New Notice::noGroup constant that adds the ability to programmatically send Admin messages, warnings and errors that shouldn't be collapsed or grouped with others of the same type. This can be used to make sure a user can't miss an important notification.
System improvements
.htaccess file upgrades – New improvements to core .htaccess file and new additional .htaccess files for redundant security.
This section assumes you are upgrading from another 3.x version, but if you are upgrading from a 2.x version then you should go here instead.
When upgrading from one 3.x version to another, please use the General Upgrade Process. This consists primarily of making sure you've got everything backed up and then just replacing your /wire/ directory with the one from the newest version.
In addition, if you are currently running any 3.x version prior to 3.0.135, you will also want to upgrade your root .htaccess file to the newest version:
Upgrading your .htaccess file
If you haven't made any custom modifications to your .htaccess file then you can simply replace the old one with the new one. The new one is in a file named htaccess.txt so you'll rename it to .htaccess after removing your old one.
If your .htaccess file does have custom modifications, you know what they are, and are comfortable applying them to the new one — go ahead and follow the step above and then make those same modifications to the new .htaccess file.
If you aren't sure what custom modifications your .htaccess file might have, or how to apply them to the new one, please see this post which will quickly guide you through it: How to upgrade an existing .htaccess file
If you are curious what's new in this latest .htaccess file version, please see this post for all the details.
Thanks for reading and Happy New Year! I hope that you enjoy this new master version of ProcessWire 3.0.148. Stay tuned, lots of great stuff is on the way for ProcessWire in 2020!
ProcessWire is a timeless tool for web professionals that has always been committed to the long term. It started in 2003, gained the name ProcessWire in 2006, and has been in active development as an open source project since 2010. Now more than a decade later (2020), we’re just getting started, as ProcessWire continues to grow and develop into the next 10 years and beyond!
A look at two new modules released this week: LoginRegisterPro and FileValidatorImage. Discussion on upcoming plans for new FileValidator modules and how they are useful in PW. Plus a brief highlight of two great new ProcessWire-powered websites: Aaron Copland (an American composer) and Sono Motors (an EV startup). More
Last Saturday we started getting hit with heavy traffic at the processwire.com support forums, and it soon became a full blown DDOS frenzy. This post describes all the fun, how we got it back under control, and what we learned along the way. More
ProcessWire Weekly #559 The 559th issue of ProcessWire Weekly brings in all the latest news from the ProcessWire community. Modules, sites, and more. Read on!
Weekly.pw / 25 January 2025
ProcessWire 3.0.244 new main/master version ProcessWire 3.0.244 is our newest main/master/stable version. It's been more than a year in the making and is packed with tons of new features, issue fixes, optimizations and more. This post covers all the details.
Blog / 18 January 2025
Subscribe to weekly ProcessWire news
“I am currently managing a ProcessWire site with 2 million+ pages. It’s admirably fast, and much, much faster than any other CMS we tested.” —Nickie, Web developer
Martin Gartner
An amazing release! Thanks for your hard work!
Reply
Lance Osborne
This is a great summary. Just discovered a couple of things that I missed earlier in the year.
Reply
GFXmonkey
Great update - looking forward to moving my sites over to this! Thank you for this fantastic release.
Reply
MrSnoozles
Congratulations and happy new year. Same as Lance I discovered a couple new things here although I usually read the blog updated weekly.
One thing I just noticed: For me it would make sense if wireEmpty returns true on NullPage objects too. Would it for you?
Reply
ryan
Yes, I think it would make sense — good idea! I will update.
Reply
Michael Csáki
Great overview about the terrific changes. Thank you!
Reply