Version Description
Download this release
Release Info
Developer | cklosows |
Plugin | Easy Digital Downloads |
Version | 2.8.16 |
Comparing to | |
See all releases |
Code changes from version 2.8.15 to 2.8.16
- easy-digital-downloads.php +3 -3
- includes/actions.php +7 -5
- includes/admin/tracking.php +15 -4
- includes/cart/functions.php +7 -0
- includes/class-edd-cli.php +62 -7
- includes/class-edd-license-handler.php +3 -1
- includes/misc-functions.php +33 -0
- includes/payments/actions.php +18 -1
- includes/process-purchase.php +1 -1
- includes/template-functions.php +2 -2
- languages/easy-digital-downloads.pot +20 -20
- readme.txt +6 -1
easy-digital-downloads.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* Description: The easiest way to sell digital products with WordPress.
|
6 |
* Author: Easy Digital Downloads
|
7 |
* Author URI: https://easydigitaldownloads.com
|
8 |
-
* Version: 2.8.
|
9 |
* Text Domain: easy-digital-downloads
|
10 |
* Domain Path: languages
|
11 |
*
|
@@ -25,7 +25,7 @@
|
|
25 |
* @package EDD
|
26 |
* @category Core
|
27 |
* @author Pippin Williamson
|
28 |
-
* @version 2.8.
|
29 |
*/
|
30 |
|
31 |
// Exit if accessed directly.
|
@@ -206,7 +206,7 @@ final class Easy_Digital_Downloads {
|
|
206 |
|
207 |
// Plugin version.
|
208 |
if ( ! defined( 'EDD_VERSION' ) ) {
|
209 |
-
define( 'EDD_VERSION', '2.8.
|
210 |
}
|
211 |
|
212 |
// Plugin Folder Path.
|
5 |
* Description: The easiest way to sell digital products with WordPress.
|
6 |
* Author: Easy Digital Downloads
|
7 |
* Author URI: https://easydigitaldownloads.com
|
8 |
+
* Version: 2.8.16
|
9 |
* Text Domain: easy-digital-downloads
|
10 |
* Domain Path: languages
|
11 |
*
|
25 |
* @package EDD
|
26 |
* @category Core
|
27 |
* @author Pippin Williamson
|
28 |
+
* @version 2.8.16
|
29 |
*/
|
30 |
|
31 |
// Exit if accessed directly.
|
206 |
|
207 |
// Plugin version.
|
208 |
if ( ! defined( 'EDD_VERSION' ) ) {
|
209 |
+
define( 'EDD_VERSION', '2.8.16' );
|
210 |
}
|
211 |
|
212 |
// Plugin Folder Path.
|
includes/actions.php
CHANGED
@@ -21,8 +21,9 @@ if ( ! defined( 'ABSPATH' ) ) exit;
|
|
21 |
* @return void
|
22 |
*/
|
23 |
function edd_get_actions() {
|
24 |
-
|
25 |
-
|
|
|
26 |
}
|
27 |
}
|
28 |
add_action( 'init', 'edd_get_actions' );
|
@@ -36,8 +37,9 @@ add_action( 'init', 'edd_get_actions' );
|
|
36 |
* @return void
|
37 |
*/
|
38 |
function edd_post_actions() {
|
39 |
-
|
40 |
-
|
|
|
41 |
}
|
42 |
}
|
43 |
-
add_action( 'init', 'edd_post_actions' );
|
21 |
* @return void
|
22 |
*/
|
23 |
function edd_get_actions() {
|
24 |
+
$key = ! empty( $_GET['edd_action'] ) ? sanitize_key( $_GET['edd_action'] ) : false;
|
25 |
+
if ( ! empty( $key ) ) {
|
26 |
+
do_action( "edd_{$key}" , $_GET );
|
27 |
}
|
28 |
}
|
29 |
add_action( 'init', 'edd_get_actions' );
|
37 |
* @return void
|
38 |
*/
|
39 |
function edd_post_actions() {
|
40 |
+
$key = ! empty( $_POST['edd_action'] ) ? sanitize_key( $_POST['edd_action'] ) : false;
|
41 |
+
if ( ! empty( $key ) ) {
|
42 |
+
do_action( "edd_{$key}", $_POST );
|
43 |
}
|
44 |
}
|
45 |
+
add_action( 'init', 'edd_post_actions' );
|
includes/admin/tracking.php
CHANGED
@@ -38,9 +38,9 @@ class EDD_Tracking {
|
|
38 |
|
39 |
add_action( 'init', array( $this, 'schedule_send' ) );
|
40 |
add_action( 'edd_settings_general_sanitize', array( $this, 'check_for_settings_optin' ) );
|
41 |
-
add_action( 'edd_opt_into_tracking',
|
42 |
add_action( 'edd_opt_out_of_tracking', array( $this, 'check_for_optout' ) );
|
43 |
-
add_action( 'admin_notices',
|
44 |
|
45 |
}
|
46 |
|
@@ -177,6 +177,9 @@ class EDD_Tracking {
|
|
177 |
* @return void
|
178 |
*/
|
179 |
public function check_for_optin( $data ) {
|
|
|
|
|
|
|
180 |
|
181 |
edd_update_option( 'allow_tracking', 1 );
|
182 |
|
@@ -193,6 +196,10 @@ class EDD_Tracking {
|
|
193 |
* @return void
|
194 |
*/
|
195 |
public function check_for_optout( $data ) {
|
|
|
|
|
|
|
|
|
196 |
edd_delete_option( 'allow_tracking' );
|
197 |
update_option( 'edd_tracking_notice', '1' );
|
198 |
wp_redirect( remove_query_arg( 'edd_action' ) ); exit;
|
@@ -211,12 +218,16 @@ class EDD_Tracking {
|
|
211 |
/**
|
212 |
* Schedule a weekly checkin
|
213 |
*
|
|
|
|
|
|
|
214 |
* @access public
|
215 |
* @return void
|
216 |
*/
|
217 |
public function schedule_send() {
|
218 |
-
|
219 |
-
|
|
|
220 |
}
|
221 |
|
222 |
/**
|
38 |
|
39 |
add_action( 'init', array( $this, 'schedule_send' ) );
|
40 |
add_action( 'edd_settings_general_sanitize', array( $this, 'check_for_settings_optin' ) );
|
41 |
+
add_action( 'edd_opt_into_tracking', array( $this, 'check_for_optin' ) );
|
42 |
add_action( 'edd_opt_out_of_tracking', array( $this, 'check_for_optout' ) );
|
43 |
+
add_action( 'admin_notices', array( $this, 'admin_notice' ) );
|
44 |
|
45 |
}
|
46 |
|
177 |
* @return void
|
178 |
*/
|
179 |
public function check_for_optin( $data ) {
|
180 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
181 |
+
return;
|
182 |
+
}
|
183 |
|
184 |
edd_update_option( 'allow_tracking', 1 );
|
185 |
|
196 |
* @return void
|
197 |
*/
|
198 |
public function check_for_optout( $data ) {
|
199 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
200 |
+
return;
|
201 |
+
}
|
202 |
+
|
203 |
edd_delete_option( 'allow_tracking' );
|
204 |
update_option( 'edd_tracking_notice', '1' );
|
205 |
wp_redirect( remove_query_arg( 'edd_action' ) ); exit;
|
218 |
/**
|
219 |
* Schedule a weekly checkin
|
220 |
*
|
221 |
+
* We send once a week (while tracking is allowed) to check in, which can be
|
222 |
+
* used to determine active sites.
|
223 |
+
*
|
224 |
* @access public
|
225 |
* @return void
|
226 |
*/
|
227 |
public function schedule_send() {
|
228 |
+
if ( edd_doing_cron() ) {
|
229 |
+
add_action( 'edd_weekly_scheduled_events', array( $this, 'send_checkin' ) );
|
230 |
+
}
|
231 |
}
|
232 |
|
233 |
/**
|
includes/cart/functions.php
CHANGED
@@ -603,6 +603,8 @@ function edd_get_cart_token() {
|
|
603 |
/**
|
604 |
* Delete Saved Carts after one week
|
605 |
*
|
|
|
|
|
606 |
* @since 1.8
|
607 |
* @global $wpdb
|
608 |
* @return void
|
@@ -610,6 +612,11 @@ function edd_get_cart_token() {
|
|
610 |
function edd_delete_saved_carts() {
|
611 |
global $wpdb;
|
612 |
|
|
|
|
|
|
|
|
|
|
|
613 |
$start = date( 'Y-m-d', strtotime( '-7 days' ) );
|
614 |
$carts = $wpdb->get_results(
|
615 |
"
|
603 |
/**
|
604 |
* Delete Saved Carts after one week
|
605 |
*
|
606 |
+
* This function is only intended to be used by WordPress cron.
|
607 |
+
*
|
608 |
* @since 1.8
|
609 |
* @global $wpdb
|
610 |
* @return void
|
612 |
function edd_delete_saved_carts() {
|
613 |
global $wpdb;
|
614 |
|
615 |
+
// Bail if not in WordPress cron
|
616 |
+
if ( ! edd_doing_cron() ) {
|
617 |
+
return;
|
618 |
+
}
|
619 |
+
|
620 |
$start = date( 'Y-m-d', strtotime( '-7 days' ) );
|
621 |
$carts = $wpdb->get_results(
|
622 |
"
|
includes/class-edd-cli.php
CHANGED
@@ -364,18 +364,18 @@ class EDD_CLI extends WP_CLI_Command {
|
|
364 |
* ## OPTIONS
|
365 |
*
|
366 |
* --email=<customer_email>: The email address of the customer to retrieve
|
367 |
-
*
|
368 |
* ## EXAMPLES
|
369 |
-
*
|
370 |
* wp edd sales
|
371 |
* wp edd sales --email=john@test.com
|
372 |
*/
|
373 |
public function sales( $args, $assoc_args ) {
|
374 |
-
|
375 |
$email = isset( $assoc_args ) && array_key_exists( 'email', $assoc_args ) ? $assoc_args['email'] : '';
|
376 |
-
|
377 |
-
global $wp_query;
|
378 |
-
|
379 |
$wp_query->query_vars['email'] = $email;
|
380 |
|
381 |
$sales = $this->api->get_recent_sales();
|
@@ -528,12 +528,14 @@ class EDD_CLI extends WP_CLI_Command {
|
|
528 |
$id = false;
|
529 |
$price_id = false;
|
530 |
$tax = 0;
|
531 |
-
$email = 'guest@local
|
532 |
$fname = 'Pippin';
|
533 |
$lname = 'Williamson';
|
534 |
$date = false;
|
535 |
$range = 30;
|
536 |
|
|
|
|
|
537 |
if( count( $assoc_args ) > 0 ) {
|
538 |
$number = ( array_key_exists( 'number', $assoc_args ) ) ? absint( $assoc_args['number'] ) : $number;
|
539 |
$id = ( array_key_exists( 'id', $assoc_args ) ) ? absint( $assoc_args['id'] ) : $id;
|
@@ -545,6 +547,8 @@ class EDD_CLI extends WP_CLI_Command {
|
|
545 |
$date = ( array_key_exists( 'date', $assoc_args ) ) ? sanitize_text_field( $assoc_args['date'] ) : $date;
|
546 |
$range = ( array_key_exists( 'range', $assoc_args ) ) ? absint( $assoc_args['range'] ) : $range;
|
547 |
|
|
|
|
|
548 |
// Status requires a bit more validation
|
549 |
if( array_key_exists( 'status', $assoc_args ) ) {
|
550 |
$stati = array(
|
@@ -683,6 +687,23 @@ class EDD_CLI extends WP_CLI_Command {
|
|
683 |
}
|
684 |
}
|
685 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
686 |
$purchase_data = array(
|
687 |
'price' => edd_sanitize_amount( $total ),
|
688 |
'tax' => 0,
|
@@ -722,4 +743,38 @@ class EDD_CLI extends WP_CLI_Command {
|
|
722 |
WP_CLI::success( sprintf( __( 'Created %s payments', 'easy-digital-downloads' ), $number ) );
|
723 |
return;
|
724 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
725 |
}
|
364 |
* ## OPTIONS
|
365 |
*
|
366 |
* --email=<customer_email>: The email address of the customer to retrieve
|
367 |
+
*
|
368 |
* ## EXAMPLES
|
369 |
+
*
|
370 |
* wp edd sales
|
371 |
* wp edd sales --email=john@test.com
|
372 |
*/
|
373 |
public function sales( $args, $assoc_args ) {
|
374 |
+
|
375 |
$email = isset( $assoc_args ) && array_key_exists( 'email', $assoc_args ) ? $assoc_args['email'] : '';
|
376 |
+
|
377 |
+
global $wp_query;
|
378 |
+
|
379 |
$wp_query->query_vars['email'] = $email;
|
380 |
|
381 |
$sales = $this->api->get_recent_sales();
|
528 |
$id = false;
|
529 |
$price_id = false;
|
530 |
$tax = 0;
|
531 |
+
$email = 'guest@edd.local';
|
532 |
$fname = 'Pippin';
|
533 |
$lname = 'Williamson';
|
534 |
$date = false;
|
535 |
$range = 30;
|
536 |
|
537 |
+
$generate_users = false;
|
538 |
+
|
539 |
if( count( $assoc_args ) > 0 ) {
|
540 |
$number = ( array_key_exists( 'number', $assoc_args ) ) ? absint( $assoc_args['number'] ) : $number;
|
541 |
$id = ( array_key_exists( 'id', $assoc_args ) ) ? absint( $assoc_args['id'] ) : $id;
|
547 |
$date = ( array_key_exists( 'date', $assoc_args ) ) ? sanitize_text_field( $assoc_args['date'] ) : $date;
|
548 |
$range = ( array_key_exists( 'range', $assoc_args ) ) ? absint( $assoc_args['range'] ) : $range;
|
549 |
|
550 |
+
$generate_users = ( array_key_exists( 'generate_users', $assoc_args ) ) ? (bool) absint( $assoc_args['generate_users'] ) : $generate_users;
|
551 |
+
|
552 |
// Status requires a bit more validation
|
553 |
if( array_key_exists( 'status', $assoc_args ) ) {
|
554 |
$stati = array(
|
687 |
}
|
688 |
}
|
689 |
|
690 |
+
if ( $generate_users ) {
|
691 |
+
$fname = $this->get_fname();
|
692 |
+
$lname = $this->get_lname();
|
693 |
+
$domain = $this->get_domain();
|
694 |
+
$tld = $this->get_tld();
|
695 |
+
|
696 |
+
$email = $fname . '.' . $lname . '@' . $domain . '.' . $tld;
|
697 |
+
|
698 |
+
$user_info = array(
|
699 |
+
'id' => 0,
|
700 |
+
'email' => $email,
|
701 |
+
'first_name' => $fname,
|
702 |
+
'last_name' => $lname,
|
703 |
+
'discount' => 'none'
|
704 |
+
);
|
705 |
+
}
|
706 |
+
|
707 |
$purchase_data = array(
|
708 |
'price' => edd_sanitize_amount( $total ),
|
709 |
'tax' => 0,
|
743 |
WP_CLI::success( sprintf( __( 'Created %s payments', 'easy-digital-downloads' ), $number ) );
|
744 |
return;
|
745 |
}
|
746 |
+
|
747 |
+
private function get_fname() {
|
748 |
+
$names = array(
|
749 |
+
'Ilse','Emelda','Aurelio','Chiquita','Cheryl','Norbert','Neville','Wendie','Clint','Synthia','Tobi','Nakita',
|
750 |
+
'Marisa','Maybelle','Onie','Donnette','Henry','Sheryll','Leighann','Wilson',
|
751 |
+
);
|
752 |
+
|
753 |
+
return $names[ rand( 0, ( count( $names ) - 1 ) ) ];
|
754 |
+
}
|
755 |
+
|
756 |
+
private function get_lname() {
|
757 |
+
$names = array(
|
758 |
+
'Warner','Roush','Lenahan','Theiss','Sack','Troutt','Vanderburg','Lisi','Lemons','Christon','Kogut',
|
759 |
+
'Broad','Wernick','Horstmann','Schoenfeld','Dolloff','Murph','Shipp','Hursey','Jacobi',
|
760 |
+
);
|
761 |
+
|
762 |
+
return $names[ rand( 0, ( count( $names ) - 1 ) ) ];
|
763 |
+
}
|
764 |
+
|
765 |
+
private function get_domain() {
|
766 |
+
$domains = array(
|
767 |
+
'example', 'edd', 'rcp', 'affwp',
|
768 |
+
);
|
769 |
+
|
770 |
+
return $domains[ rand( 0, ( count( $domains ) - 1 ) ) ];
|
771 |
+
}
|
772 |
+
|
773 |
+
private function get_tld() {
|
774 |
+
$tlds = array(
|
775 |
+
'local', 'test', 'example', 'localhost', 'invalid',
|
776 |
+
);
|
777 |
+
|
778 |
+
return $tlds[ rand( 0, ( count( $tlds ) - 1 ) ) ];
|
779 |
+
}
|
780 |
}
|
includes/class-edd-license-handler.php
CHANGED
@@ -104,7 +104,9 @@ class EDD_License {
|
|
104 |
add_action( 'admin_init', array( $this, 'deactivate_license' ) );
|
105 |
|
106 |
// Check that license is valid once per week
|
107 |
-
|
|
|
|
|
108 |
|
109 |
// For testing license notices, uncomment this line to force checks on every page load
|
110 |
//add_action( 'admin_init', array( $this, 'weekly_license_check' ) );
|
104 |
add_action( 'admin_init', array( $this, 'deactivate_license' ) );
|
105 |
|
106 |
// Check that license is valid once per week
|
107 |
+
if ( edd_doing_cron() ) {
|
108 |
+
add_action( 'edd_weekly_scheduled_events', array( $this, 'weekly_license_check' ) );
|
109 |
+
}
|
110 |
|
111 |
// For testing license notices, uncomment this line to force checks on every page load
|
112 |
//add_action( 'admin_init', array( $this, 'weekly_license_check' ) );
|
includes/misc-functions.php
CHANGED
@@ -676,11 +676,19 @@ function edd_get_upload_dir() {
|
|
676 |
/**
|
677 |
* Delete symbolic links after they have been used
|
678 |
*
|
|
|
|
|
679 |
* @access public
|
680 |
* @since 1.5
|
681 |
* @return void
|
682 |
*/
|
683 |
function edd_cleanup_file_symlinks() {
|
|
|
|
|
|
|
|
|
|
|
|
|
684 |
$path = edd_get_symlink_dir();
|
685 |
$dir = opendir( $path );
|
686 |
|
@@ -950,3 +958,28 @@ function edd_can_view_receipt( $payment_key = '' ) {
|
|
950 |
|
951 |
return (bool) apply_filters( 'edd_can_view_receipt', $return, $payment_key );
|
952 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
676 |
/**
|
677 |
* Delete symbolic links after they have been used
|
678 |
*
|
679 |
+
* This function is only intended to be used by WordPress cron.
|
680 |
+
*
|
681 |
* @access public
|
682 |
* @since 1.5
|
683 |
* @return void
|
684 |
*/
|
685 |
function edd_cleanup_file_symlinks() {
|
686 |
+
|
687 |
+
// Bail if not in WordPress cron
|
688 |
+
if ( ! edd_doing_cron() ) {
|
689 |
+
return;
|
690 |
+
}
|
691 |
+
|
692 |
$path = edd_get_symlink_dir();
|
693 |
$dir = opendir( $path );
|
694 |
|
958 |
|
959 |
return (bool) apply_filters( 'edd_can_view_receipt', $return, $payment_key );
|
960 |
}
|
961 |
+
|
962 |
+
/**
|
963 |
+
* Abstraction for WordPress cron checking, to avoid code duplication.
|
964 |
+
*
|
965 |
+
* In future versions of EDD, this function will be changed to only refer to
|
966 |
+
* EDD specific cron related jobs. You probably won't want to use it until then.
|
967 |
+
*
|
968 |
+
* @since 2.8.16
|
969 |
+
*
|
970 |
+
* @return boolean
|
971 |
+
*/
|
972 |
+
function edd_doing_cron() {
|
973 |
+
|
974 |
+
// Bail if not doing WordPress cron (>4.8.0)
|
975 |
+
if ( function_exists( 'wp_doing_cron' ) && wp_doing_cron() ) {
|
976 |
+
return true;
|
977 |
+
|
978 |
+
// Bail if not doing WordPress cron (<4.8.0)
|
979 |
+
} elseif ( defined( 'DOING_CRON' ) && ( true === DOING_CRON ) ) {
|
980 |
+
return true;
|
981 |
+
}
|
982 |
+
|
983 |
+
// Default to false
|
984 |
+
return false;
|
985 |
+
}
|
includes/payments/actions.php
CHANGED
@@ -284,10 +284,18 @@ add_action( 'edd_upgrade_payments', 'edd_update_old_payments_with_totals' );
|
|
284 |
/**
|
285 |
* Updates week-old+ 'pending' orders to 'abandoned'
|
286 |
*
|
|
|
|
|
287 |
* @since 1.6
|
288 |
* @return void
|
289 |
*/
|
290 |
function edd_mark_abandoned_orders() {
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
$args = array(
|
292 |
'status' => 'pending',
|
293 |
'number' => -1,
|
@@ -438,7 +446,16 @@ function edd_recover_payment() {
|
|
438 |
return;
|
439 |
}
|
440 |
|
441 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
442 |
$redirect = get_permalink( edd_get_option( 'purchase_history_page' ) );
|
443 |
edd_set_error( 'edd-payment-recovery-user-mismatch', __( 'Error resuming payment.', 'easy-digital-downloads' ) );
|
444 |
wp_redirect( $redirect );
|
284 |
/**
|
285 |
* Updates week-old+ 'pending' orders to 'abandoned'
|
286 |
*
|
287 |
+
* This function is only intended to be used by WordPress cron.
|
288 |
+
*
|
289 |
* @since 1.6
|
290 |
* @return void
|
291 |
*/
|
292 |
function edd_mark_abandoned_orders() {
|
293 |
+
|
294 |
+
// Bail if not in WordPress cron
|
295 |
+
if ( ! edd_doing_cron() ) {
|
296 |
+
return;
|
297 |
+
}
|
298 |
+
|
299 |
$args = array(
|
300 |
'status' => 'pending',
|
301 |
'number' => -1,
|
446 |
return;
|
447 |
}
|
448 |
|
449 |
+
if (
|
450 |
+
// Logged in, but wrong user ID
|
451 |
+
( is_user_logged_in() && $payment->user_id != get_current_user_id() )
|
452 |
+
|
453 |
+
// ...OR...
|
454 |
+
||
|
455 |
+
|
456 |
+
// Logged out, but payment is for a user
|
457 |
+
( ! is_user_logged_in() && ! empty( $payment->user_id ) )
|
458 |
+
) {
|
459 |
$redirect = get_permalink( edd_get_option( 'purchase_history_page' ) );
|
460 |
edd_set_error( 'edd-payment-recovery-user-mismatch', __( 'Error resuming payment.', 'easy-digital-downloads' ) );
|
461 |
wp_redirect( $redirect );
|
includes/process-purchase.php
CHANGED
@@ -621,7 +621,7 @@ function edd_purchase_form_validate_user_login() {
|
|
621 |
|
622 |
// Username
|
623 |
if ( empty( $_POST['edd_user_login'] ) && edd_no_guest_checkout() ) {
|
624 |
-
edd_set_error( 'must_log_in', __( 'You must
|
625 |
return $valid_user_data;
|
626 |
}
|
627 |
|
621 |
|
622 |
// Username
|
623 |
if ( empty( $_POST['edd_user_login'] ) && edd_no_guest_checkout() ) {
|
624 |
+
edd_set_error( 'must_log_in', __( 'You must log in or register to complete your purchase', 'easy-digital-downloads' ) );
|
625 |
return $valid_user_data;
|
626 |
}
|
627 |
|
includes/template-functions.php
CHANGED
@@ -831,7 +831,7 @@ function edd_microdata_wrapper_open( $query ) {
|
|
831 |
|
832 |
if ( $query && ! empty( $query->query['post_type'] ) && $query->query['post_type'] == 'download' && is_singular( 'download' ) && $query->is_main_query() ) {
|
833 |
$microdata_open = true;
|
834 |
-
echo '<
|
835 |
}
|
836 |
|
837 |
}
|
@@ -856,7 +856,7 @@ function edd_microdata_wrapper_close() {
|
|
856 |
|
857 |
if ( $post && $post->post_type == 'download' && is_singular( 'download' ) && is_main_query() ) {
|
858 |
$microdata_close = true;
|
859 |
-
echo '</
|
860 |
}
|
861 |
}
|
862 |
add_action( 'loop_end', 'edd_microdata_wrapper_close', 10 );
|
831 |
|
832 |
if ( $query && ! empty( $query->query['post_type'] ) && $query->query['post_type'] == 'download' && is_singular( 'download' ) && $query->is_main_query() ) {
|
833 |
$microdata_open = true;
|
834 |
+
echo '<div itemscope itemtype="http://schema.org/Product">';
|
835 |
}
|
836 |
|
837 |
}
|
856 |
|
857 |
if ( $post && $post->post_type == 'download' && is_singular( 'download' ) && is_main_query() ) {
|
858 |
$microdata_close = true;
|
859 |
+
echo '</div>';
|
860 |
}
|
861 |
}
|
862 |
add_action( 'loop_end', 'edd_microdata_wrapper_close', 10 );
|
languages/easy-digital-downloads.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the Easy Digital Downloads package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Easy Digital Downloads 2.8.
|
6 |
"Report-Msgid-Bugs-To: https://easydigitaldownloads.com/\n"
|
7 |
-
"POT-Creation-Date: 2017-12-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -90,7 +90,7 @@ msgstr ""
|
|
90 |
#: includes/api/class-edd-api.php:1990 includes/api/class-edd-api.php:1995
|
91 |
#: includes/api/class-edd-api.php:2007 includes/api/class-edd-api.php:2009
|
92 |
#: includes/cart/class-edd-cart.php:1470 includes/cart/class-edd-cart.php:1484
|
93 |
-
#: includes/class-edd-license-handler.php:
|
94 |
#: includes/deprecated-functions.php:517 includes/deprecated-functions.php:532
|
95 |
#: includes/deprecated-functions.php:542 includes/download-functions.php:1248
|
96 |
#: includes/emails/actions.php:53 includes/emails/template.php:243
|
@@ -546,7 +546,7 @@ msgstr ""
|
|
546 |
#: includes/admin/import/import-functions.php:113
|
547 |
#: includes/admin/reporting/export/export-actions.php:23
|
548 |
#: includes/api/class-edd-api.php:1990
|
549 |
-
#: includes/class-edd-license-handler.php:
|
550 |
msgid "Nonce verification failed"
|
551 |
msgstr ""
|
552 |
|
@@ -4728,7 +4728,7 @@ msgstr ""
|
|
4728 |
msgid "Copy Entire Log"
|
4729 |
msgstr ""
|
4730 |
|
4731 |
-
#: includes/admin/tracking.php:
|
4732 |
msgid ""
|
4733 |
"Allow Easy Digital Downloads to track plugin usage? Opt-in to tracking and "
|
4734 |
"our newsletter and immediately be emailed a discount to the EDD shop, valid "
|
@@ -4736,11 +4736,11 @@ msgid ""
|
|
4736 |
"sensitive data is tracked."
|
4737 |
msgstr ""
|
4738 |
|
4739 |
-
#: includes/admin/tracking.php:
|
4740 |
msgid "Allow"
|
4741 |
msgstr ""
|
4742 |
|
4743 |
-
#: includes/admin/tracking.php:
|
4744 |
msgid "Do not allow"
|
4745 |
msgstr ""
|
4746 |
|
@@ -5549,15 +5549,15 @@ msgstr ""
|
|
5549 |
msgid "Invalid action specified, did you mean"
|
5550 |
msgstr ""
|
5551 |
|
5552 |
-
#: includes/class-edd-cli.php:
|
5553 |
msgid "Invalid status '%s', defaulting to 'complete'"
|
5554 |
msgstr ""
|
5555 |
|
5556 |
-
#: includes/class-edd-cli.php:
|
5557 |
msgid "Specified ID is not a product"
|
5558 |
msgstr ""
|
5559 |
|
5560 |
-
#: includes/class-edd-cli.php:
|
5561 |
msgid "Created %s payments"
|
5562 |
msgstr ""
|
5563 |
|
@@ -5634,24 +5634,24 @@ msgstr ""
|
|
5634 |
msgid "Enter username"
|
5635 |
msgstr ""
|
5636 |
|
5637 |
-
#: includes/class-edd-license-handler.php:
|
5638 |
msgid "%1$s"
|
5639 |
msgstr ""
|
5640 |
|
5641 |
-
#: includes/class-edd-license-handler.php:
|
5642 |
msgid ""
|
5643 |
"Enter your extension license keys here to receive updates for purchased "
|
5644 |
"extensions. If your license key has expired, please <a href=\"%s\" "
|
5645 |
"target=\"_blank\">renew your license</a>."
|
5646 |
msgstr ""
|
5647 |
|
5648 |
-
#: includes/class-edd-license-handler.php:
|
5649 |
msgid ""
|
5650 |
"You have invalid or expired license keys for Easy Digital Downloads. Please "
|
5651 |
"go to the <a href=\"%s\">Licenses page</a> to correct this issue."
|
5652 |
msgstr ""
|
5653 |
|
5654 |
-
#: includes/class-edd-license-handler.php:
|
5655 |
msgid "Enter valid license key for automatic updates."
|
5656 |
msgstr ""
|
5657 |
|
@@ -6783,23 +6783,23 @@ msgstr ""
|
|
6783 |
msgid "Status changed from %s to %s"
|
6784 |
msgstr ""
|
6785 |
|
6786 |
-
#: includes/payments/actions.php:
|
6787 |
msgid "Error resuming payment."
|
6788 |
msgstr ""
|
6789 |
|
6790 |
-
#: includes/payments/actions.php:
|
6791 |
msgid "Payment recovery triggered URL"
|
6792 |
msgstr ""
|
6793 |
|
6794 |
-
#: includes/payments/actions.php:
|
6795 |
msgid "To complete this payment, please login to your account."
|
6796 |
msgstr ""
|
6797 |
|
6798 |
-
#: includes/payments/actions.php:
|
6799 |
msgid "Lost Password"
|
6800 |
msgstr ""
|
6801 |
|
6802 |
-
#: includes/payments/actions.php:
|
6803 |
msgid "Lost Password?"
|
6804 |
msgstr ""
|
6805 |
|
@@ -7220,7 +7220,7 @@ msgid "Enter the password confirmation"
|
|
7220 |
msgstr ""
|
7221 |
|
7222 |
#: includes/process-purchase.php:624
|
7223 |
-
msgid "You must
|
7224 |
msgstr ""
|
7225 |
|
7226 |
#: includes/process-purchase.php:651
|
2 |
# This file is distributed under the same license as the Easy Digital Downloads package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Easy Digital Downloads 2.8.16\n"
|
6 |
"Report-Msgid-Bugs-To: https://easydigitaldownloads.com/\n"
|
7 |
+
"POT-Creation-Date: 2017-12-21 21:34:32+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
90 |
#: includes/api/class-edd-api.php:1990 includes/api/class-edd-api.php:1995
|
91 |
#: includes/api/class-edd-api.php:2007 includes/api/class-edd-api.php:2009
|
92 |
#: includes/cart/class-edd-cart.php:1470 includes/cart/class-edd-cart.php:1484
|
93 |
+
#: includes/class-edd-license-handler.php:309
|
94 |
#: includes/deprecated-functions.php:517 includes/deprecated-functions.php:532
|
95 |
#: includes/deprecated-functions.php:542 includes/download-functions.php:1248
|
96 |
#: includes/emails/actions.php:53 includes/emails/template.php:243
|
546 |
#: includes/admin/import/import-functions.php:113
|
547 |
#: includes/admin/reporting/export/export-actions.php:23
|
548 |
#: includes/api/class-edd-api.php:1990
|
549 |
+
#: includes/class-edd-license-handler.php:309
|
550 |
msgid "Nonce verification failed"
|
551 |
msgstr ""
|
552 |
|
4728 |
msgid "Copy Entire Log"
|
4729 |
msgstr ""
|
4730 |
|
4731 |
+
#: includes/admin/tracking.php:267
|
4732 |
msgid ""
|
4733 |
"Allow Easy Digital Downloads to track plugin usage? Opt-in to tracking and "
|
4734 |
"our newsletter and immediately be emailed a discount to the EDD shop, valid "
|
4736 |
"sensitive data is tracked."
|
4737 |
msgstr ""
|
4738 |
|
4739 |
+
#: includes/admin/tracking.php:268
|
4740 |
msgid "Allow"
|
4741 |
msgstr ""
|
4742 |
|
4743 |
+
#: includes/admin/tracking.php:269
|
4744 |
msgid "Do not allow"
|
4745 |
msgstr ""
|
4746 |
|
5549 |
msgid "Invalid action specified, did you mean"
|
5550 |
msgstr ""
|
5551 |
|
5552 |
+
#: includes/class-edd-cli.php:570
|
5553 |
msgid "Invalid status '%s', defaulting to 'complete'"
|
5554 |
msgstr ""
|
5555 |
|
5556 |
+
#: includes/class-edd-cli.php:608
|
5557 |
msgid "Specified ID is not a product"
|
5558 |
msgstr ""
|
5559 |
|
5560 |
+
#: includes/class-edd-cli.php:743
|
5561 |
msgid "Created %s payments"
|
5562 |
msgstr ""
|
5563 |
|
5634 |
msgid "Enter username"
|
5635 |
msgstr ""
|
5636 |
|
5637 |
+
#: includes/class-edd-license-handler.php:168
|
5638 |
msgid "%1$s"
|
5639 |
msgstr ""
|
5640 |
|
5641 |
+
#: includes/class-edd-license-handler.php:201
|
5642 |
msgid ""
|
5643 |
"Enter your extension license keys here to receive updates for purchased "
|
5644 |
"extensions. If your license key has expired, please <a href=\"%s\" "
|
5645 |
"target=\"_blank\">renew your license</a>."
|
5646 |
msgstr ""
|
5647 |
|
5648 |
+
#: includes/class-edd-license-handler.php:426
|
5649 |
msgid ""
|
5650 |
"You have invalid or expired license keys for Easy Digital Downloads. Please "
|
5651 |
"go to the <a href=\"%s\">Licenses page</a> to correct this issue."
|
5652 |
msgstr ""
|
5653 |
|
5654 |
+
#: includes/class-edd-license-handler.php:465
|
5655 |
msgid "Enter valid license key for automatic updates."
|
5656 |
msgstr ""
|
5657 |
|
6783 |
msgid "Status changed from %s to %s"
|
6784 |
msgstr ""
|
6785 |
|
6786 |
+
#: includes/payments/actions.php:460 includes/payments/actions.php:520
|
6787 |
msgid "Error resuming payment."
|
6788 |
msgstr ""
|
6789 |
|
6790 |
+
#: includes/payments/actions.php:464
|
6791 |
msgid "Payment recovery triggered URL"
|
6792 |
msgstr ""
|
6793 |
|
6794 |
+
#: includes/payments/actions.php:542 includes/payments/actions.php:576
|
6795 |
msgid "To complete this payment, please login to your account."
|
6796 |
msgstr ""
|
6797 |
|
6798 |
+
#: includes/payments/actions.php:544
|
6799 |
msgid "Lost Password"
|
6800 |
msgstr ""
|
6801 |
|
6802 |
+
#: includes/payments/actions.php:545 templates/shortcode-login.php:33
|
6803 |
msgid "Lost Password?"
|
6804 |
msgstr ""
|
6805 |
|
7220 |
msgstr ""
|
7221 |
|
7222 |
#: includes/process-purchase.php:624
|
7223 |
+
msgid "You must log in or register to complete your purchase"
|
7224 |
msgstr ""
|
7225 |
|
7226 |
#: includes/process-purchase.php:651
|
readme.txt
CHANGED
@@ -6,7 +6,7 @@ Donate link: https://easydigitaldownloads.com/donate/
|
|
6 |
Tags: download, downloads, e-store, eshop, digital downloads, e-commerce, wp-ecommerce, wp ecommerce, ecommerce, ebook
|
7 |
Requires at least: 4.4
|
8 |
Tested up to: 4.9.1
|
9 |
-
Stable Tag: 2.8.
|
10 |
License: GNU Version 2 or Any Later Version
|
11 |
|
12 |
The easiest way to sell digital products with WordPress.
|
@@ -190,6 +190,11 @@ Yes. Easy Digital Downloads also includes default support for Amazon Payments an
|
|
190 |
|
191 |
== Changelog ==
|
192 |
|
|
|
|
|
|
|
|
|
|
|
193 |
= 2.8.15, December 13, 2017 =
|
194 |
* Fix: Getting files of variable priced bundles products did not always respect variable price ID.
|
195 |
* Tweak: Added found payments to the hooks before and after the purchase history shortcode.
|
6 |
Tags: download, downloads, e-store, eshop, digital downloads, e-commerce, wp-ecommerce, wp ecommerce, ecommerce, ebook
|
7 |
Requires at least: 4.4
|
8 |
Tested up to: 4.9.1
|
9 |
+
Stable Tag: 2.8.16
|
10 |
License: GNU Version 2 or Any Later Version
|
11 |
|
12 |
The easiest way to sell digital products with WordPress.
|
190 |
|
191 |
== Changelog ==
|
192 |
|
193 |
+
= 2.8.16, December 21, 2017 =
|
194 |
+
* Fix: Hardened EDD actions for use with WP Cron.
|
195 |
+
* Fix: Changed span elements to div elements for the schema markup.
|
196 |
+
* Dev: Added the ability to randomly generate customer data when creating payments with WP-CLI.
|
197 |
+
|
198 |
= 2.8.15, December 13, 2017 =
|
199 |
* Fix: Getting files of variable priced bundles products did not always respect variable price ID.
|
200 |
* Tweak: Added found payments to the hooks before and after the purchase history shortcode.
|