Easy Digital Downloads Plugin

Price: FREE
Sold By: Startup StrideStartup Stride

Author URI: https://easydigitaldownloads.com
Plugin URI: https://easydigitaldownloads.com
Contributors: easydigitaldownloads, mordauk, sunnyratilal, chriscct7, section214, sumobi, sdavis2702, cklosows, mindctrl, sksmatt, SpencerFinnell, johnstonphilip, brashrebel, drewapicture, johnjamesjacoby, nosegraze
Donate link: https://easydigitaldownloads.com/donate/
Tags: ecommerce, e-commerce, sell, downloads, store, paypal, checkout, shop
Requires at least: 4.4
Tested up to: 5.3
Requires PHP: 5.3
Stable Tag: 2.9.21
License: GNU Version 2 or Any Later Version

The easiest way to sell digital products with WordPress.

== Description ==

Easy Digital Downloads is a complete eCommerce solution for selling digital products on WordPress. Learn more at [Easy Digital Downloads.com](https://easydigitaldownloads.com/?utm_source=home&utm_medium=description_tab&utm_content=home&utm_campaign=readme).

= Sell effortlessly =

Whether it is software, documents, photos, ebooks, songs, graphics, or any other type of media file, Easy Digital Downloads provides a complete system for effortlessly selling your digital products.

= Localized for your language =

Easy Digital Downloads has been translated into more than two dozen languages and new translation are being added all the time, letting you have a natural, native experience, regardless of where you live. If your language is not available, we welcome translation contributions! See our [FAQ](http://docs.easydigitaldownloads.com/article/1082-what-spoken-languages-does-easy-digital-downloads-support?utm_source=docs&utm_medium=description_tab&utm_content=languages&utm_campaign=readme).

= Payment gateways for everyone =

The internet has made it possible for anyone to sell their products to a world-wide audience. No matter where you live, Easy Digital Downloads can be your eCommerce solution. We offer integrations for the most common merchant processors and, through 3rd party extensions, support for many, many more as well.

Payment gateways supported in the core, free plugin:

* PayPal Standard
* Amazon Payments

Payment gateways supported through free or premium extension:

* Stripe
* PayPal Pro
* PayPal Express
* PayPal Payments Advanced
* PayPal Adaptive Payments
* Braintree
* Authorize.net
* 2Checkout
* SOFORT Banking
* BitPay
* Coinbase

See our [gateways category](https://easydigitaldownloads.com/downloads/category/gateways/?utm_source=extensions&utm_medium=description_tab&utm_content=gateways&utm_campaign=readme) in the extensions catalogue for a complete list of supported gateways. There are also a large number of additional gateways developed and supported by [3rd party developers](https://easydigitaldownloads.com/3rd-party-extensions/#gateways).

= Go further with extensions =

With add-on plugins from our [extensions catalogue](https://easydigitaldownloads.com/downloads/?utm_source=extensions&utm_medium=description_tab&utm_content=extensions&utm_campaign=readme) you can super-charge your digital store. Some of our extension highlights include:

* [Software Licensing](https://easydigitaldownloads.com/downloads/software-licensing/?utm_source=extension&utm_medium=description_tab&utm_content=software-licensing&utm_campaign=readme) provides a complete solution for selling software license keys
* [Recurring Payments](https://easydigitaldownloads.com/downloads/recurring-payments/?utm_source=extension&utm_medium=description_tab&utm_content=recurring-payments&utm_campaign=readme) allows store owners to sell recurring subscriptions for digital products
* [Frontend Submissions](https://easydigitaldownloads.com/downloads/frontend-submissions/?utm_source=extension&utm_medium=description_tab&utm_content=frontend-submissions&utm_campaign=readme) transforms your store into a full-featured multi-vendor marketplace
* [Commissions](https://easydigitaldownloads.com/downloads/commissions/?utm_source=extension&utm_medium=description_tab&utm_content=commissions&utm_campaign=readme) enables store owners to easily track earnings for product vendors
* [Free Downloads](https://easydigitaldownloads.com/downloads/free-downloads/?utm_source=extension&utm_medium=description_tab&utm_content=free-downloads&utm_campaign=readme) allows free products to be purchased more easily by bypassing the standard checkout process
* [Zapier](https://easydigitaldownloads.com/downloads/zapier/?utm_source=extension&utm_medium=description_tab&utm_content=zapier&utm_campaign=readme) automates your store by connecting Easy Digital Downloads with more than 700 other web services and products
* [Reviews](https://easydigitaldownloads.com/downloads/product-reviews/?utm_source=extension&utm_medium=description_tab&utm_content=reviews&utm_campaign=readme) allows customers to leave reviews and feedback on the products they have purchased
* [Recommended Products](https://easydigitaldownloads.com/downloads/recommended-products/?utm_source=extension&utm_medium=description_tab&utm_content=recommended-products&utm_campaign=readme) increases revenue by showing customers recommendations on additional products to purchase based on real sales data
* [Content Restriction](https://easydigitaldownloads.com/downloads/content-restriction/?utm_source=extension&utm_medium=description_tab&utm_content=content-restriction&utm_campaign=readme) allows site owners to restrict access to page content to paying customers
* [MailChimp](https://easydigitaldownloads.com/downloads/mailchimp/?utm_source=extension&utm_medium=description_tab&utm_content=mailchimp&utm_campaign=readme) connects your store to your MailChimp account so you can easily subscribe customers to email lists based on what they purchase
* [AWeber](https://easydigitaldownloads.com/downloads/aweber/?utm_source=extension&utm_medium=description_tab&utm_content=aweber&utm_campaign=readme) connects your store to your AWeber account so you can easily subscribe customers to email lists based on what they purchase
* [Amazon S3](https://easydigitaldownloads.com/downloads/amazon-s3/?utm_source=extension&utm_medium=description_tab&utm_content=amazon-s3&utm_campaign=readme) lets you securely host files on Amazon S3 for more reliable and secure file delivery
* [Dropbox File Store](https://easydigitaldownloads.com/downloads/dropbox-file-store//?utm_source=extension&utm_medium=description_tab&utm_content=dropbox-file-store/&utm_campaign=readme) lets you securely host files in your Dropbox account for more reliable and secure file delivery

These are just a few of the extensions we offer to help super-charge your digital store. See our complete [extensions catalogue](https://easydigitaldownloads.com/downloads/?utm_source=extensions&utm_medium=description_tab&utm_content=extensions&utm_campaign=readme) for more. There are also hundreds of extensions created by Easy Digital Downloads community members, which can be found on our [3rd Party Extensions page](https://easydigitaldownloads.com/3rd-party-extensions/?utm_source=3rd-party-extensions&utm_medium=description_tab&utm_content=3rd-party-extensions&utm_campaign=readme).

= Built with developers in mind =

Extensible, adaptable, and open source -- Easy Digital Downloads is created with developers in mind. Contribute on [GitHub](https://github.com/easydigitaldownloads/easy-digital-downloads).

== Installation ==

1. Activate the plugin
2. Go to Downloads > Settings and configure the options
3. Create Downloadable products from the Downloads page
4. Insert purchase buttons for any download via the "Insert Download" button next the Upload Media buttons
5. For detailed setup instructions, vist the official [Documentation](http://docs.easydigitaldownloads.com/?utm_source=docs&utm_medium=installation_tab&utm_content=documentation&utm_campaign=readme) page.

== Frequently Asked Questions ==

= Where can I find complete documentation? =

Full searchable docs can be found at [http://docs.easydigitaldownloads.com/](http://docs.easydigitaldownloads.com/?utm_source=docs&utm_medium=faq_tab&utm_content=documentation&utm_campaign=readme)

= Where can I ask for help? =

You can submit a support ticket or pre-sale question from our [support page](https://easydigitaldownloads.com/support/?utm_source=docs&utm_medium=faq_tab&utm_content=support&utm_campaign=readme) at anytime.

= Is an SSL certificate required? =

Easy Digital Downloads can function without one just fine, making it easy to set up in a testing or development environment. We still strongly recommend you have an SSL certificate for your production web site, both for security and for the peace of mind of your customers. [Documentation here](http://docs.easydigitaldownloads.com/article/994-how-to-set-up-ssl?utm_source=docs&utm_medium=faq_tab&utm_content=documentation&utm_campaign=readme)

= What themes work with Easy Digital Downloads? =

Any properly written theme will work with Easy Digital Downloads.

That said, we have a nice collection of free themes that come with support for Easy Digital Downloads, requiring much less design work on the part of the store owner.

[See the free themes here.](https://easydigitaldownloads.com/themes/?utm_source=docs&utm_medium=faq_tab&utm_term=free_themes&utm_content=faqs&utm_campaign=readme)

= Is there a sample import file I can use to setup a demo store? =

Yes! Simply go to Tools > Import and install the WordPress Importer, then navigate to wp-content/plugins/easy-digital-downloads/assets/ and select the sample-products-import.xml file. This will create several sample products and plugin pages for you.

= Can I import all the products from my existing store into EDD? =

Yes! We do have a [basic import solution](http://docs.easydigitaldownloads.com/article/216-can-i-import-and-export-products?utm_source=docs&utm_medium=faq_tab&utm_term=import_addon&utm_content=faqs&utm_campaign=readme) that imports a CSV file, so if you can get your data into the appropriate format then we can import it.

= My payments are being marked as "pending" =

There are several reasons this happens. Please follow the suggestions [here](http://docs.easydigitaldownloads.com/article/190-payments-not-marked-as-complete?utm_source=docs&utm_medium=faq_tab&utm_content=faqs&utm_campaign=readme).

= Getting a 404 error? =

To get rid of the 404 error when viewing a download, you need to resave your permalink structure. Go to Settings > Permalinks and click "Save Changes".

= How do I show the user’s purchase history? =

Place the [purchase_history] shortcode on any page.

If you want to just show a list of the files the user has purchased, use the [download_history] shortcode instead.

= How do I display products? =

There are several different ways, each well [documented](http://docs.easydigitaldownloads.com/category/870-product-display?utm_source=edd_readme&utm_medium=faq_tab&utm_content=faqs&utm_campaign=readme).

= Can I set up an affiliate program? =

Yes! EDD integrates directly with several affiliate platforms that provide complete affiliate systems you can use to award commissions to your affiliate marketers.

[Check out AffiliateWP](https://affiliatewp.com?utm_source=edd_readme&utm_medium=faq_tab&utm_content=home&utm_campaign=readme)

= Can I give my customers downloadable PDF Invoices? =
Yes, EDD has an extension that allows for downloadable invoices to be generated for each payment.

[PDF Invoices](https://easydigitaldownloads.com/downloads/pdf-invoices/?utm_source=pdf-invoices&utm_medium=faq_tab&utm_content=pdf-invoices&utm_campaign=readme)

= Are recurring payments supported? =

Yes, through the use of our commercial addon called [Recurring Payments](https://easydigitaldownloads.com/downloads/recurring-payments/?utm_source=docs&utm_medium=faq_tab&utm_term=recurring_addon&utm_content=faqs&utm_campaign=readme). [Full documentation here](http://docs.easydigitaldownloads.com/article/1142-recurring-payments---overview?utm_source=docs&utm_medium=faq_tab&utm_term=recurring_addon&utm_content=faqs&utm_campaign=readme)

= Can customers purchase products without using PayPal? =

Yes. Easy Digital Downloads also includes default support for Amazon Payments and support for numerous other payment methods through add-on payment gateways. Here are some of the gateways [currently available](https://easydigitaldownloads.com/downloads/category/extensions/gateways/?utm_source=docs&utm_medium=faq_tab&utm_term=gateways&utm_content=faqs&utm_campaign=readme):

* [Stripe](https://easydigitaldownloads.com/downloads/stripe-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=stripe-payment-gateway&utm_campaign=readme)
* [PayPal Pro/Express](https://easydigitaldownloads.com/downloads/paypal-pro-express/?utm_source=gateway&utm_medium=faq_tab&utm_content=paypal-pro-express&utm_campaign=readme)
* [PayPal Adaptive Payments](https://easydigitaldownloads.com/downloads/paypal-adaptive-payments/?utm_source=gateway&utm_medium=faq_tab&utm_content=paypal-adaptive-payments&utm_campaign=readme)
* [Authorize.net](https://easydigitaldownloads.com/downloads/authorize-net-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=authorize-net-gateway&utm_campaign=readme)
* [2Checkout](https://easydigitaldownloads.com/downloads/2checkout-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=2checkout-gateway&utm_campaign=readme)
* [Check](https://easydigitaldownloads.com/downloads/check-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=check-payment-gateway&utm_campaign=readme)
* [Braintree](https://easydigitaldownloads.com/downloads/braintree-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=braintree-gateway&utm_campaign=readme)
* [PayPal Payments Advanced](https://easydigitaldownloads.com/downloads/paypal-payments-advanced/?utm_source=gateway&utm_medium=faq_tab&utm_content=paypal-payments-advanced&utm_campaign=readme)
* [ClickBank](https://easydigitaldownloads.com/downloads/edd-clickbank-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=clickbank&utm_campaign=readme)
* [Wallet](https://easydigitaldownloads.com/downloads/wallet/?utm_source=gateway&utm_medium=faq_tab&utm_content=wallet&utm_campaign=readme)
* [BitPay](https://easydigitaldownloads.com/downloads/bitpay-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=bitpay-payment-gateway&utm_campaign=readme)
* [Coinbase](https://easydigitaldownloads.com/downloads/coinbase-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=coinbase-payment-gateway&utm_campaign=readme)
* [SOFORT Banking](https://easydigitaldownloads.com/downloads/sofort-banking-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=sofort-banking-gateway&utm_campaign=readme)
* [PayU India](https://easydigitaldownloads.com/downloads/payu-india-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=payu-india-payment-gateway&utm_campaign=readme)
* [Payza](https://easydigitaldownloads.com/downloads/payza-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=payza-payment-gateway&utm_campaign=readme)
* [PayPlug](https://easydigitaldownloads.com/downloads/payplug-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=payplug-gateway&utm_campaign=readme)
* [GoCardless](https://easydigitaldownloads.com/downloads/gocardless-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=gocardless-payment-gateway&utm_campaign=readme)
* [Zombaio](https://easydigitaldownloads.com/downloads/zombaio-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=zombaio-payment-gateway&utm_campaign=readme)
* [Realex](https://easydigitaldownloads.com/downloads/realex-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=realex-gateway&utm_campaign=readme)
* [CyberSource](https://easydigitaldownloads.com/downloads/cybersource-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=cybersource-gateway&utm_campaign=readme)
* [Paylane](https://easydigitaldownloads.com/downloads/paylane-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=paylane-payment-gateway&utm_campaign=readme)
* [ePay](https://easydigitaldownloads.com/downloads/epay-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=epay-payment-gateway&utm_campaign=readme)
* [Netbanx](https://easydigitaldownloads.com/downloads/netbanx-payment-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=netbanx-payment-gateway&utm_campaign=readme)
* [Realex](https://easydigitaldownloads.com/downloads/realex-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=realex-gateway&utm_campaign=readme)
* [PayTrace](https://easydigitaldownloads.com/downloads/paytrace/?utm_source=gateway&utm_medium=faq_tab&utm_content=paytrace&utm_campaign=readme)
* [iPay88](https://easydigitaldownloads.com/downloads/ipay88-gateway/?utm_source=gateway&utm_medium=faq_tab&utm_content=ipay88-gateway&utm_campaign=readme)

== Screenshots ==

1. Download products overview
2. Download configuration
3. Download configuration details
4. Payment History
5. Payment details
6. Discount codes
7. Earnings and sales reports
8. Add to cart / purchase button
9. Checkout screen

== Changelog ==
= 2.9.21, March 2, 2020 =
* Fix: Corrected a reporting issue with earnings when using negative fees, such as Discounts Pro.
* Fix: Only count the number of downloads for a purchase when download counts are not unlimited.
* Fix: Fixed a typo in the settings text.
* Dev: Added a supported PHP Version to the plugin headers.
* New: Added information about the Jilt integration into the email settings.

= 2.9.20, November 14, 2019 =
* Fix: CSV download import issues with file to price assignments and AmazonS3 files.
* Fix: The edd_after_payment_actions action fired via cron was missing attributes.
* Fix: The SendWP connection link was visited if enter/return was pressed to update settings.
* New: Promotional elements added to EDD admin screens.

= 2.9.19, October 28, 2019 =
* Fix: Limit register_meta calls to be for the download post type only, in preparation for WordPress 5.3 compatibility.

= 2.9.18, October 21, 2019 =
* Fix: Updated calls to register_meta for WordPress 5.3 compatibility.
* Fix: Refactored edd_get_payment_status to work when Payment statuses are translated.
* Fix: Improved the compatibility of file downloads with hosting configurations that involve symlinks for uploads.
* Dev: Added the 'edd_show_nginx_redirect_notice' filter to allow programmatically hiding the nginx file protection admin notice.
* Dev: Added polyfills for is_countable and is_iterable into EDD core.

= 2.9.17, October 2, 2019 =
* Security Fix: Prevent an authentication bypass to the EDD REST API when no API keys exist.

= 2.9.16, June 11, 2019 =
* Security Fix: Prevent a stored XSS (Cross Site Scripting) attempt on the IP addresses for logs.

= 2.9.15, May 31, 2019 =
* Fix: Prevent a fatal error during checkout when no gateways are returned as active.
* New: Added support for SendWP to help with email deliverability.

= 2.9.14, May 8, 2019 =
* Fix: Corrected an issue in local file location detection for Windows servers.

= 2.9.13, May 7, 2019 =
* Fix: An error was being logged when using API V2 to get products by category.
* Fix: Corrected an issue with multisite on versions of WordPress greater than 5.0.
* Fix: Multiple improvements with the EDD_License handler.
* Fix: Made it possible to add products to product-less payments.
* Fix: Fixed the link to filter file download logs by customer.
* Fix: Improved strength of file download link hashes.
* Fix: Improved local file location detection.

= 2.9.12, March 26, 2019 =
* Fix: Limit PayPal PDT verification to purchase sessions.
* Fix: Discount start times were not accounting for GMT offsets.
* Fix: Improved reliability of the State field when selecting different countries.
* Fix: GDPR Data Exporter now skips any requests for customer data when no customer is found for a user.
* Fix: WordPress 5.x : apiFetch call was resulting in invalid JSON response.
* Fix: Corrected a conditional check typo when determining if settings page is EDD related.

= 2.9.11, January 6, 2019 =
* Fix: PayPal PDT amount validation fails for some accounts due to missing payment_gross field.
* Tweak: PayPal email address now registered to EDD_Customer during IPN processing if the email is not already registered.

= 2.9.10, January 4, 2019 =
* Security Fix: Avoid a possible PayPal Standard price manipulation when using PDT (Payment Data Transfer)

= 2.9.9, December 3, 2018 =
* Fix: State/province cannot be updated on order details screen when country is changed.
* Fix: "Show Privacy Policy" text link is positioned incorrectly.
* Fix: "Agree to Terms?" text shows twice on checkout with some configurations.
* Fix: Nonce verification failure when state/province field is not visible.
* Fix: Fees / Discounts can be duplicated when payment recovery link is clicked.
* Fix: Incorrect DocBlock for edd_currency_filter.
* Fix: Slashes not removed when saving profile name field.
* Fix: Item amount set to 0.00 improperly during CSV import if the "Products (Raw)" column is used but does not include a {}.
* Fix: Privacy policy text not shown if terms of use checkbox is disabled.
* Fix: Log messages not saved to debug log file if they contain non UTF-8 characters.

= 2.9.8, October 1, 2018 =
* Fix: Updated Amazon Payments onboarding URL.
* Fix: Insert Download media button would not output expected plain text styles.
* Fix: Adding a discount code on a cart with free products caused a division by zero error.
* Fix: Removed unnecessary clearfix rule from CSS.
* New: Repositioned and refactored the pagination in the [downloads] shortcode to allow better customization.
* Dev: All available contextual arguments were added to the edd_requested_file filter.

= 2.9.7, September 10, 2018 =
* Fix: The edd_cart_amount data attributes were not updated when quantities were changed at checkout.
* Fix: Updated the zip/postal code validation for Mongolia.
* Fix: Updating a download meta to 0 using the EDD_Download class would not save correctly.
* Fix: Corrected an issue with mobile file downloads sometimes getting corrupted.
* Fix: Incorrect label "for" attributes were being used on the checkout login form.
* Fix: Prevent the vertical scrollbar in Firefox when hovering over tooltips.
* Fix: Corrected some issues with EDD Sessions and WP Admin.
* Fix: Test Purchase Email Subject ampersands were getting improperly HTML encoded.
* New: Updated the EDD_SL_Plugin_Updater to support icons and have a health check.
* New: Added the date generated to system info.
* New: EDD API now supports "order" and "orderby" parameters for the products endpoint.

= 2.9.6, July 16, 2018 =
* Fix: "Error: You must login to complete your purchase" shown incorrectly on checkout.
* Fix: WordPress database error in File Download Log updater.

= 2.9.5, July 12, 2018 =
* Fix: Changing the country field in the admin would not display the State fields.
* Fix: File Download Log Migration from version 2.9.2 would fail on some sites.

= 2.9.4, July 9, 2018 =
* Fix: Added nonce checks to multiple AJAX calls. If you have customized any of the following beyond CSS, please review this blog post:
* https://easydigitaldownloads.com/development/2018/07/05/important-update-to-ajax-requests-in-easy-digital-downloads-2-9-4
* templates/widget-cart-item.php
* templates/shortcode-profile-editor.php
* templates/checkout_cart.php
* The following functions includes/checkout/template.php:
* edd_default_cc_address_fields()
* edd_get_register_fields()
* edd_get_login_fields()
* edd_payment_mode_select()
* edd_checkout_hidden_fields()
* Fix: Important - Don't allow guest purchases for an email address that has an existing user.
* Fix: Unexpected behavior in 'redirect to checkout' when multiple checkout pages were used.
* Fix: Saving an order in the admin when prices were inclusive of tax could cause incorrect item price amounts to be saved.
* Fix: PHP 7.2 Compatibility - Some PHP notices were being thrown while activating Easy Digital Downloads.
* Fix: The EDD_Cart class now forces the cart contents to always be an array.
* Fix: The process of adding past purchases to a new user now verifies the user has an email address.
* Fix: The file download log export did not contain the name of the user who downloaded the file.
* Fix: Attempting to add a new customer to an order gave unexpected results when using the email address of an existing customer.
* Fix: Tax rate 'Apply to whole country' label could not be clicked when no tax rates have ever existed.
* Fix: The Shop Accountant role was not able to manage the tax exclusion at a product level.
* Fix: In some cases, PayPal IPN and PDT would cause double payment processing.
* Tweak: Easy Digital Downloads sessions can now be started when in the wp-admin path.
* New: When taxes are being recalculated at checkout, an AJAX indicator is now shown below the purchase button.
* Dev: Filters were added to the AJAX responses for adding and removing items from the cart.

= 2.9.3, May 25, 2018 =
* Fix: Corrected multiple inconsistencies in the Privacy Policy Checkbox at checkout.
* Fix: Corrected an issue causing "You must agree to the privacy policy" from showing when it wasn't required.
* Dev: Complete Checkout button is no longer required to be a `submit` input.

= 2.9.2, May 24, 2018 =
* GDPR: Support for WordPress Core Privacy Exporter and Eraser.
* GDPR: Added Privacy Policy template for WordPress Core Privacy Policy editor.
* GDPR: Added new "Privacy" tab to the Easy Digital Downloads Settings.
* Fix: The "button" CSS class was being applied twice to the "Apply Discount" button.
* Fix: The toggle link to view the Privacy Policy was not working when the Terms of Agreement were not visible.
* Fix: Email addresses that contained a + would not be removed via [edd_profile_editor].
* Fix: Searching payments by discount code was not working.
* New: Added action hook above shortcode download list.
* New: Improve File download Log accuracy and remove PII from log meta.
* New: Allow for target attribute of links in Terms of Service & Privacy Policy labels.

= 2.9.1, April 20, 2018 =
* Fix: Some text field settings were getting emptied when saving a subsection setting.
* Fix: Stats API Endpoint requests were failing when pseudo-date ranges were used other than yesterday and today.
* Fix: API key fields were appearing on bbPress forum Edit Profile screen.
* Fix: There was a typo in Italian provinces. Genova should have been Genoa.
* Fix: Corrected an issue with showing payment method icons when using EDD in a non-standard installation.
* Fix: Corrected a CSS conflict in the customer card view for the additional emails section.
* Fix: The edd_checkout_cart_columns function now properly counts the number of columns in the cart display.
* Fix: In some cases, the customer list table could throw PHP warnings when calculating the pagination.
* Fix: Improve the RTL-Compatibility of some translation strings.
* Fix: Improved PHP 7.2 compatibility with the settings display.
* Fix: Incorrect or missing textdomains were corrected or added.
* Fix: There was an unnecessary update of _edd_payment_user_id when constructing EDD_Payment objects.
* Fix: Corrected the setting title for completing free purchase button.
* New: Added a confirmation alert when clicking "Disconnect User" on customer card.
* New: Add support for a new Privacy Policy checkbox.
* New: Added a class parameter to [downloads] shortcode arguments.
* New: The debug log view now shows the path to the currently used EDD Debug log file.
* New: Fields are now auto-mapped during the CSV import.
* Tweak: Switched all `is_a` checks to use `instanceof` for performance.
* Dev: Many improvements to the @return and @access tags in DocBlocks.
* Dev: Updates to our Grunt configuration.

= 2.9, March 15, 2018 =

* New: A message is now displayed on the [edd_register] shortcode when the user is already logged in.
* New: Support was added for resume and ranged download links.
* New: The customer name, email, and price ID was added to sales log export.
* New: Added ability to sort by sales/earnings in the [downloads] shortcode.
* New: Any page containing the [download_checkout] shortcode returns true for edd_is_checkout().
* New: Upgraded to the latest version of the Chosen library.
* New: Added United Kingdom Counties to pre-populated "states" list.
* New: EDD_Payment::add_note now escapes the HTML provided.
* New: Added the variable price ID to the download log entries.
* New: Added a helper to retrieve and filter discount status labels.
* Fix: Prevent a possible PHP Warning when no tax rate is entered, when taxes are enabled.
* Fix: PayPal Standard: Totals with discounts could calculate differently between EDD and PayPal, preventing completion of the purchase.
* Fix: Links would break when using SendGrid's link tracking feature.
* Fix: Download widget would cause PHP warnings when no tags were attached to a product.
* Fix: Improved support for payment method icons when not using a standard WP Install directory format.
* Fix: Prevent a possible corrupted download file by verifying no output buffers exists.
* Fix: Opt-in telemetry data was sending the incorrect Locale.
* Fix: Prevent a possible PHP Notice when editing a discount code.
* Fix: Checkboxes on Advanced Settings of variable prices would not always save on the first try.
* Fix: Hardcoded 'Checkout' text was not using the 'Add to Cart text' variable.
* Fix: Prices were possibly incorrect when using the Quick Edit feature.
* Tweak: The edd_get_download method now returns an `EDD_Download` object instead of a `WP_Post`.
* Tweak: Corrected some URLs to the EDD site that were using an old URL.
* Tweak: The customer UI now shows the country and state name, instead of their codes.
* Tweak: Removed the hyphen and "Go Back" button from discount screens.
* Tweak: The cart contents method returned boolean false instead of an empty array when the cart was empty.
* Tweak: Reduced the blocking calls in the opt-in telemetry requests to help with performance.
* Dev: Added filters for new user notification email.
* Dev: Added filter and email heading to New Sale Notifications.
* Dev: Added hooks before and after downloads shortcode grid.

= 2.8.18, February 6, 2018 =

* Fix: Earnings report was incomplete and did not allow adding additional statuses.
* Fix: Incorrect HTML attribute on the upload modal.
* Fix: WordPress file editor was not working when Easy Digital Downloads was not active.
* Fix: Forced file data to be sanitized as an array.
* New: Added new filter to allow disabling X-Accel-Redirect when downloading files.
* New: Enabled gateways are now included in the opt-in telemetry data.

= 2.8.17, January 1, 2018 =

* Fix: Reverted Schema microdata change from SPAN to DIV tag as it broke some layouts
* Tweak: IP addresses on payment View Order Details screens now links to ipinfo

= 2.8.16, December 21, 2017 =
* Fix: Hardened EDD actions for use with WP Cron.
* Fix: Changed span elements to div elements for the schema markup.
* Dev: Added the ability to randomly generate customer data when creating payments with WP-CLI.

= 2.8.15, December 13, 2017 =
* Fix: Getting files of variable priced bundles products did not always respect variable price ID.
* Tweak: Added found payments to the hooks before and after the purchase history shortcode.

= 2.8.14, November 28, 2017 =
* Fix: Sales exports did not always include all payments from the last day of the range selected.
* Fix: Negative item fees can apply to same item multiple times if it's the same product.
* Fix: Campaign strings on Integrations were not consistent.
* Fix: Warning when converting dates to timestamps in EDD_Stats::convert_date()

= 2.8.13, November 20, 2017 =
* Fix: Cart details incorrectly reported item quantity as 0 in some cases.
* Fix: Prevent an edge case around adding past purchases to new users.
* Fix: Searching by custom order number only worked if a suffix or prefix is included.
* Fix: Corrected some translation issues.
* New: Allow filtering of the PayPal IPN data.
* New: Add support for Payment Data Transport (PDT) in PayPal Standard.
* Tweak: Removed MercadoPago from list of extensions in readme.
* Tweak: Added a colon that was missing on taxes & subtotal of the purchase confirmation.
* Tweak: Add debug logging to PayPal IPN capturing.

= 2.8.12, November 10, 2017 =
* Fix: Reverted some of the performance improvements due to edge case errors.
* Fix: Corrected a misspelled function edd_render_dowwn_tax_options.
* Fix: Invalid translation line while processing purchase.
* Fix: Improved the verbiage of the discount code amount description.

= 2.8.11, November 9, 2017 =
* Fix: Incorrect discount errors could be shown at checkout.
* Fix: Improved the performance of the EDD_Customer class.
* Fix: Improved the new Debug Log View usability.
* Fix: Corrected an issue with edd_user_pending_verification() when logged in as an admin.
* Fix: Custom date ranges for detailed product earnings break on multi-month views.
* Fix: Discount validation errors could occur when recovering pending payment.
* Fix: The product notes div was being rendered when no product notes added to download.
* New: Added a filter for edd_get_errors().
* New: Added link to ipinfo.io for the IP address on a file download log.
* Tweak: Removed an unused display_price argument in edd_get_purchase_link().
* Tweak: Update library for array2xml.php.
* Tweak: Added filters to allow modfiying the payment list table gateway filter selector.

= 2.8.10, October 20, 2017 =

* Fix: Incorrect URL for `Add New` button.
* Fix: Incorrectly called function on EDD_Payment::get_discounted_amount.

= 2.8.9, October 19, 2017 =

* Fix: Errors when trying to download some local files on Windows servers.
* Fix: "Recount" Progress Bar was invisible.
* Tweak: Added $price_id to the edd_purchase_receipt_after_files action.
* Tweak: Improve visibility of Apps & Integrations.
* Tweak: Corrected some spelling errors.

= 2.8.8, October 5, 2017 =

* Fix: A fatal error was triggered during the payment export.
* New: Added more parameters to the edd_requested_file_name filter.

= 2.8.7, October 2, 2017 =

* IMPORTANT: Product dropdown was losing selections when using variable pricing. Please verify any variable priced bundles you may have configured.
* Fix: File download errors could occur if the stream type was no longer registered.
* Fix: The 'No checkout page configured' error is now limited to once display per page.
* Fix: Calls to EDD_Customer->update_meta could throw a notice if called to early in the WordPress load process.
* Fix: The edd_get_users_purchased_products function did not respect the status argument passed in.
* Fix: The base state/province displayed empty when no pre-populated state or province data was available.
* Fix: Performance improvements to edd_get_discounts.
* Fix: Newly registered user's ID was not set on pre-existing payments.
* Fix: During purchase, the customer name was set to email if last name was empty.
* Fix: Corrected many non-numeric value and data handling issues in PHP 7.1.
* Fix: Corrected an issue with Chosen placeholders.
* New: Added the EDD_Logging class, to allow for easier debugging by developers.
* New: The country name has been added to the payment export.
* New: Added a discounts_total property to the EDD_Payment class.
* New: Hyphens are now allowed in discount codes.
* New: The Customer ID is now included in the sales report.
* Tweak: Added better responsiveness in WordPress admin.
* Tweak: Fixed a typo in the docs for the payments create CLI command.
* Tweak: Wrapped discount fields in tags.
* Tweak: Fixed CSS targeting on edd_repeatable_thumbnail_size_field selector.

= 2.8.6, September 11, 2017 =

* Fix: Amazon Payments could cause Javascript error on checkout.
* Fix: edd_delete_option() helper function failed to fully remove option.
* Fix: It was possible to create a discount using edd_store_discount() without specifying a discount code.
* Fix: User Address information could be stored with boolean 'false' instead of an empty string.
* New: Made URLs included in payment notes clickable links.
* New: Added filter edd_load_scripts_in_footer to allow programmatic modifications of where frontend scripts are loaded.

= 2.8.5, September 7, 2017 =

* Fix: The Product Dropdown helper function included products in the trash.
* Fix: Deleted products could not be removed from payments.
* Fix: Incorrect cookie name was being used for the 'rememberme' option.
* Fix: Incorrect pagination was being used when viewing sales logs.
* Fix: Possible issue parsing headers when accessing via WP Rest API.
* Fix: Improved security of EDD_Session.
* New: Added a filter to the "Agree to Terms" markup.
* New: Added support for Angola (country, municipalities, and currency).
* New: Increased the width of the discount amount field when adding or editing discounts.
* New: Added ability to filter sales by email address in WP-CLI.
* Tweak: Updated form styling for login and register forms.
* Tweak: Removed clearing divs from the [downloads] shortcode.
* Tweak: Added inline docs for edd_payment_meta filter.
* Tweak: Ensure EDD_Cart:get_discounts() return type is consistent.

= 2.8.4, August 16, 2017 =

* Fix: Minor improvements to edd_get_customer_address() function.
* Fix: Negative product fees were not properly affecting subtotal used for tax calculations.
* Fix: Editing item price on a payment caused incorrect calculations when item price contained thousands separators.
* Fix: Download History shortcode was incorrectly using get_the_title instead of the supplied name.
* Fix: Resuming payment for guest payments while logged out could incorrectly prompt the user to login.
* Tweak: Download Details widget edit form used generic 'Show Title' instead of 'Show Download Title'.
* Tweak: Product Notes metabox field wasn't full width.

= 2.8.3, August 9, 2017 =

* Fix: Update HTML5 pattern on card field to account for whitespace.
* Fix: Don't enqueue jQuery.payment by default, allow gateways to enqueue when supported.

= 2.8.2, August 8, 2017 =

* New: Spaces are now auto-formatted into credit card number fields.
* Tweak: Decoupled API Authentication with $wp_query.
* Tweak: Quantities no longer show on the cart widget when they are disabled.
* Tweak: Renamed 'Item Quantities' setting to 'Cart Item Quantities' to remove confusion of its purpose.
* Tweak: Improvements to the consistency of settings descriptions.
* Tweak: Added search_columns argument to the EDD_Customer_Query class.
* Fix: Discounts with multiple exclusions could be applied to excluded products.
* Fix: Customer query pagination did not work correctly.
* Fix: Removed custom widths on the primary column of list table.
* Fix: 'Processing' status in Payments list table shows empty brackets when no processing payments.
* Fix: Billing fields were unnecessarily validated when cart total was $0.
* Fix: WPLANG is deprecated, use get_locale() instead.
* Fix: Prevent duplicate queries when edd_get_purchase_id_by_key() is called more than once for the same payment key.
* Fix: Prevent plain text purchase links from looking like buttons still.

= 2.8.1, July 27, 2017 =

* New: Include "processing" as payment status in the list table.
* Fix: Revert adjusting purchase amount when quantity changes.
* Fix: Variable pricing bundle purchases gave access to incorrect product files.
* Tweak: Update to 1.6.14 of the Plugin Updater.

= 2.8, July 25, 2017 =

* New: Design of repeatable rows, including variable prices and download files, has been redesigned to better accommodate more options and smaller screen sizes
* New: Variable price IDs now supported in payment import and export
* New: add_meta() and delete_meta() methods added to EDD_Payment
* New: Position of errors on checkout can now be changed through edd_global_checkout_script_vars filter
* New: edd_after_payment_actions action now fired through WP Cron after payment is completed
* New: EDD_Customer_Query class introduced
* New: Added support for PayPal Image URL setting
* New: Added support for filtering Payment History by used payment gateway
* New: Added shortcode-download.php template file
* Tweak: Use document.body in scripts where possible, for performance
* Tweak: Minimum WordPress version now set to 4.4
* Tweak: edd-ajax.js and edd-ajax.min.js now loaded in wp_footer
* Tweak: Improved performance of EDD_Customer by avoiding duplicate query to get notes
* Tweak: Banned Emails option now supports blocking addresses with just a TLD
* Tweak: Added new actions to template files to allow content to be more easily added to log in and registration forms
* Tweak: Chosen dropdown field of EDD_HTML_Elements now supports "multiple" parameter
* Tweak: Added a link to gateways extension category on gateway settings page to make gateways more easily discoverable
* Tweak: Updated the EDD add-on updater class to version 1.6.13
* Tweak: Added new edd_log_file_download_download_files filter and edd_log_file_download_file_id filter to get_logs() method of the file download list table
* Tweak: Empty categories now shown on Earnings by Category report
* Tweak: EDD_Customer object added to completed payment actions
* Tweak: Current customer instance added to all hooks and filters in EDD_Customer
* Tweak: Download link expiration time now shown on System Info
* Tweak: Added edd_checkout_billing_details_address filter to customer billing details on checkout
* Tweak: Purchase button amounts now automatically update as quantity input is changed
* Tweak: Customer records now updated with information entered on checkout
* Tweak: Improved translation flexibility of Complete Purchase button text
* Tweak: Added new edd_price_option_output filter to function that displays variable prices
* Tweak: Notes and price IDs now escaped on purchase receipt display
* Tweak: Improved description of login redirect page setting
* Tweak: Avoid hard-coding "striped" class on list tables
* Tweak: A link to Product Reviews extension has been added to product edit screen when Reviews plugin is not installed
* Tweak: Account for multiple reverse proxy IPs in $_SERVER['HTTP_X_FORWARDED_FOR']
* Tweak: Update phpunit dependency to latest of 3.7 branch
* Fix: Price ID not properly set when generating payment records with WP CLI
* Fix: Credit card name field validated as true when card number was entered
* Fix: Detect and correct invalid email addresses in From Address settings for purchase receipts and email notifications
* Fix: Sales export includes incorrect items
* Fix: Invalid SQL query due to extraneous curly brace
* Fix: Fatal error due to undefined function edd_extension_has_beta_support()
* Fix: Some admin screens not properly responsive for small screens
* Fix: misc-functions.php file loaded twice
* Fix: Corrupt file downloads due to non-binary setting passed to fopen()
* Fix: _canonical_import_id not deleted after payment import
* Fix: All products could be deleted on a payment
* Fix: 100% discount codes do not remove tax from tax-inclusive items
* Fix: Item tax not shown on payment screen when price contains commas
* Fix: Tax rates not included in settings import/export
* Fix: get_payments() method of EDD_Payments_Query affects global $post
* Fix: Customer record not properly linked to existing user record
* Fix: State / province field of customer address not saved properly
* Fix: Download links still shown on purchase confirmation when Disable Redownload is enabled
* Fix: select() method of EDD_HTML_Elements always uses "Downloads" as search placeholder
* Fix: Product Dropdown not always showing the selected item when large number of downloads exist

= 2.7.11, June 21, 2017 =

* Fix: Amazon Payments had errors being displayed at incorrect times.
* Fix: Start date not set properly in reports all pre-set ranges.
* Tweak: Fix URL for the "Rate Us" link.

= 2.7.10, June 12, 2017 =

* Fix: Plugin Compatibility: Improve file download reliability when Really Simple SSL Mixed Content Filter is active.

= 2.7.9, May 11, 2017 =

* Fix: Chosen search had incorrect select element targeting.
* Fix: EDD_Payment was using invalid modified_date instead of date.
* Fix: Recovering a guest payment prompted user to login to complete the purchase.
* New: Add edd_get_report_dates_default_range filter to report date range.

= 2.7.8, May 2, 2017 =

* Fix: Products sometimes duplicated in CSV product export
* Fix: Fatal error with PHP 7+ when get_meta() returns a string instead of array
* Fix: Incorrect earnings stats for "Today"
* Fix: Use once per customer option on discount codes does not respect case sensitivity
* Fix: Date filters on payment history not working properly
* Fix: Tax rates of less than 1 calculates an incorrect total
* Fix: edd_unset_cart_discount() is case sensitive when it should not be
* Fix: PHP 7 compatibility flags due to safe_mode checks
* Fix: Download files not imported properly when file URL/path begins with a forward slash
* Fix: Pending verification message shown multiple times if the page contains multiple shortcodes
* Tweak: Improved error message for "Email already used" error
* Tweak: Default reports view is now "Last 30 days"
* Tweak: EDD_Graph class now supports an "addition_options" parameter
* Tweak: Added new hooks to the profile editor template

= 2.7.7, April 3, 2017 =

* Fix: User ID not properly assigned during some payment imports
* Fix: Discount codes sometimes changed to inactive improperly
* Fix: Incorrect variable name in add-on updater
* Fix: edd_has_user_purchased() can return false incorrectly
* Fix: File price assignment fails when set to the first price on old products
* Fix: Last Month report showing incorrect numbers
* Fix: Incorrect class name on customer details page
* Tweak: Improved error message shown when viewing a receipt after purchase session has expired
* Tweak: Added new filter and action to edd_has_user_purchased()
* Tweak: Renamed Czech Republic to Czechia
* Tweak: Log in form on checkout now accepts log-in by email
* Tweak: Added new edd_download_inner_class filter

= 2.7.6, March 24, 2017 =

* New: Added new hooks to customer details page
* New: Email tags are now processed in the Purchase Email heading
* Fix: User dropdown field does not always show selected user
* Fix: Payment field for Amazon Payments gateway not properly shown after authenticating with Amazon
* Fix: edd-page class improperly added to all site pages when Test Mode is enabled
* Fix: Incorrectly named CSS selector
* Fix: Checkout does not work when AJAX is disabled
* Fix: Profile editor HTML markup is inconsistent with other forms
* Fix: Query parameters not properly setup when calling multiple instances of EDD_Payments_Query
* Fix: Invalid argument supplied foreach() notice on some bundle products
* Fix: Incorrect capitalization on First Name field of checkout
* Fix: Incorrect field name passed to get_user_by() in payment import
* Fix: Custom "Complete Purchase Text" not used if payment submission results in error
* Fix: Incorrect date set for "end_date" in EDD_Stats class
* Fix: Price option not properly added when using custom add to cart links for variable priced product and not price ID is supplied
* Fix: Fees that are taxed get counted twice in tax total

= 2.7.5, March 6, 2017 =

* Tweak: Added a new filter that allows for the message shown in the email receipt when there are no download files to be controlled
* Tweak: Renamed "User" to "Customer" on sales and file downloads logs view and updated the columns to always show the customer name
* Fix: No error messages shown on [edd_register] shortcode
* Fix: Product Requirements check for discount codes fail if database value contains an empty string
* Fix: Empty metadata values get stored when creating discount codes
* Fix: Recovered payments do not store the correct purchase date
* Fix: "Click here to request a new verification URL" link does not contain a real URL
* Fix: Browser cache not flushed when EDD CSS is updated
* Fix: Spaces in URLs for files and featured images can result in import problems
* Fix: Positive fees should not be added to PayPal Standard when assigned a Download ID
* Fix: Extra dash output in email receipt and purchase history when no price option is present
* Fix: It is possible for the ID returned from EDD_DB::insert() to be returned incorrectly
* Fix: Invalid customer error shown in file downloads log endpoint of the REST API
* Fix: Removing items from an order can result in the wrong item being removed after save
* Fix: Credit Card and billing address fields shown on checkout even when no payment gateways are enabled
* Fix: Personal Info section of checkout missing the aria-describedby attribute
* Fix: Payment mode fieldset does not have a legend tag
* Fix: Duplicate DIV tag on checkout

= 2.7.4, February 22, 2017 =

* Fix: "Loading" text shown on add to cart buttons for sites without screen ready text CSS.

= 2.7.3, February 20, 2017 =

* Fix: Email addresses with a + sign cannot have their receipt resent
* Fix: Some PDF files downloaded as JPGs
* Fix: Incorrect default payment gateway error message when saving sub-sections of Payment Gateway settings
* Fix: edd-submit class accidentally removed from some buttons on the front end
* Fix: Variable price selection not possible when adding new product to existing payment record

= 2.7.2, February 15, 2017 =
* Fix: It was possible for the batch exporter base class to not be loaded before it was trying to be used.
* Fix: Payments completed with the 'resume payment' feature prevented file download links from working.
* New: EDD_Payments_Query now keeps a record of the initial arguments used, to allow better extensibility.

= 2.7.1, February 14, 2017 =
* Fix: Checkout was showing wrong total price when certain fees were applied to the cart.
* Fix: Plugin row meta linked to non-existent "Getting Started" page.
* Fix: There was a typo in the link to our site when showing an error message for a license key.
* Fix: Incorrect function name in new EDD_Discount class was being checked.

= 2.7, February 13, 2017 =
* New: Introduced EDD_Cart class for managing the shopping cart contents.
* New: Redesigned and improved functionality of the purchased downloads when viewing a payment.
* New: The applied tax rate is now saved in the payment meta.
* New: Created a tool that generates CSV earnings report.
* New: Added the ability for users to complete abandoned/pending purchases.
* New: Reduced number queries run during reports, improving performance.
* New: Selected image size is now inserted into File URL field in Download Files box.
* New: Added a link to the discount edit screen when viewing a payment.
* New: Added an option to the cart widget that allows it to be hidden when empty.
* New: Added support for all_blank on text inputs.
* New: Messages registered with edd_set_error are now output via a hook.
* New: Introduced the EDD_Discount class.
* New: Created tool to export all Logs.
* New: Improved WP CLI payment creation to support a date range.
* New: Quantity fields can now be disabled on individual download products.
* New: Added parent theme name to System Info when a child theme is detected.
* New: Added lost password URL to log in form on checkout.
* New: Introduce edd_get_payment which uses WordPress object cache to improve performance of getting payments.
* New: EDD_Payment and edd_get_payment now accept a payment transaction ID.
* New: Introduced a more EDD-specific downloads shortcode [edd_downloads].
* New: Moved edd-ajax.min script to footer to allow async loading of jQuery.
* New: Added a 'Refresh Reports' button to the graph view.
* New: Variable priced bundles can now fully support a variable priced item being bundled.
* New: Switched to using new IPN endpoints for PayPal Standard.
* New: Zip / postal code now included in tax calculation function.
* Tweak: Replaced all instances of get_post_meta() for payments with edd_get_payment_meta().
* Tweak: Deprecated edd_get_earnings_by_date & edd_get_sales_by_date.
* Tweak: Default gateway can no longer be set to a disabled gateway.
* Tweak: Adjusted error message returned when a discount code is not yet active.
* Tweak: Updated Profile Editor markup to match current EDD markup format.
* Tweak: Removed loading of the icon-font in the front end.
* Tweak: Improved the metabox for managing the customer when editing a payment.
* Tweak: Settings, Reports, Tools admin page now have headings.
* Tweak: The gateway selector is now shown when a user has an error during checkout.
* Tweak: Improved the layout and responsiveness of the customer details screen.
* Tweak: Buy Now options and buttons are now disabled if multiple gateways are enabled.
* Tweak: Improved the markup for the shortcode-login.php template file.
* Tweak: Added a per-download hook to the edd_receipt shortcode.
* Tweak: Unit tests no longer hit the network. They are so much faster now.
* Tweak: Removed use of global variable $edd_options.
* Tweak: Placeholders can now be defined for text fields when using the EDD Settings API.
* Tweak: Removed PDF earnings report in favor of the CSV Report.
* Tweak: Made the 'ignore tax' setting on reports less confusing.
* Tweak: Fixed some links in the readme.txt file.
* Tweak: Removed option to disable AJAX.
* Tweak: Adjusted "post type attribute" metabox label for downloads.
* Tweak: Fixed unit tests to work with the new WordPress core 4.7 unit tests.
* Fix: EDD_License did not properly support `item_id`.
* Fix: Earnings by Category estimates were not correct.
* Fix: Item card views (customers, licenses, subscriptions, etc) size improperly.
* Fix: Stopped redirect to PayPal on Buy Now buttons if PayPal gateway is disabled.
* Fix: The wrong class name was on the Checkout state input.
* Fix: Amazon Gateway settings are now checked before loading the scripts for Amazon Payments.
* Fix: The edd_download_redirect_to_checkout filter wasn't respecting the desired outcome in some configurations.
* Fix: The payment notes were included in normal comment count.
* Fix: Disabling API request logging was not working.
* Fix: Undefined index notices could be triggered during the login process on checkout.
* Fix: South Korea Zip/Postal Codes changed, so we updated our validation RegEx.
* Fix: Undefined index notice was shown on the dashboard widget.
* Fix: Attachment ID was not overwritten by external URL on download files.
* Fix: The history-downloads.php template was not properly showing variable price names.
* Fix: When adding fee to cart, we now preserve the decimal precision.
* Fix: Recounting store stats now resets the report transients.
* Fix: Improved the fault tolerance and error handling of creating discount codes.
* Fix: EDD_Download::setup_download() now identify $download as a WP_Post object type.
* Fix: Product import now defaults to the main admin user if the author does not exist.
* Fix: Multi-option purchase mode and variable prices work better with buy now buttons.
* Fix: Added "required" attribute to the email input field.
* Fix: Moved edd_undo_purchase_on_refund to deprecated-functions.php.
* Fix: Fixed the spelling of "Pound Sterling".

= 2.6.17, December 28, 2016 =
* Fix: Checkboxes in Downloads > Tools > Beta Versions do not retain checked state
* Fix: Extension update notifications do not show up

= 2.6.16, December 21, 2016 =
* Fix: 404 errors when downloading some files

= 2.6.15, December 19, 2016 =
* Fix: Conflict with some object caching configurations and the extension update checks that resulted in poor performance.

= 2.6.14, December 15, 2016 =
* New: Added hooks before and after cart on checkout screen
* New: Added support for user-specific locales
* Tweak: Improved performance of edd_get_payment_by(), making account pages faster
* Fix: Quantity not set on cart items when adding multiple price options to the cart at once
* Fix: Download links in email receipts over escaped, resulting in failed downloads
* Fix: December point plotted improperly on earnings / sales graphs
* Fix: Files still downloaded even if the file doesn't exist, resulting in a corrupted download file
* Fix: Non-formatted amount not set in data attribute of cart when discount codes applied
* Fix: Deleting an item from payment record does not delete the associated sale log
* Fix: This Week and Last Week reports not showing sale stats
* Fix: Calling edd_is_discount_valid() results in cart errors being set
* Fix: Earnings value doubled for Today report
* Fix: Price and currency not properly separated in schema microdata
* Fix: Tax exempt products still show tax rate on purchase buttons
* Fix: check_update() method is called twice in EDD_SL_Plugin_Updater class

= 2.6.13, November 21, 2016 =
* Fix: Custom payment meta items were not being saved correctly.

= 2.6.12, November 17, 2016 =
* New: Added new hooks to the profile editor form.
* Fix: edd_has_active_discounts could return false when there were active discounts.
* Fix: Supplying an invalid date range on reports could produce an incorrect graph.
* Fix: EDD_Payment::update_meta could produce a PHP warning when used.
* Fix: Variable Pricing options were inconsistently being shown and hidden when toggled.
* Fix: Today/Yesterday Reports miscalculated hours to include the first hour of the next day.
* Fix: When single day ranges were used on Payments list table, order status counts were not loading.
* Fix: EDD HTML Select input had many cases where mixed variable types could trigger errors and warnings.
* Fix: edd_get_users_purchases had outdated PHPDocs.
* Fix: Determining the 'main' subsection of settings could fire hooks twice and had poor performance.
* Fix: When changing report years, the report data could have been incorrect.
* Fix: Payment counts were incorrect on the Payments list table when custom dates were used.
* Fix: Certain hosting configurations caused the usage tracking notice to be improperly escaped.
* Fix: Admin scripts were not requiring `jquery-form`.
* Fix: Download limit setting isn't checked for existence before accessing it when saving a Download.
* Fix: Timezone wasn't respected when setting up daily cron.
* Fix: Upgrade routines could calculate incorrect number of total steps.
* Fix: The notice about being in test mode was not linked to the correct settings page.
* Fix: `edd_get_users_purchased_products` would fail if the first product ID supplied was not a download.
* Fix: Checkout could require a state even if the country had no states associated with it.
* Fix: Creating a discount would not save the product requirements and exclusions on first save.
* Fix: PHP Warning was being caused by the new beta setting in the extension updater.
* Fix: The EDD_SL_Plugin_Updater::check_update method could possibly be called twice.
* Fix: Sanitized unescaped URLs with esc_url

= 2.6.11, November 8, 2016 =
* New: WP CLI: Customers command now allows searching by user_id.
* New: Add framework for the new Software Licensing beta support.
* New: EDD Settings API now supports adding classes to registered settings.
* New: Improve PayPal Standard IPN lookup logic.
* New: Support iOS app one-click configuration.
* New: Add hook after cart quantities are updated.
* New: Add tooltip to "Display during checkout" tax option.
* New: Allow exporting the file download history of a specific product.
* New: Add action after discount is added to the cart.
* New: Add action hook called "edd_payment_saved" for when EDD_Payment::save() is run.
* New: Add "author" parameter support to [downloads] shortcode with support for username or ID.
* Tweak: Correct branding of necessary assets.
* Tweak: Block self-pings in tracking check-ins.
* Tweak: Update author and author URI to Easy Digital Downloads.
* Tweak: Update the Insert Download media button icon to use Dashicons.
* Tweak: Allow download admin icon to be more easily customized.
* Tweak: Exported CSVs show "Complete" status as "publish".
* Fix: Corrected translation for login shortcode redirect description.
* Fix: Improved the caching of stats transients for better performance.
* Fix: API Keys were not able to be copied from user profile.
* Fix: Corrected link to the iOS application.
* Fix: Use new iPhone icon.
* Fix: EDD_Payment::setup_tax did not always contain proper data.
* Fix: Styles on Recount/Reset tool were lost.
* Fix: CSV import tool were not importing Download Files in some circumstances.
* Fix: Tooltip styles had a conflict with Gravity Forms.
* Fix: Recount earning/sales tool for all downloads was failing to properly recount.
* Fix: Multiple instances of cart widget was causing conflicts when adding or removing items.
* Fix: API Key list table was unreadable on mobile.
* Fix: Custom icons via edd_accepted_payment_icons were unwrapped.
* Fix: Fees for specific download and price IDs did not check if the item or price ID is in the cart.
* Fix: EDD API was always returning version 1 by default.
* Fix: Changed uses of jQuery .toggle() to use .show() and .

Easy Digital Downloads Plugin
Price: FREE

Easy Digital Downloads is a complete eCommerce solution for selling digital products on WordPress.

View Cart