If you have customized your Divi site beyond simple CSS tweaks, not to mention if you´re a developer who has customized many client sites, you should be aware of possible troubles when updating Divi to the brand new 2.4 version.
Divi 2.4 is a great theme… but it´s almost a new one
If you´ve followed the Divi 2.4 prerelease posts at the ET blog and today´s official release post, you already know that Divi has become an even more powerful and flexible theme with the 2.4 update. And, if you´ve already had the chance to download it and give the new version a little try, you´ll most surely be delighted with all the new options, settings and possibilities it brings.
But in order to include all those new capabilities, ET had to change a lot of things in Divi. Probably the most important changes are related to the new Divi Builder, which has been completely revamped. The new Builder code is based on OOP (Object Oriented Programming), each of the Divi modules being constructed by a new OOP class instead of the old procedural PHP functions. Also, ET changed the name of some PHP functions that are used throughout the theme. So far so good. But the problem is this: backwards compatibility with the removed or renamed functions hasn´t been provided.
The bottomline is that, if you´ve modified original Divi functions in a client site by means of a child theme, updating the parent theme to Divi 2.4 without modifying your child code can cause a lot of trouble. For one thing, if you´ve modified any of the Divi modules to add or change some functionality for your client, your modified code will not be called by the new Divi Builder, so your custom functionality will be lost. Also, if you´ve modified any of the original Divi functions that have been renamed, you´ll get a PHP error on the site frontend and the page won´t be correctly loaded.
I´ve asked ET to provide some backwards compatibility for customization code based on the previous versions of Divi because otherwise a lot of sites that have already been handed by developers to their clients will stop working alright as soon as the user updates Divi to the 2.4 version. I don´t know whether those compatibility features will finally be added to Divi, but for the time being I considered it my duty to warn you about the possible problems and also to provide the appropriate means in order to avoid those problems for Divi Children and Engined users.
This is not something strictly related to Divi Children child themes or Engined, since it applies to many Divi sites that have been customized beyond simple CSS tweaks, no matter whether their custom functionalities were developed from scratch or whether they´re based on any of my free Divi products.
But please don´t panic. It´s not my intention to make you worry too much and there is no need for it. Let´s take a closer look at the possible different situations:
- If you´ve only customized your Divi site via CSS modifications without changing functionalities, you don´t need to worry at all and you´ll most probably find that the 2.4 update works seamlessly for your site (you may have to take a look at everything in order to make sure though, because you could find some minor flaws like a module changing its title from h1 to h2).
- If you´ve modified any of the original Divi functionalities by yourself, the best thing you could do right now is wait before you update Divi. In case ET finally provides some backward compatibility code, that might be the end of your problems. In case they don´t, you´ll need to choose whether to update your custom code to make it work with Divi 2.4 or to keep the older version of Divi without updating. At any rate, if we´re talking about closed client projects, you won´t need any of the new Divi 2.4 features for it, so there is no hurry and you can take your time before updating the parent theme.
- If you´ve used Divi Children to create and customize your child theme or if you´ve used Engined as your child theme, whether you know it or not you´re most probably using custom functionalities that won´t work if you update Divi right now to the new 2.4 version. Here´s what you need to do:
- Please wait and don´t update Divi yet.
- If you´re using a child theme created by Divi Children, I´ll provide a way to avoid compatibility problems very, very soon. More on this in a moment.
- If you´re using Engined, I´ll also release a new compatible version, although it´ll take longer than the Divi Children fixes.
- If you´re going to use Divi 2.4 for a brand new site, you´re simply going to love it and of course there´s nothing you´ll need to worry about. Actually, if this is your case, you shouldn´t be even reading this post. So just go ahead and enjoy Divi 2.4!
The Divi Children case
Many things have changed in Divi that will affect sites using child themes created by Divi Children (or at least those where the Divi Children customizing features have been used), such as:
- Divi 2.4 code completely redefined using OOP for all the Divi modules.
- Divi 2.4 Advance Settings and customizer settings are sent to output overriding your child theme css output.
- Some Divi functions have been renamed, even if their funtionalities are still the same.
- Even some minor html changes will prevent some CSS tweaks from working as expected.
In some cases the fixes needed to update Divi Children child themes to make them work alright with Divi 2.4 are not light and straightforward modifications. But fortunately I was privileged to be one of the Divi 2.4 Beta Testers, and therefore I had the chance to see what was changing several days before the Divi 2.4 official release.
So, I´ve been working on a Divi Children update that will not only make newly created child themes work fine with Divi 2.4, but it will also let you update your previously created child themes to make them compatible with the new version of Divi.
I´ll release the new Divi Children update very soon, hopefully in just some hours from now. It is almost ready but I wanted to wait until the official Divi 2.4 release and then have the opportunity to test everything with the finally released version of the parent theme. So please have a little tiny bit of patience and wait until I release the new Divi Children update before updating Divi in any site where you´re using a child theme created by Divi Children.
Edit 2015-06-18: The new version of Divi Children has been released.
The Engined case
Engined is a complex child theme with more than 500 customizer settings, many of which have been adopted by ET for the Divi 2.4 update (or at least some settings equivalent to them have been). If you´ve used Engined, you´ll recognize many settings in the new Divi 2.4 version, like for example the “Hide header on homepage load” Engined setting (“Hide navigation until scroll” in the new Divi version), or the ability to customize the Divi buttons, not to mention the intensive use of Customizer settings.
But so many things have changed in the way Divi now works that it is impossible for me to cope with all the necessary modifications for the Engined child theme at the moment. Right after I release the new Divi Children version I´ve talked about above, I will resume the Engined compatibility re-coding, and I´ll try to release a new version of Engined soon.
But right now my priority is Divi Children. Why? Because thousands of finished, live sites out there are using child themes that were created by Divi Children, and I would like them all working without any problem as they´ve been working until today.
Engined, on the other hand, was released less than a month ago. Even though many people are using Engined now (and loving it, by the way), the number of finished sites is much smaller than in the case of Divi Children.
If you´ve used Engined for any site you´ve already finished and that is live now, please don´t update Divi yet and wait for the update, whether it is my new Engined update or any compatibility update coming from ET. And if you´re using Engined for a site still under development, I need to ask for a little more patience because I know you´d like to have all the new Divi features available for it asap. As you can imagine, I´ve to use a lot of patience myself because I´m having a lot of unexpected work to do these days. 🙁