After more than three weeks of beta testing, we are thrilled to announce the release of version 2.7 of Easy Digital Downloads. This update includes a lot of significant improvements that bring better performance, improved interface designs, enhanced export options, numerous developer-focused enhancements, and more.
We have been running 2.7 on our own sites for several weeks and now we are ready to release it to all of you. Let’s take a look at each of the primary enhancements included in 2.7
View Order Details screen
The View Order Details screen is one that all shop owners are familiar with and probably one that many shop administrators spend a lot of time on. In 2.7 we have made several distinct improvements to the screen.
First, we have introduced support for adjusting individual item amounts. Previously it was only possible to adjust entire order totals, but now shop admins can edit the price, tax, quantity, and total for each item on the purchase separately, giving much greater flexibility.
Second, we have made some adjustments to the organization of the screen in order to incorporate the new per-item amount fields and made the top-half of the screen more intuitive.
The screen also has three other improvements:
The Customer Details section is now easier to work with. The process for assigning an order to a new customer is more intuitive and navigating to the details screen for the linked customer is now simpler.
Any discount code redeemed on an order is now linked directly to the discount edit screen.
If taxes are collected, the tax rate charged on the order is now shown next to the tax total field in the Update Payment box.
CSV Earnings Report
Since the very earliest versions of Easy Digital Downloads, we have included a PDF Earnings report that allowed store owners to export a PDF file that showed sales and earnings over a specified time period. In 2.7 we have replaced this PDF report with a CSV version that also includes more information.
This report will generate a CSV file for the specified time frame that includes:
Sale count
Gross earnings
Refund count
Amount refunded
Revoked count
Revoked earnings
Abandoned count
Abandoned value
Failed count
Failed value
Net earnings
With this CSV report it is easy to generate a month to month, annual, or even multi-year report that gives a clear overview of a store’s performance.
Variable Pricing for Bundles
Bundles now include support for specifying the price option for included products. For example, if your products have three standard price options, you can now set which price option on the products customers will get access to when purchasing the bundle.
This allows store admins to set the download files customers gain access to and also allows for extension-enabled features (such as licensing) to be setup with price-option-specific settings.
Complete Abandoned / Pending purchases
Easy Digital Downloads 2.7 allows customers to resume incomplete purchases on subsequent visits. This includes both completing abandoned purchases and resubmitting purchases which may not have completed successfully when initially submitted.
An example scenario is as follows:
Customer adds items to their cart
Customer goes through the checkout with PayPal, but does not complete it on the PayPal end (and does not click ‘Cancel and Return to Site’)
Customer visits their ‘Purchase History’ page and finds the newly added pending payment
A ‘Complete Purchase’ button will appear allowing the customer to checkout with PayPal and complete the transaction.
Faster reports
We have spent a lot of time working on making our earnings report pages faster and more capable of handling large data sets. The improvements we have made in 2.7 are so significant in fact, we managed to take the load time of the reports graph from 3 minutes (for a particular test case) to just 1-2 seconds. In our test case, we loaded an earnings report that showed January 2012 to January 2017. This time period included large data sets for every month within that range and only took 1-2 seconds to load. If you spend a lot of time viewing earnings / sales reports, this should be a very welcomed improvement.
Developer API improvements
2.7 of Easy Digital Downloads includes several distinct improvements for developers.
EDD_Cart object
For the first time since version 1.0, Easy Digital Downloads now includes an EDD_Cart object that provides a simple to use API for interacting with the shopping cart contents. This new object provides methods for accessing and manipulating cart data. It also dramatically improves the performance of the checkout screen. Prior to 2.7, the checkout screen could easily take as much as 2.6 seconds to loads, even on a high performance site. In 2.7, this loading time has been reduced by nearly two seconds. On one test case, we saw the checkout load time go from 2.6865 seconds to just 0.8456 seconds with no change in place other than the new cart object.
New edd_get_payment() function
A new function has been introduced to act as a wrapper method for retrieving an instance of an EDD_Payment object in lieu of creating an instance by accessing the class directly.
The edd_get_payment() function works with the object cache to improve performance of retrieving payments. The new function accepts the same parameters as the constructor of EDD_Payment but also returns false if a payment was not found (i.e. incorrect payment ID was specified).
If you are interacting with EDD_Payment objects, please use the new edd_get_payment() function as it can have a significant performance improvement.
EDD_Discount object
Another new API we are introducing in 2.7 is the EDD_Discount API. It has been designed to simplify handling discount codes and follows the same model to that of EDD_Payment making altering a discount simple too. Previously, all discount interaction was handled through the edd_discount_ functions, resulting in the creation of a new object each time a function was called. Now, a single instance of EDD_Discount holds everything about that discount code making discounts more efficient in general.
Other notable improvements
The changes above are the primary features we’d like to highlight, but there are other important improvements as well.
The applied tax rate is now saved in the payment meta and displayed on the View Order Details screen
Selected image size is now inserted into File URL field in Download Files box
Messages registered with edd_set_error are now output via a hook
Improved WP-CLI payment creation to support a date range
Quantity fields can now be disabled on individual download products
EDD_Payment and edd_get_payment now accept a payment transaction ID
Introduced a more EDD-specific downloads shortcode [edd_downloads]
Moved edd-ajax.min script to footer to allow async loading of jQuery
Added a ‘Refresh Reports’ button to the graph view
Switched to using new IPN endpoints for PayPal Standard
Zip / postal code now included in tax calculation function
Improved the fault tolerance and error handling of creating discount codes
The HTML markup of the profile editor has been updated to match other forms in EDD
API request logs can now be exported from Downloads → Reports → Export
File download logs can now be exported from Downloads → Reports → Export
Notable bugs fixed
Along with all of the enhancements in version 2.7, we have also fixed a number of bugs.
EDD_License did not properly support item_id
Earnings by Category estimates were not correct
Stopped redirect to PayPal on Buy Now buttons if PayPal gateway is disabled
Amazon Gateway settings are now checked before loading the scripts for Amazon Payments
The edd_download_redirect_to_checkout filter wasn’t respecting the desired outcome in some configurations
The payment notes were included in normal comment count
Disabling API request logging was not working
The history-downloads.php template was not properly showing variable price names
When adding fee to cart, we now preserve the decimal precision
Recounting store stats now resets the report transients
Multi-option purchase mode and variable prices work better with buy now buttons
We are really pleased to have this release available for everyone today and we welcome any and all feedback you may have about it. If you have any questions or issues, do not hesitate to leave a comment below or open a support ticket.