- Important
- Fixed: Plugin & Theme Limitations not being loaded, leading to plugins not being hidden, or auto-activated after registration;
- Fixed: Site duplicator now deals with plugins that have custom database tables with foreign key constraints – for example, Bookly;
- Fixed: Incompatibility between Avada and mapped domains;
- Fixed: Incompatibility between Avada and template previewer;
- Fixed: Incompatibility with FluentCRM breaking the registration flow;
- Fixed: Domain mapping issues on previous build;
- Fixed: Payments pending on trial plans;
- Fixed: Products with wrong duration after checkout;
- Fixed: Sites created in double in some circumstances – specially when using Stripe & Stripe Checkout;
- Added: A completely re-designed and re-written SSO module, built to work in a higher level of abstraction to support all current and future possible use cases; It deals natively with:
- Security: there’s a token exchange protocol that verifies both sides of the auth process;
- Cross-scheme Auth: When we are not able to access remote cookies due to different schemes being used, we force a regular redirect flow to authenticate the customer regardless;
- Admin Panel Access: Prevents the auth_redirect function from sending the request to wp-login.php before SSO has a chance to kick in;
- Auth for different Domain Options: SSO no longer focuses on mapped domains only. It gets triggered anytime there’s a mismatch between the target domain and the main network domain. This allows it to work with sites that were registered using different domain options offered on checkout;
- Loading Screen: the new SSO offers a setting that adds a loading overlay when SSO is being performed on the front-end;
- Support to Incognito Mode: most browsers prevent cookies from being set from third-parties, nowadays. Our SSO detects incognito mode and forces a full redirect, instead of trying to authenticate directly with the verify code;
- Added: Placeholders on Thank You page snippet code editor, to pass values to conversion snippets;
- Added: Country classes with state and city lists to allow for more granular control over how taxes apply territorially, as well as to guarantee that valid billing address info is entered during checkout. At the moment, the following countries are supported: US, GB, BR, FR, RU, DE, NE, ES, CA, CN, ZA (this list was devised based on our current customer base, new countries can be added as requested).
- Added: REST API field requirements and descriptions are now compiled and saved as static files at build time. This is done because we use reflection on PHPDocBlocks to generate the documentation of the fields, and comments might not be available if op_cache is enabled on production, causing the REST API to break;
- Improvement: Add CNAME records from Cloudflare to the DNS checking results, in addition to A and AAAA;
- Improvement: Updated DNS lib to prevent memory leaks when checking for DNS;
- Improvement: Adds fatal error catcher when the DNS resolver runs into a memory limit error, although this no longer happens due to the above fix;
- Improvement: Using CSS grid to lay fields on the checkout field instead of flex/float. This cleaned up the fields markup a good bit and makes it more customizable. By default, the checkout form is a two-column grid, with fields spanning the two columns;
- Improvement: Better responsiveness on the checkout form, resulting from the use of CSS grid;
- Improvement: Replaced the old hacky implementation of the Site URL prefix and suffix blocks (disabled inputs) with a proper flex block with a prefix and suffix element;
- Improvement: Checkout field blocks use less opinionated HTML tags (div, instead of p) to maintain semantic value and escape the default spacing CSS rules applied to paragraphs;
- Other
- Fixed: Negative values on sign ups by country widget;
- Fixed: Remove the email error message on sign up validation;
- Fixed: Taxable toggle on product update;
- Fixed: Discount code migrator not bypassing validation rules;
- Fixed: Error on site creation process passing the customer rules in the main site;
- Fixed: Makes sure the auto-submittable script is only added after wu-checkout was loaded;
- Added: Filter available templates on template viewer with selected products in checkout form;
- Added: Option to add a page on main site to redirect customer in blocked sites;
- Added: Hide customer sites from network admin top bar;
- Added: Created the wu_bypass_unset_current_user filter to allow developers to bypass the user unset on multiple account feature;
- Added: Possibility to see and change on customer admin page, the customer custom metadata set when user sign up.
- Added: An public api to customer meta data that handles sign up form titles and types of fields;
- Added: Memory trap to avoid memory limit fatal errors in some cases;
- Added: Support for Jetpack plugin in mapped domains;
- Added: Stripe Portal for customer payment manage;
- Added: Option to add a custom redirect path in Login block;
- Added: New image upload field layout with the stacked option;
- Improvement: New field for company logo on settings;
- Improvement: Block frontend site when a membership is not active;
- Improvement: sunrise.php install step on WP Ultimo Install Wizard;
- Improvement: better define of SUNRISE constant on wp-config.php on WP Ultimo Install Wizard;
- Improvement: Better UX on thank you page, showing if the site is in creation process;
- Improvement: Breaks the gigantic functions/helper.php file into lots of different small files with specific public apis, allowing us to make sure we only load what we really need in a sunrise time;
- Improvement: Adds a sunrise meta file to control whether or not we need to run ultimo tasks when Ultimo is disabled or not present;
- Improvement: First step in the direction of removing jQuery as a checkout form dependency given by dropping jQuery Migrate as a dependency;
- Internal
- Internal: Replaced all development scripts, build tasks, and more with the internal development library called MPB;
- Internal: Adds the Query Monitor panels to help debug issues while developing WP Ultimo core;
- Internal: Adds the development sandbox toolkit that allows developers to run and listen to particular events in a isolated context. Useful for timing how long a given hook takes to run, or to trigger build tasks that rely on a real WordPress installation running Ultimo to work;
- Internal: Updated node dependencies to their latest versions;
- Internal: Switched Tailwind to JIT mode, to save precious KBs on the generated framework.css file;
- Internal: Removed PHP Scoper as a composer dependency (it is now handled directly by MPB);
- Internal: Removed unnecessary composer dependencies;
- Internal: Updated composer dependencies to their latest versions;
- Internal: Finally switched the composer version internally from v1 to v2;