| @@ -4,9 +4,9 @@ | ||
| 4 | 4 | Tags: donation, donate, recurring donations, fundraising, crowdfunding |
| 5 | 5 | Requires at least: 6.9 |
| 6 | 6 | Tested up to: 7.1 |
| 7 | 7 | Requires PHP: 7.4 |
| 8 | -Stable tag: 4.16.9 | |
| 8 | +Stable tag: 4.18.0 | |
| 9 | 9 | License: GPLv3 |
| 10 | 10 | License URI: http://www.gnu.org/licenses/gpl-3.0.html |
| 11 | 11 | |
| 12 | 12 | Accept donations and begin fundraising with GiveWP, the highest rated WordPress donation plugin for online giving. |
| @@ -272,8 +272,36 @@ | ||
| 272 | 272 | |
| 273 | 273 | 10. Use almost any payment gateway integration with GiveWP through our add-ons or by creating your own add-on. |
| 274 | 274 | |
| 275 | 275 | == Changelog == |
| 276 | += 4.18.0: October 1st, 2026 = | |
| 277 | +* Enhancement: Improved donations list table performance on sites with hundreds of thousands of donations by paging on IDs first, fixing the total count query, and replacing the single-column donation meta indexes with composite ones | |
| 278 | +* Enhancement: Improved the Reports screen and legacy earnings stats on large sites by summing and counting donations in the database instead of loading every donation into memory | |
| 279 | +* Enhancement: Improved donation processing speed by skipping unnecessary offline donation email checks | |
| 280 | +* Fix: Recurring donation stats on the campaigns list now read from the cache correctly instead of showing empty values | |
| 281 | +* Fix: Campaign stats now show for campaigns that were added after the stats cache was built | |
| 282 | +* Fix: Resolved an issue where campaign stats showed as zero after viewing the Campaigns screen with test mode enabled | |
| 283 | +* Fix: Donations list table was running extremely slowly and including trashed donations on large sites. | |
| 284 | +* Fix: Resolved an issue where a database error while saving a donation, donor, subscription, campaign, or event caused a critical error and hid the real cause | |
| 285 | +* Fix: Resolved an issue where sites running PHP 8.4 or newer logged deprecation notices from GiveWP | |
| 286 | +* Fix: Database migrations started a second time in requests that arrive while a slow migration is still running. Now it runs one time and the migrations list now shows the latest run first. | |
| 287 | +* Fix: Resolved an issue where a PHP warning could appear on development copies of GiveWP that have not been built | |
| 288 | +* Fix: Resolved an issue where subscription webhook events caused a fatal error when the subscription had no initial donation | |
| 289 | +* Fix: Updated campaign duplication to create a single copy of each associated form when form metadata contains duplicate keys. | |
| 290 | +* Fix: Restored donor names, initials, and totals on the donor wall block and shortcode. | |
| 291 | +* Security: Enhanced security in Stripe webhook module | |
| 292 | +* Security: Enhanced security on the campaign block. (CVE-2026-97643) | |
| 293 | +* Security: Enhanced security for the Donor Dashboard access. | |
| 294 | + | |
| 295 | += 4.17.0: September 23rd, 2026 = | |
| 296 | +* Feature: Added the ability to embed donation forms on any website with a copy-paste snippet from the form builder | |
| 297 | +* Enhancement: Donation form embeds now show a loading state while the form loads | |
| 298 | +* Fix: Fixed PHP 8.4 deprecation notices about implicitly nullable parameters | |
| 299 | +* Fix: Fixed the revenue table index migration adding duplicate indexes when it runs more than once | |
| 300 | +* Fix: Added additional escaping to the legacy donation form's billing address fields. | |
| 301 | +* Security: Donors can no longer add unverified email addresses to their own donor record. | |
| 302 | +* Security: Enhanced security for donations imported from CSV | |
| 303 | + | |
| 276 | 304 | = 4.16.9: September 16th, 2026 = |
| 277 | 305 | * Security: Added additional validation to PayPal Commerce donation processing. |
| 278 | 306 | * Security: Added additional sanitization to donor information displayed on public pages. |
| 279 | 307 | * Fix: Resolved an issue where resuming a paused Stripe subscription triggered a fatal error. |