Hey everyone! How’s it going? Arindo here.
We just rolled out WP Ultimo 2.1.0!
This update gets rid of some pesky code that caused problems between WP Ultimo and PHP 8+, updates and replaces old dependencies, and makes a few other small tweaks.
We intentionally kept new features to a minimum with this release. It’s designed to be a solid PHP 8+ compatible foundation for our future feature-packed updates.
A huge amount of effort went into updating our internal tooling and transitioning to better development workflows. This helps us break free from some restrictions the WordPress ecosystem puts on plugins and themes while keeping everything running smoothly with PHP 7.4.30+.
Version 2.2.0 will introduce yet more changes in that direction, allowing us to benefit from the huge ecosystem of quality packages available in the larger PHP 8+ ecosystem. We’ll discuss a bit more about that when the time comes.
It’s worth mentioning, though, that this version has a ton of changes – touching pretty much every part of the plugin to make sure it’s compatible with PHP 8+.
Most of these updates are small and shouldn’t cause any issues. But since we’re talking WordPress, it’s always a good idea to back up your network before updating to 2.1 (you probably do this already, but a friendly reminder can’t hurt).
If you run into any issues, let us know via the support email [email protected].
In other news, I’m pleased to report that our efforts to restructure our internal work processes at the end of last year are paying off. We have recently begun implementing the processes we devised after closely examining why progress was slow, even with a larger team, and it has been great to see the results.
Now, we’re doing “less” to accomplish more, which might sound a bit odd. We’ve got focused teams working on a single project for a set amount of time, without constantly getting pulled in every direction by feature requests, suggestions, or improvements. We’ll get there – one feature or improvement per team per cycle at a time. After all, it’s better to launch a polished, nearly bug-free, well-documented, and user-friendly new feature or improvement every few weeks than a bunch of half-baked, glitchy, undocumented functionalities.
I’m confident that you will all agree, even if it takes some time to see the results. I’m trying not to overpromise, but if we can ship even a small portion – say, 10% – of what we have planned for this year, WP Ultimo will easily be one of the best investments you’ve ever made in a WordPress plugin.
I have to admit that 2.1 took way longer than originally expected, though. That’s because it grew to be such a large release, and that’s something we’ll avoid from now on as well.
With 2.1.0 out, the next item on our to-do list is to finish the adjustments to the new Account panel (which we started to roll out last week) to make it available to all customers and start to release our brand new Documentation for the plugin, focusing heavily on how to get started. This will happen in the next couple of weeks.
We have also been super busy with add-ons, fixing tons of issues, and adding some cool new features. We’ll keep you updated when new versions get released via the same channels we use for core releases (community and blog posts, and email).
Don’t forget to keep an eye on our Roadmap, which is where we let the community know what we’re working on at the moment and what’s coming down the road.
The full changelog, as always, follows below (you can also find it on our changelog page).
That’s all! See you soon =)
## [2.1.0] - 2023-04-04 ### Added - Added an option to export customer data as a CSV file in the customer list admin page - Added the `wu_add_product_setup_fee_line_item` filter to the cart Setup Fee line item - Added a new suite of Cypress tests to cover creating new sites from within the admin panel - Replace the PHP Unit task runner with Pest - Replace Cypress parallelization services with our self-hosted instance - CI actions to validate PR titles - Pull Request template with CI action to verify if checklists were properly followed - Removed the id `server-size-0-description-0` from the price description element of the order-bump/simple field template - Added dependabot settings for npm, composer, and GitHub actions alerts - Added a `display_product_description` field to the Order Bump field - Added `wu_after_switch_template` action (present in v1) - Added Github Action to test PHP 7.4 compatibility after Rector runs - Added the necessary adjustments to the samba.yml files to make the repository compatible with the new samba images for PHP 8.1 - Added new ESLint rules from our shared library - Added new build tasks using the gulper library file - Added (initial) CHANGELOG.md file - Added the WP Ultimo plugin version as a const on the class `\WP_Ultimo`, allowing for access without the need for an instance - which might not yet exist - Improved compatibility with the last Rank Math release, avoiding plugin auto-activation during the site creation process when active on the main site - Added generation of a new .pot file containing countries, states, and cities using the new text-domain wp-ultimo-locations - Added user license data to System Info - Added NOBLOREDIRECT constant to System Info - Added a "catch-all" error handler around problematic hooks on the template previewer to prevent minor errors from breaking it - Added a filter to allow developers to change the "Unlock to Upgrade" URL - Allows overriding checkout template elements - Added capability verification to delete form handler on Admin Edit Pages to allow this action for Support Agents addon - Added filter `wu_list_row_actions` to row actions on Admin List Pages - Added a filter to the featured site image cropping size - Added the Add-ons link to the main plugin menu ## Changed - Redirect to the current payment page on the Paypal confirmation process instead of the main register page - Reduced the amount of data sent to create a new order in checkout to prevent PHP warnings - Improved PayPal confirmation values and trial message - Deprecated the use of the property `$version` on the class `\WP_Ultimo` in favor of a class const - Improved checkout error handler to display actual field names from the current checkout form - Removed Cloudflare integration alert as it's no longer required (<https://blog.cloudflare.com/wildcard-proxy-for-everyone/>) - Redirect the user to update the page when clicking to unlock a plugin or theme not allowed for the current membership - Remove the X-Frame-Options header while in the template previewer - Add a new logger class to better track errors ### Fixed - Event visualization not showing Payload - Breakage in limitation merging for sites, memberships, and products - Performance issues with the Freemius SDK, especially on larger networks - Incompatibility with UI Press Lite causing fatal errors on the login page - PayPal auto-renewal toggle not activating after IPN recurring profile created message - Fixed handling Checkout Forms with no fields - Replaced deprecated `wpmu_new_blog` used on our Rank Math compatibility code - Additional offset checks when trying to access Form fields - Remove the current site "Admin Panel" link from the Account page when the "show_admin_link" is set to false - Error when renewing a membership manually created by an admin - Products with "Contact Us" pricing type of "Contact Us" changing to free on save - Membership issues with activation on PayPal profile creation - Visits counter script is always loaded, ignoring the status of the actual setting controlling it - Ensure array value when searching for user email errors for multiple account features to avoid PHP warnings - Enforce site ownership before applying a new domain mapping via the frontend form - Prevent globally-scoped callables from being used as form field attributes - Replaced deprecated `wpmu_new_blog` used by WP E-Signature, which prevents sub-site creation from completing properly - Fixed the URL returned to register and other wp ultimo pages - Fixed checkout triggered by a shortcode template page not skipping the template selection step - Fixed checkout triggered by a shortcode pricing table page not preselecting the desired plan - Clears session for the sign-up process after the registration is successfully over - Add URLs as an exception to the white-labeling feature to avoid breakage with WordPress URL passes through the `sprintf` function - Fixed incompatibility with WP CLI when the `--skip-plugins` is present and the context is a customer sub-site - Improved the get method of items displayed in model selectors, to avoid not loading all available items - Fixed critical error while rendering pricing table without an active product - Domain Mapping and SSO inconsistencies in PHP 8.0 environments - Allow `wu_get_*` functions to be used as form field attributes callback - Fixed the display of tooltips on checkout form fields - Added an extra check to make sure product variations exist before replacing the cart product with it - Filters already defined default pages from selection in settings - Remove `height: 100%` from the legacy-shortcode.css file - Ensures that inactive sites are not included in the template previewer list - Ensures that inactive sites are not included in the template selector - Ensures the main site is always added to the My Sites list for super admins - Fix Stripe scripts being loaded even with the payment method disabled - Renewal invoices from Stripe webhooks without tax and discount - Ensure the cart is correctly built on checkout in cases where payment gateway webhooks complete the payment before we finish the process - Ensures that we only show the migration pending notice to networks there were not migrated yet - Fix template overrides - Changed the response code when subsite maintenance mode is on to 503, instead of 500 - Fix email broadcast to target products - Use the default WordPress session on Checkout Form Editor to avoid errors with cookie sizes - Fixed stripe refund amount received in the webhook call - Fixed gateway confirmation redirection used on Stripe Checkout and PayPal for update form - Fixed Stripe Checkout billing cycle anchor on downgrades - Added the customer data to the payment renewal event payload so we can send customer emails - Added the customer data to the mapped domain creation event payload so we can send customer emails - Ensures that we only show the migration pending notice to networks there were not migrated yet - Fixed template overrides not being correctly loaded - Changed the response code when subsite maintenance mode is on to 503, instead of 500 - Avoid pending site duplicates after creating an account - Set membership as trialing when creating without a payment method and user verification - Remove membership internal data from events - Remove the customer from sites different from the customer-owned type. - Fixed the test to create a new contact us product plan - Fixed product description unexpected backslashes being added when apostrophe, backslash, single and double quotes were used - Fixed limits and quotas widget to show limits only if limitations are enabled