After many delays and issues, the Widgets Panel has been replaced by the block editor in the new WordPress 5.8. While I like the idea, the final execution is mostly done badly and will (and already is) cause many problems to countless websites unaware of the changes.
Ever since WordPress 5.0 was released in 2018, the ideas list for the future included the use of block editors everywhere, and the widgets area was one of the first to get converted. Well, that didn’t work quite as planned. Almost 3 years later, we have the first version of the block editor-powered Widgets panel landing in WordPress 5.8. As with anything Block Editor-related, this implementation starts as a very badly implemented replacement with huge potential to cause a lot of frustration to unaware website owners that will be greeted by the broken Widgets panel courtesy of the new Legacy Widget block.
So, what is likely to happen to most websites using currently available widgets (now called Legacy Widgets)? In many cases, widgets will work fine, with some styling issues to the widget interface. But, many widgets will cause red error messages to stack on the top of the new widgets panel, and many widgets will outright break the panel with the PHP fatal errors.
To disable the new Widgets panel and revert to the normal Widgets panel, the simplest way is to use Classic Widgets plugin available on WordPress.org. Also, some themes are already doing this by default.
So here is the overview of the issues found by myself and other users. I think that all these issues are reported as bugs, but fixing them will take a lot of time for sure and much more testing (that should have been done before the release):
- New widgets panel has no proper context for preview to work. A lot of widgets to render content depend on the context on the front end (which type of page it is on), and without that context, it will render nothing, or it will break (almost always).
- New widgets panel is part of the administration interface, but the content is loaed via REST-API, so to render both interface or preview, it lacks admin content, so in many cases, plugins will not load what they need to show the interface because is_admin() function will not work.
- New panel has own default styling that will break the styling for the widgets interface used by a lot of widgets and plugins, causing a lot of issues with the options display.
- Legacy Widget block is impossible to debug, and it behaves very strangly with a lot of complex widgets when saving widget settings. All the data between front end and back end now flows through REST API, and all the widget settings are no coming through encoded, so it is hard to follow what is going on.
- Legacy Widget block sometimes fires updates twice when saving widget, and it does things to the data, removing some data values, without the easy way to debug it’s behavor.
- You add new widget, but the Update button is not working, and any changes you make to widgets, or you added widgets can’t be saved. The console error log shows various React related errors.
- Using normal blocks in the sidebars will cause 99.99% of themes to render each block as a widget and as a result you will end up with awful looking sidebar. If you want to have few blocks rendered as a single widget with title and eveyrthing, you need to add Group block first. No themes are ready for this new Widgets panel.
- Nothing works at all. I managed to get this, WordPress 5.8 install, using TwentyNineteen theme and no plugins are active, getting something like the image below shows, and there is no way to save anything, Update button is completely broken.
For this latest problem, I have opened a ticket on WordPress TRAC:
The major issue now is that even if you want to bring your widgets up to the code to work with the Legacy Widget block, it is unlikely to be possible for a lot of widgets. I believe that Legacy Widgets has many bugs that are causing the problem, and until those bugs are resolved, old widgets can’t be successfully updated to support it, and it is hard to know now what is Legacy Widget bug is. The rule before all this was made should have been: if the widget was working in WP 5.7, it has to work in WP 5.8 under Legacy Widget, but we are long past that now, and the only solution for 99% of the WordPress websites is to disable Block Editor powered Widgets panel.
This new Widgets Panel had to be an opt-in feature, and it has no place in being activated at all on any live website that had at least one legacy widget active. The Classic Widgets plugin that was released had to be installed, and the new WordPress 5.8 and activated by default. The dashboard widget shows detailed information about the change and gives the user the option to enable the new blocks Widgets panel. Why, after so many launch failures of the major features in WordPress in recent years, we still get major breaking changes without giving users the option to opt in to use the feature, instead of breaking the website first and then the user has to opt-out of the new feature??? And, with this feature, if the Widgets panel is broken, the user will not even see the message about the new panel. Really unbelievable that this has been shipped as the active feature in the first place, or maybe it is completely believable given the track record with similar issues in the past.
The Legacy Widget in the WordPress 5.8 is largely untested, and it works without issues only with simple widgets; anything remotely complicated breaks. I really hope we will see some fixes soon, because, right now is unusable for most purposes.
As for the Dev4Press plugins with widgets, I have already released few plugin updates fixing the loading and styling issues. There are some widgets that work partially (some widget settings can’t be saved due to the issues with Legacy Widget), but nothing will break the Widgets panel or cause fatal errors. I plan to release updates to more plugins in the coming days. If you notice any similar issues, please let me know.
Also, let me know what you think of the new Widgets Panel, the way it was handled and included in the new WordPress version, and how many issues you have run into using it.