Today we are thrilled to announce that Easy Digital Downloads version 2.0 is now available for download and install from your WordPress admin.
The mantra for version 2.0 was refinement. Over the last six months, we have spent countless hours working to improve not only major features of the plugin but also the little details. When building a product that is easy to use, it is often the minor details that really make a significant difference.
Version 2.0 includes 127 separate improvements and bug fixes, the most of any release to date.
While we are pleased with all of the improvements that have been made, there are a few significant changes that I’d like to walk through with you.
Discount Codes
A lot of time was spent refining discount codes in EDD version 2.0 and several aspects of them have been significantly improved.
First and foremost, the edit screen for discounts is simpler and much easier to understand, especially the Download Requirements section. It was massively confusing previously; now it looks like this:
Second, we have improved the redemption process for discount codes during checkout. When an invalid discount code is entered, an inline message is displayed with the reason the discount code is invalid. This helps the customer understand exactly why their discount cannot be redeemed, whether it be due to an invalid code or one that is simply expired.
Third, we have made some improvements to the UI for applying a discount code. Previously discount codes were applied as soon as the input field lost focus. While this was great for the users that understood how it worked, many users felt it was not intuitive. We have resolved the confusion by introducing a dedicated Apply button to the discount field.
Checkout
There have been three significant improvements to the checkout screen.
First, when cart item quantities are enabled, there used to be an “Update Cart” button displayed for updating the quantities and prices after quantities were changed. This occasionally caused purchase errors because customers didn’t always realize they needed to click “Update Cart” in order for the checkout to reflect their changes. We decided it would be better if we simply updated cart prices (subtotal, taxes, discounts, and total included) automatically any time cart quantities are adjusted. This now all happens in the background with AJAX to provide the customer with a live-refresh of their checkout screen.
Second, we’ve introduced an option to control exactly how the registration / login forms are displayed on the checkout screen. You used to limited turning the registration / login forms on / off as a whole. Now you can enable just the login form, just the registration form, both, or neither form.
Third, we’ve added an option to enforce SSL on checkout. This will take care of redirecting non-https requests to https and will also ensure that all assets, such as images and script files, are loaded via https.
Payment History
The Payment History screens, some of the most important in the entire plugin, have received several significant improvements.
First, we’ve added the option to generate new file download URLs for any purchase directly from the View Order Details screen. We’ve also added a link between the View Order Details screen and the File Downloads log section in Reports that lets you easily jump from the order details to the file download history for any purchase.
Second, we have introduced Sequential Order numbers in EDD core. You can enable sequential order numbers from Downloads > Settings > Misc. There are also options to define the starting number, the prefix, and the postfix for order numbers. Along with providing sequential order numbers, we’ve also included an upgrade routine that will allow you to upgrade all previous payment records with sequential numbers.
The third major improvement we made is the introduction of improved search routines that allow you to search by payment transaction IDs. If you have the transaction ID from PayPal, Stripe, or some other payment gateway, you can now easily locate the corresponding EDD payment record by simply searching by the transaction ID.
EDD REST API
The EDD REST API has received a few minor improvements, including performance improvements and the ability to search for specific payment records in the API requests.
We have fixed a few issues with how the API Request logs are generated and displayed, as well as several other minor UI elements.
The most significant change with the REST API, however, is the introduction of the new API Keys tab in the Tools page:
Since the introduction of the EDD REST API, the API keys have been pretty well hidden in the depths of the user edit screens, so many, many users were not even aware that it existed. This UI will help to bring one of the most powerful pieces of Easy Digital Downloads into the light, making it even more valuable as more and more users utilize it.
With the new API Keys UI, site admins can easily view all API keys for the site and even reissue or revoke keys as needed. New API keys can also be generated from this screen. In the case that you suspect you may have a compromised API key, or one that is being abused by its user, there is a simple link for each API key that takes you to the API Request log for that particular key.
Tools
The Tools page has received some significant improvements and now holds several features that were previously spread out through the plugin. The System Info section is now in a tab under tools, as are the export / import tools for the EDD settings.
With the new Tools UI, we’ve introduced the option to blacklist specific email address. If you have email addresses that are used to make fraudulent purchases, you can now put those emails onto the banned list, preventing them from ever making a purchase again. This feature was previously offered as a free extension but was so useful for so many people, we chose to put it into core.
Export
The export options EDD provides have received three nice improvements.
First, we’ve introduced the ability to export Earnings and Sales stats overtime for a specific date range. This allows you to generate a CSV of monthly earnings and sales between two points, such as January 2013 to March 2014.
Second, we’ve improved the payment history export option so that it now includes the customer’s billing address for wach payment record (if collected).
Third, the customer export option now supports exporting customers of a specific product AND a specific price option. Previously it was only possible to export customers of a product, not the price option as well.
Other Improvements
There have been numerous other improvements throughout the plugin that really help bring it to a new level of polish, but a couple of the important ones to note are:
The shopping cart template is now much more flexible.
There is a new template file for the [edd_login] short code
There is a new short code and template file for a stand alone registration form, [edd_register]
The checkbox anti-pattern throughout the plugin has been mostly reversed
Numerous new action and filter hooks have been added
100% discount codes now work with credit card payment gateways, such as Stripe and Authorize.net
The [purchase_link] short code can now be used with SKUs
The EDD_Fees API now supports “item” and “fee” types for virtual product purchases. The checkout process also allows purchases that only contain an “item” fee. Products are no longer required to be in the shopping cart to make a purchase.
The EDD_Fees API now allows for fees to be marked as non-taxable
The Sales Summary widget has received some nice improvements
Complete Change Log
New: Added support for sequential order numbers New: Added a new [edd_register] short code New: Added an enforce SSL option New: Added greatly improved discount code validation during checkout New: Added a new API Keys list table in Downloads > Tools New: Added support for making purchases with cart fees only New: Added support for searching for specific payments via the REST API New: Added a tabbed interface to the Tools page New: Added an option to generate file download URLs from the View Order Details screen New: Added JS events for all frontend cart / checkout actions New: Added an “Apply” button to the checkout discount field New: Added an Earnings / Sales Overtime export tool New: Added support for searching payment records by transaction ID New: Added a template file for the [edd_login] New: Added support for Revisions to the Downloads post type New: Added {discount_codes} template tag to purchase receipt emails New: Added no-index, no-follow to checkout and account pages New: Added options to control how the login / registration forms are displayed on checkout New: Added support for passing a discount code to the checkout screen via a query arg New: Added textarea support to the EDD_HTML_Elements class New: Added support for exporting customers of a specific product and a specific price option New: Introduced edd_get_*_by() functions for downloads and discounts New: Introduced a edd_get_users_purchased_products() function New: Introduced a edd_is_host() function
Tweak: Removed the “Update” cart button and added a background update process so amounts and quantities are updated automatically. Tweak: Added billing address to payment history export Tweak: Added average earnings / sales to the detailed earnings reports for products Tweak: Added a link to the File Downloads log from View Order Details Tweak: Added a “was_completed” meta flag for payment records Tweak: Reversed some of the checkbox anti-patterns Tweak: Added support showing all Download products in the [downloads] short code Tweak: Log the reason a payment is marked as failed from PayPal Tweak: Added a columns variable to the edd_download_class filter Tweak: Added tax settings to the System Info Tweak: Added improved hooks to the edd_shopping_cart() function Tweak: Added a link to the product edit screens for each Download in the Purchased Downloads section of View Order Details Tweak: Added $payment_id to the edd_view_order_details_form_top action Tweak: Modified the way that the global file download limit affects individual file download limits Tweak: Add support for identifying products in by an SKU Tweak: Added support for hiding the credit card form if a 100% discount code is redeemed Tweak: Added support for moving the checkout cart to the bottom of the checkout screen Tweak: Improved the Product Requirements section of the discount edit screen Tweak: Improved the Amount field of the discount edit screen Tweak: Added WP_LANG constant to the System Info Tweak: Improved order history display for non-completed payments in the purchase history Tweak: Removed unnecessary serialization of payment meta
Bug: Cart fees weren’t properly taxed Bug: JS error caused by error in the German translation Bug: The File Download Limit field couldn’t be left empty Bug: Expiration dates were set improperly in WP_Session, resulting in the garbage collection not working Bug: Payment method icons fail to load properly on Windows servers Bug: Entering a currency sign in the price field results in an invalid amount on save Bug: Incorrect data format passed to number_format() Bug: edd_before_download_content action fired too early Bug: Customer names longer than two words cannot be properly saved in payment meta Bug: “Activate” button for discounts fails if a discount is expired Bug: Country field during checkout wasn’t actually required Bug: Duplicate IDs when multiple purchase buttons for the same product are on the same page Bug: Cart totals incorrect when redeeming multiple discounts Bug: File download limits cannot be reset Bug: File URLs and other fields in File Downloads secttions are not trimmed of whitespace Bug: Currency signs improperly encoded in the email subject of purchase receipts Bug: Improper decimal points in Dashboard Summary widget sale counts Bug: State / province fields loaded in Taxes settings when not needed Bug: Custom events not purged from WP Cron when EDD is deactivated Bug: Dates for “Last Quarter” incorrect Custom reports Bug: Filtering payment history by a guest user fails Bug: EDD_Payments_Query cannot be instantiated multiple times Bug: Spaces cannot be used for the thousands separator Bug: Undefined index “state” in System Info Bug: 400 bad request error during API calls Bug: Improper behavior during extension license deactivation Bug: Restored the Unlimited File Downloads option for payment records Bug: API request logs not properly displayed Bug: Duplicate label in View Order Details Bug: Live credit card verification doesn’t update the card type after initial check Bug: Removed duplicate call to edd_get_payment_meta() Bug: Removed duplicate comma in edd.css Bug: Return value, not echo in metabox.php Bug: View Order Details can be loaded for non-payment post types Bug: Obsolete mfunc/mclude/dynamic-cached-content removed Bug: Payment history cannot be sorted by date Bug: Current view not properly displayed in the Logs table Bug: Issuewith default payment gateway when no gateways are active