New Serialized Data Handler While we hadn't seen any user issues with the previous structure, much of it was designed over 10 years ago. We were also alerted to an extremely hard-to-exploit security vulnerability inherent in PHP's native unserialization process. It was time to take a hard look to see if any modern PHP or WordPress enhancements could improve how we process data. Because modern PHP offers specialized ways to solve these problems, we decided to build our own custom serialized … [Read more...]
Category: WordPress
Advanced Sidebar Menu – Version 9.11
Ordering Links By Custom Titles Both category and page menu support setting a custom title for links in the menus. A custom title allows you to customize the display in the menus wherever the category or page is displayed. This has always worked fine when using an order by like "Page Order" or "Created" but could have unexpected results when ordering by "Page Order" or "Name." Ordering has always been handled within the WordPress queries using database table columns. Using this default way … [Read more...]
Retrieving Customers Subscribed to a WooCommerce Product
On many of our clients' ecommerce sites, we use the WooCommerce Subscriptions plugin to manage recurring products or memberships. In some cases we need to retrieve a list of all customers who are actively subscribed to a particular product. Common Solution The generally accepted solution for listing the customers is to retrieve a list of subscriptions and loop through each one to retrieve the customer. It looks something like this. This works fine for small sites with a couple … [Read more...]
Advanced Sidebar Menu – Version 9.10
New Order Option for Page Menus From the beginning, you have been able to order the pages displayed in menus using various fields like titles or page order. Now you may also choose to order pages by ascending or descending order. Ordering by descending was previously available using a filter, but now you can select the order in the Pages block or widget. The filter still works, just not needed anymore. Usage is pretty straight forward, but we added documentation anyway. Continued … [Read more...]
Go Live Update Urls – Version 7.1.2
NodeJS Version 22.21.1 We use NodeJS tools for building the plugin assets as well as running unit tests against the TypeScript code. We updated the underlying node version and packages to support the latest LTS version of NodeJS. ESLint Version 9 Version 9 of ESLint introduces a "flat configuration" system making using multiple configurations at once more intuitive and reliable. Not to mention some new useful rules and plugins. We updated our linting system to use ESLint version 9 … [Read more...]
Advanced Sidebar Menu – Version 9.9
Block Registration Size Reduction: Phase 1 The Gutenberg block system required you to register information for blocks on both the PHP and JavaScript side for attributes and other items to work correctly. The common way to solve this requirement is to use a block.json file to hold all registration information then parse this block.json file in both PHP and JS when the editor loads. Despite the obvious performance issues with parsing JSON on every request, we fundamentally avoid this … [Read more...]