Version Description
( 23.08.2022 ) = * Tweak - The plugin will now delete carts older than 365 days to ensure performance is not affected. * Tweak - Added a email type column in email templates database table. This will not result in any frontend changes for reminder email templates. * Tweak - Added hooks to change the sender and recipient email address for order recovery notifications. * Tweak - Added a hook to allow the site admin to change the cart recovery URL in reminder emails. * Tweak - Added hooks to modify the cart table in reminder emails. * Tweak - Performance improvements have been added in the action scheduler code run every 15 mins. * Tweak - Added a hook to change the URL the user is redirected to when unsubscribing from reminder emails. * Tweak - Updated the data tracked and sent from user sites for better data analysis and user behaviour. * Fix - From email address and user name is taken from WP Settings instead of plugin when WC template style headers are enabled. * Fix - WP Multisite installation compatibility. * Fix - An extra https:// was being added to cart recovery links in reminder emails occassionaly. * Fix - A fatal error was observed on rare occassions on the plugin dashboard. * Fix - A fatal error was observed on the Product Report tab. * Fix - Orphan record were being left by the plugin in the options table on uninstalling.
Release Info
Developer | tychesoftwares |
Plugin | Abandoned Cart Lite for WooCommerce |
Version | 5.13.0 |
Comparing to | |
See all releases |
Code changes from version 5.12.0 to 5.13.0
- class-wcal-update.php +14 -1
- cron/class-wcal-cron.php +152 -149
- i18n/languages/woocommerce-abandoned-cart.pot +154 -158
- includes/class-wcal-common.php +13 -8
- includes/class-wcal-default-template-settings.php +3 -2
- includes/class-wcal-delete-handler.php +4 -1
- includes/classes/class-wcal-dashboard-report.php +2 -1
- includes/classes/class-wcal-product-report-table.php +1 -1
- includes/frontend/class-wcal-checkout-process.php +2 -1
- readme.txt +55 -106
- uninstall.php +18 -0
- woocommerce-ac.php +60 -9
@@ -44,7 +44,10 @@ if ( ! class_exists( 'Wcal_Update' ) ) {
|
|
44 |
|
45 |
$blog_list = get_sites();
|
46 |
foreach ( $blog_list as $blog_list_key => $blog_list_value ) {
|
47 |
-
|
|
|
|
|
|
|
48 |
}
|
49 |
} else { // single site.
|
50 |
add_option( 'wcal_db_version', '5.10.0' ); // This version number should not be changed. Issue #786.
|
@@ -178,6 +181,16 @@ if ( ! class_exists( 'Wcal_Update' ) ) {
|
|
178 |
$wpdb->query( "ALTER TABLE {$db_prefix}ac_abandoned_cart_history_lite ADD `session_id` varchar(50) COLLATE utf8_unicode_ci NOT NULL AFTER `unsubscribe_link`;" ); //phpcs:ignore
|
179 |
}
|
180 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
|
182 |
/**
|
183 |
* We have moved email templates fields in the setings section. SO to remove that fields column fro the db we need it.
|
44 |
|
45 |
$blog_list = get_sites();
|
46 |
foreach ( $blog_list as $blog_list_key => $blog_list_value ) {
|
47 |
+
if ( $blog_list_value->blog_id > 1 ) { // child sites.
|
48 |
+
$blog_id = $blog_list_value->blog_id;
|
49 |
+
add_blog_option( $blog_id, 'wcal_db_version', '5.10.0' ); // This version number should not be changed. Issue #786.
|
50 |
+
}
|
51 |
}
|
52 |
} else { // single site.
|
53 |
add_option( 'wcal_db_version', '5.10.0' ); // This version number should not be changed. Issue #786.
|
181 |
$wpdb->query( "ALTER TABLE {$db_prefix}ac_abandoned_cart_history_lite ADD `session_id` varchar(50) COLLATE utf8_unicode_ci NOT NULL AFTER `unsubscribe_link`;" ); //phpcs:ignore
|
182 |
}
|
183 |
}
|
184 |
+
// Create new column for email type in templates.
|
185 |
+
if ( $wpdb->get_var( "SHOW TABLES LIKE '{$db_prefix}ac_email_templates_lite';" ) ) { //phpcs:ignore
|
186 |
+
if ( ! $wpdb->get_var( "SHOW COLUMNS FROM `{$db_prefix}ac_email_templates_lite` LIKE 'email_type';" ) ) { //phpcs:ignore
|
187 |
+
$wpdb->query( "ALTER TABLE {$db_prefix}ac_email_templates_lite ADD `email_type` VARCHAR(50) NOT NULL AFTER `id`;" ); //phpcs:ignore
|
188 |
+
}
|
189 |
+
}
|
190 |
+
if ( 'yes' !== get_option( 'wcal_email_type_setup', '' ) ) {
|
191 |
+
update_option( 'wcal_email_type_setup', 'yes' );
|
192 |
+
$wpdb->query( 'UPDATE `' . $db_prefix . 'ac_email_templates_lite` SET email_type="abandoned_cart_email"' ); // phpcs:ignore
|
193 |
+
}
|
194 |
|
195 |
/**
|
196 |
* We have moved email templates fields in the setings section. SO to remove that fields column fro the db we need it.
|
@@ -170,14 +170,8 @@ if ( ! class_exists( 'Wcal_Cron' ) ) {
|
|
170 |
)
|
171 |
);
|
172 |
|
173 |
-
|
174 |
-
|
175 |
-
$wc_order_status = isset( $results_wcal_check_if_cart_is_present_in_post_meta[0]->post_status ) ? $results_wcal_check_if_cart_is_present_in_post_meta[0]->post_status : '';
|
176 |
-
if ( empty( $results_wcal_check_if_cart_is_present_in_post_meta ) ||
|
177 |
-
( isset( $results_wcal_check_if_cart_is_present_in_post_meta[0] ) &&
|
178 |
-
'wc-failed' !== $wc_order_status && 'wc-pending' !== $wc_order_status ) ) {
|
179 |
-
$wcap_check_cart_staus_need_to_update = self::wcal_update_abandoned_cart_status_for_placed_orders( $time_to_send_template_after, $cart_update_time, $value->user_id, $value->user_type, $value->id, $value->user_email );
|
180 |
-
}
|
181 |
|
182 |
if ( false === $wcal_check_cart_needed_for_multiple_template && (int) $template_id === (int) $last_template_id ) {
|
183 |
$wpdb->update( // phpcs:ignore
|
@@ -191,7 +185,7 @@ if ( ! class_exists( 'Wcal_Cron' ) ) {
|
|
191 |
);
|
192 |
}
|
193 |
|
194 |
-
if ( false === $wcal_check_cart_needed_for_multiple_template && false === $
|
195 |
|
196 |
$cart_info_db = $value->abandoned_cart_info;
|
197 |
$email_subject = $template_email_subject;
|
@@ -281,7 +275,7 @@ if ( ! class_exists( 'Wcal_Cron' ) ) {
|
|
281 |
$cart_page_id = wc_get_page_id( 'cart' );
|
282 |
$cart_page_link = $cart_page_id ? get_permalink( $cart_page_id ) : '';
|
283 |
}
|
284 |
-
|
285 |
$encoding_cart = $email_sent_id . '&url=' . $cart_page_link . $utm;
|
286 |
$validate_cart = wcal_common::wcal_encrypt_validate( $encoding_cart );
|
287 |
$cart_link_track = get_option( 'siteurl' ) . '/?wcal_action=track_links&validate=' . $validate_cart;
|
@@ -303,6 +297,8 @@ if ( ! class_exists( 'Wcal_Cron' ) ) {
|
|
303 |
$email_body = str_ireplace( '{{cart.unsubscribe}}', $unsubscribe_link_track, $email_body );
|
304 |
$var = '';
|
305 |
if ( preg_match( '{{products.cart}}', $email_body, $matched ) ) {
|
|
|
|
|
306 |
$qty_header = __( 'Quantity', 'woocommerce-abandoned-cart' );
|
307 |
$price_header = __( 'Price', 'woocommerce-abandoned-cart' );
|
308 |
$line_subtotal_header = __( 'Line Subtotal', 'woocommerce-abandoned-cart' );
|
@@ -312,8 +308,8 @@ if ( ! class_exists( 'Wcal_Cron' ) ) {
|
|
312 |
$var = '<table width = 100% style="margin-right: auto; margin-left:auto;">
|
313 |
<tr> <td colspan="5"> <h3 style="text-align:center">' . __( 'Your Shopping Cart', 'woocommerce-abandoned-cart' ) . '</h3> </td></tr>
|
314 |
<tr>
|
315 |
-
|
316 |
-
<th>' .
|
317 |
<th>' . apply_filters( 'wcal_reminder_email_qty_header', $qty_header ) . '</th>
|
318 |
<th>' . apply_filters( 'wcal_reminder_email_price_header', $price_header ) . '</th>
|
319 |
<th>' . apply_filters( 'wcal_reminder_email_line_subtotal_header', $line_subtotal_header ) . '</th>
|
@@ -323,8 +319,8 @@ if ( ! class_exists( 'Wcal_Cron' ) ) {
|
|
323 |
$var = '<table border="0" cellpadding="10" cellspacing="0" class="templateDataTable" style="margin-right: auto; margin-left:auto;">
|
324 |
<tr> <td colspan="5"> <h3 style="text-align:center">' . __( 'Your Shopping Cart', 'woocommerce-abandoned-cart' ) . '</h3> </td></tr>
|
325 |
<tr>
|
326 |
-
|
327 |
-
<th>' .
|
328 |
<th>' . apply_filters( 'wcal_reminder_email_qty_header', $qty_header ) . '</th>
|
329 |
<th>' . apply_filters( 'wcal_reminder_email_price_header', $price_header ) . '</th>
|
330 |
<th>' . apply_filters( 'wcal_reminder_email_line_subtotal_header', $line_subtotal_header ) . '</th>
|
@@ -406,11 +402,12 @@ if ( ! class_exists( 'Wcal_Cron' ) ) {
|
|
406 |
}
|
407 |
$product_name = $product_name_with_variable;
|
408 |
}
|
409 |
-
|
|
|
410 |
$product_name = apply_filters( 'wcal_reminder_email_after_product_name', $product_name, $v );
|
411 |
$var .= '<tr align="center">
|
412 |
-
|
413 |
-
|
414 |
<td> ' . apply_filters( 'wcal_reminder_email_qty_value', $quantity_total ) . '</td>
|
415 |
<td> ' . apply_filters( 'wcal_reminder_email_price_value', $item_subtotal ) . '</td>
|
416 |
<td> ' . apply_filters( 'wcal_reminder_email_line_subtotal_value', $item_total_display ) . '</td>
|
@@ -576,177 +573,183 @@ if ( ! class_exists( 'Wcal_Cron' ) ) {
|
|
576 |
* @return boolean true | false
|
577 |
* @since 4.3
|
578 |
*/
|
579 |
-
public static function
|
580 |
global $wpdb;
|
581 |
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
586 |
}
|
587 |
-
}
|
588 |
-
|
589 |
-
|
590 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
591 |
}
|
592 |
}
|
593 |
-
return
|
594 |
}
|
595 |
|
596 |
/**
|
597 |
* It will update the Guest users abandoned cart staus if the order has been placed before sending the reminder emails.
|
598 |
*
|
599 |
-
* @param string|int $cart_id Abandoned cart id.
|
600 |
-
* @param string|timestamp $abandoned_cart_time Abandoned time.
|
601 |
* @param string|timestamp $time_to_send_template_after Template time.
|
602 |
-
* @param string
|
|
|
|
|
|
|
|
|
|
|
603 |
* @globals mixed $wpdb
|
604 |
* @return int 0|1
|
605 |
* @since 4.3
|
606 |
*/
|
607 |
-
public static function
|
608 |
-
global $wpdb;
|
609 |
-
|
610 |
-
$results_query_email = $wpdb->get_results( // phpcs:ignore
|
611 |
-
$wpdb->prepare(
|
612 |
-
'SELECT wpm.post_id, wpost.post_date, wpost.post_status FROM `' . $wpdb->prefix . 'postmeta` AS wpm LEFT JOIN `' . $wpdb->prefix . 'posts` AS wpost ON wpm.post_id = wpost.ID
|
613 |
-
WHERE wpm.meta_key = %s AND wpm.meta_value = %s AND wpm.post_id = wpost.ID AND wpost.post_type = %s Order BY wpm.post_id DESC LIMIT 1',
|
614 |
-
'_billing_email',
|
615 |
-
$wcal_user_email_address,
|
616 |
-
'shop_order'
|
617 |
-
)
|
618 |
-
);
|
619 |
-
|
620 |
-
// This will check that For abc@abc.com email address we have order for todays date in WC post table.
|
621 |
-
if ( count( $results_query_email ) > 0 ) {
|
622 |
-
|
623 |
-
$current_time = current_time( 'timestamp' ); // phpcs:ignore
|
624 |
-
$todays_date = date( 'Y-m-d', $current_time ); // phpcs:ignore
|
625 |
-
|
626 |
-
$order_date_with_time = $results_query_email[0]->post_date;
|
627 |
-
$order_date = substr( $order_date_with_time, 0, 10 );
|
628 |
-
|
629 |
-
if ( ( 'wc-pending' === $results_query_email[0]->post_status || 'wc-failed' === $results_query_email[0]->post_status ) && strtotime( $order_date_with_time ) > $abandoned_cart_time ) {
|
630 |
-
// If the post status are pending or failed the send them for abandoned cart reminder emails.
|
631 |
-
return 0;
|
632 |
-
} elseif ( strtotime( $order_date_with_time ) > $abandoned_cart_time ) {
|
633 |
-
|
634 |
-
// In some cases the cart is recovered but it is not marked as the recovered. So here we check if any record is found for that cart id if yes then update the record respectively.
|
635 |
-
$wcal_check_email_sent_to_cart = self::wcal_get_cart_sent_data( $cart_id );
|
636 |
-
|
637 |
-
if ( 0 !== $wcal_check_email_sent_to_cart ) {
|
638 |
-
|
639 |
-
$wcal_results = $wpdb->get_results( // phpcs:ignore
|
640 |
-
$wpdb->prepare(
|
641 |
-
'SELECT `post_id` FROM `' . $wpdb->prefix . 'postmeta` WHERE meta_value = %s',
|
642 |
-
$cart_id
|
643 |
-
)
|
644 |
-
);
|
645 |
-
|
646 |
-
if ( count( $wcal_results ) > 0 ) {
|
647 |
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
$wpdb->query( // phpcs:ignore
|
653 |
-
$wpdb->prepare(
|
654 |
-
"UPDATE `" . $wpdb->prefix . "ac_abandoned_cart_history_lite` SET recovered_cart= %s, cart_ignored = '1' WHERE id = %s", // phpcs:ignore
|
655 |
-
$order_id,
|
656 |
-
$cart_id
|
657 |
-
)
|
658 |
-
);
|
659 |
-
|
660 |
-
$order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
|
661 |
-
|
662 |
-
delete_post_meta( $order_id, 'wcal_recover_order_placed', $cart_id );
|
663 |
-
delete_post_meta( $order_id, 'wcal_recover_order_placed_sent_id', $wcal_check_email_sent_to_cart );
|
664 |
-
}
|
665 |
-
} else {
|
666 |
-
$wpdb->query( // phpcs:ignore
|
667 |
-
$wpdb->prepare(
|
668 |
-
"UPDATE `" . $wpdb->prefix . "ac_abandoned_cart_history_lite` SET cart_ignored = '1' WHERE id = %s", // phpcs:ignore
|
669 |
-
$cart_id
|
670 |
-
)
|
671 |
-
);
|
672 |
-
}
|
673 |
-
return 1;
|
674 |
-
}
|
675 |
}
|
676 |
-
|
|
|
677 |
}
|
678 |
|
679 |
/**
|
680 |
-
* It will update the
|
681 |
*
|
682 |
* @param string|int $cart_id Abandoned cart id.
|
683 |
-
* @param string|timestamp $
|
684 |
* @param string|timestamp $time_to_send_template_after Template time.
|
685 |
-
* @param string $
|
|
|
686 |
* @globals mixed $wpdb
|
687 |
* @return int 0|1
|
688 |
* @since 4.3
|
689 |
*/
|
690 |
-
public static function
|
691 |
global $wpdb;
|
692 |
|
693 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
694 |
$wpdb->prepare(
|
695 |
-
|
696 |
-
$
|
697 |
)
|
698 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
699 |
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
);
|
718 |
-
|
719 |
-
if ( count( $wcal_results ) > 0 ) {
|
720 |
-
|
721 |
-
$order_id = $wcal_results[0]->post_id;
|
722 |
-
|
723 |
-
$order = wc_get_order( $order_id );
|
724 |
-
|
725 |
-
$wpdb->query( // phpcs:ignore
|
726 |
-
"UPDATE `" . $wpdb->prefix . "ac_abandoned_cart_history_lite` SET recovered_cart= '" . $order_id . "', cart_ignored = '1' WHERE id = '" . $cart_id . "'" // phpcs:ignore
|
727 |
-
);
|
728 |
-
|
729 |
-
$order->add_order_note( __( 'This order was abandoned & subsequently recovered.', 'woocommerce-abandoned-cart' ) );
|
730 |
-
|
731 |
-
delete_post_meta( $order_id, 'wcal_recover_order_placed', $cart_id );
|
732 |
-
delete_post_meta( $order_id, 'wcal_recover_order_placed_sent_id', $wcal_check_email_sent_to_cart );
|
733 |
}
|
734 |
-
} else {
|
735 |
-
$wpdb->
|
736 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
737 |
);
|
738 |
}
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
743 |
);
|
744 |
-
return 1; // We return here 1 so it indicate that the cart has been modifed so do not sent email and delete from the array.
|
745 |
-
} elseif ( 'wc-pending' === $results_query_email[0]->post_status || 'wc-failed' === $results_query_email[0]->post_status ) {
|
746 |
-
return 0; // if status of the order is pending or falied then return 0 so it will not delete that cart and send reminder email.
|
747 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
748 |
}
|
749 |
-
return 0;
|
750 |
}
|
751 |
|
752 |
/**
|
170 |
)
|
171 |
);
|
172 |
|
173 |
+
// Check if any further orders have come from the user. If yes and the order status is Pending or Failed, email will be sent.
|
174 |
+
$wcal_check_cart_status = self::wcal_get_cart_status( $time_to_send_template_after, $cart_update_time, $value->user_id, $value->user_type, $value->id, $value->user_email );
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
|
176 |
if ( false === $wcal_check_cart_needed_for_multiple_template && (int) $template_id === (int) $last_template_id ) {
|
177 |
$wpdb->update( // phpcs:ignore
|
185 |
);
|
186 |
}
|
187 |
|
188 |
+
if ( false === $wcal_check_cart_needed_for_multiple_template && false === $wcal_check_cart_status ) {
|
189 |
|
190 |
$cart_info_db = $value->abandoned_cart_info;
|
191 |
$email_subject = $template_email_subject;
|
275 |
$cart_page_id = wc_get_page_id( 'cart' );
|
276 |
$cart_page_link = $cart_page_id ? get_permalink( $cart_page_id ) : '';
|
277 |
}
|
278 |
+
$cart_page_link = apply_filters( 'wcal_cart_link_email_before_encoding', $cart_page_link, $value->id );
|
279 |
$encoding_cart = $email_sent_id . '&url=' . $cart_page_link . $utm;
|
280 |
$validate_cart = wcal_common::wcal_encrypt_validate( $encoding_cart );
|
281 |
$cart_link_track = get_option( 'siteurl' ) . '/?wcal_action=track_links&validate=' . $validate_cart;
|
297 |
$email_body = str_ireplace( '{{cart.unsubscribe}}', $unsubscribe_link_track, $email_body );
|
298 |
$var = '';
|
299 |
if ( preg_match( '{{products.cart}}', $email_body, $matched ) ) {
|
300 |
+
$img_header = __( 'Item', 'woocommerce-abandoned-cart' );
|
301 |
+
$product_name_header = __( 'Name', 'woocommerce-abandoned-cart' );
|
302 |
$qty_header = __( 'Quantity', 'woocommerce-abandoned-cart' );
|
303 |
$price_header = __( 'Price', 'woocommerce-abandoned-cart' );
|
304 |
$line_subtotal_header = __( 'Line Subtotal', 'woocommerce-abandoned-cart' );
|
308 |
$var = '<table width = 100% style="margin-right: auto; margin-left:auto;">
|
309 |
<tr> <td colspan="5"> <h3 style="text-align:center">' . __( 'Your Shopping Cart', 'woocommerce-abandoned-cart' ) . '</h3> </td></tr>
|
310 |
<tr>
|
311 |
+
<th>' . apply_filters( 'wcal_reminder_email_img_header', $img_header ) . '</th>
|
312 |
+
<th>' . apply_filters( 'wcal_reminder_email_product_header', $product_name_header ) . '</th>
|
313 |
<th>' . apply_filters( 'wcal_reminder_email_qty_header', $qty_header ) . '</th>
|
314 |
<th>' . apply_filters( 'wcal_reminder_email_price_header', $price_header ) . '</th>
|
315 |
<th>' . apply_filters( 'wcal_reminder_email_line_subtotal_header', $line_subtotal_header ) . '</th>
|
319 |
$var = '<table border="0" cellpadding="10" cellspacing="0" class="templateDataTable" style="margin-right: auto; margin-left:auto;">
|
320 |
<tr> <td colspan="5"> <h3 style="text-align:center">' . __( 'Your Shopping Cart', 'woocommerce-abandoned-cart' ) . '</h3> </td></tr>
|
321 |
<tr>
|
322 |
+
<th>' . apply_filters( 'wcal_reminder_email_img_header', $img_header ) . '</th>
|
323 |
+
<th>' . apply_filters( 'wcal_reminder_email_product_header', $product_name_header ) . '</th>
|
324 |
<th>' . apply_filters( 'wcal_reminder_email_qty_header', $qty_header ) . '</th>
|
325 |
<th>' . apply_filters( 'wcal_reminder_email_price_header', $price_header ) . '</th>
|
326 |
<th>' . apply_filters( 'wcal_reminder_email_line_subtotal_header', $line_subtotal_header ) . '</th>
|
402 |
}
|
403 |
$product_name = $product_name_with_variable;
|
404 |
}
|
405 |
+
$image_col = '<a href="' . $cart_link_track . '"> <img src="' . $image_url . '" alt="" height="42" width="42" /> </a>';
|
406 |
+
$prod_col = '<a href="' . $cart_link_track . '">' . $product_name . '</a>';
|
407 |
$product_name = apply_filters( 'wcal_reminder_email_after_product_name', $product_name, $v );
|
408 |
$var .= '<tr align="center">
|
409 |
+
<td> ' . apply_filters( 'wcal_reminder_email_image_value', $image_col ) . '</td>
|
410 |
+
<td> ' . apply_filters( 'wcal_reminder_email_prod_value', $prod_col ) . '</td>
|
411 |
<td> ' . apply_filters( 'wcal_reminder_email_qty_value', $quantity_total ) . '</td>
|
412 |
<td> ' . apply_filters( 'wcal_reminder_email_price_value', $item_subtotal ) . '</td>
|
413 |
<td> ' . apply_filters( 'wcal_reminder_email_line_subtotal_value', $item_total_display ) . '</td>
|
573 |
* @return boolean true | false
|
574 |
* @since 4.3
|
575 |
*/
|
576 |
+
public static function wcal_get_cart_status( $time_to_send_template_after, $wcal_cart_time, $wcal_user_id, $wcal_user_type, $wcal_cart_id, $wcal_user_email ) {
|
577 |
global $wpdb;
|
578 |
|
579 |
+
$order_id = 0;
|
580 |
+
$wcal_cart_status = false;
|
581 |
+
|
582 |
+
$results_wcal_check_if_cart_is_present_in_post_meta = $wpdb->get_var( // phpcS:ignore
|
583 |
+
$wpdb->prepare(
|
584 |
+
"SELECT post_id FROM `" . $wpdb->prefix . "postmeta` WHERE meta_key = 'wcal_abandoned_cart_id' AND meta_value = %d LIMIT 1", // phpcs:ignore
|
585 |
+
$wcal_cart_id
|
586 |
+
)
|
587 |
+
);
|
588 |
+
|
589 |
+
if ( is_array( $results_wcal_check_if_cart_is_present_in_post_meta ) && $results_wcal_check_if_cart_is_present_in_post_meta > 0 ) {
|
590 |
+
$order_id = $results_wcal_check_if_cart_is_present_in_post_meta;
|
591 |
+
$order = wc_get_order( $order_id );
|
592 |
+
} else { // check for an order for the same date & email address.
|
593 |
+
$args = array(
|
594 |
+
'customer' => $wcal_user_email,
|
595 |
+
'limit' => 1,
|
596 |
+
);
|
597 |
+
$order_obj = wc_get_orders( $args );
|
598 |
+
if ( ! empty( $order_obj ) ) {
|
599 |
+
$order = $order_obj[0];
|
600 |
}
|
601 |
+
}
|
602 |
+
if ( isset( $order ) && is_object( $order ) ) {
|
603 |
+
|
604 |
+
$order_data = $order->get_data();
|
605 |
+
|
606 |
+
$order_status = $order_data['status'];
|
607 |
+
$order_id = $order_data['id'];
|
608 |
+
if ( 'cancelled' !== $order_status && 'failed' !== $order_status && 'pending' !== $order_status ) {
|
609 |
+
|
610 |
+
$order_date = $order_data['date_created']->date( 'Y-m-d' );
|
611 |
+
$order_date_time = $order_data['date_created']->date( 'Y-m-d H:i:s' );
|
612 |
+
|
613 |
+
$order_details = array(
|
614 |
+
'id' => $order_id,
|
615 |
+
'status' => $order_status,
|
616 |
+
'date_created' => $order_date,
|
617 |
+
'date_time_created' => $order_date_time,
|
618 |
+
);
|
619 |
+
|
620 |
+
$wcal_cart_status = self::wcal_update_abandoned_cart_status_for_placed_orders( $time_to_send_template_after, $wcal_cart_time, $wcal_user_id, $wcal_user_type, $wcal_cart_id, $wcal_user_email, $order_details );
|
621 |
}
|
622 |
}
|
623 |
+
return $wcal_cart_status;
|
624 |
}
|
625 |
|
626 |
/**
|
627 |
* It will update the Guest users abandoned cart staus if the order has been placed before sending the reminder emails.
|
628 |
*
|
|
|
|
|
629 |
* @param string|timestamp $time_to_send_template_after Template time.
|
630 |
+
* @param string|timestamp $wcal_cart_time Cart cutoff time.
|
631 |
+
* @param string|int $wcal_user_id User ID.
|
632 |
+
* @param string $wcal_user_type - User Type.
|
633 |
+
* @param string|int $wcal_cart_id Abandoned cart id.
|
634 |
+
* @param string $wcal_user_email - User email.
|
635 |
+
* @param array $order_details - WC Order Details.
|
636 |
* @globals mixed $wpdb
|
637 |
* @return int 0|1
|
638 |
* @since 4.3
|
639 |
*/
|
640 |
+
public static function wcal_update_abandoned_cart_status_for_placed_orders( $time_to_send_template_after, $wcal_cart_time, $wcal_user_id, $wcal_user_type, $wcal_cart_id, $wcal_user_email, $order_details ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
641 |
|
642 |
+
$updated_value = self::wcal_update_cart_status( $wcal_cart_id, $wcal_cart_time, $time_to_send_template_after, $wcal_user_email, $order_details );
|
643 |
+
if ( 1 === $updated_value ) {
|
644 |
+
return true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
645 |
}
|
646 |
+
|
647 |
+
return false;
|
648 |
}
|
649 |
|
650 |
/**
|
651 |
+
* It will update the Guest users abandoned cart staus if the order has been placed before sending the reminder emails.
|
652 |
*
|
653 |
* @param string|int $cart_id Abandoned cart id.
|
654 |
+
* @param string|timestamp $wcal_cart_time Abandoned time.
|
655 |
* @param string|timestamp $time_to_send_template_after Template time.
|
656 |
+
* @param string $wcal_user_email User Email.
|
657 |
+
* @param array $order_details - Order Details.
|
658 |
* @globals mixed $wpdb
|
659 |
* @return int 0|1
|
660 |
* @since 4.3
|
661 |
*/
|
662 |
+
public static function wcal_update_cart_status( $cart_id, $wcal_cart_time, $time_to_send_template_after, $wcal_user_email, $order_details ) {
|
663 |
global $wpdb;
|
664 |
|
665 |
+
$current_time = current_time( 'timestamp' ); // phpcs:ignore
|
666 |
+
$todays_date = date( 'Y-m-d', $current_time ); // phpcs:ignore
|
667 |
+
$order_date = $order_details['date_created'];
|
668 |
+
$order_date_time = $order_details['date_time_created'];
|
669 |
+
$order_status = $order_details['status'];
|
670 |
+
|
671 |
+
$order_date_str = strtotime( $order_date );
|
672 |
+
|
673 |
+
// Retreive the cart status.
|
674 |
+
$cart_ignored_status = $wpdb->get_col( // phpcs:ignore
|
675 |
$wpdb->prepare(
|
676 |
+
'SELECT cart_ignored FROM `' . $wpdb->prefix . 'ac_abandoned_cart_history_lite` WHERE id = %d', // phpcs:ignore
|
677 |
+
$cart_id
|
678 |
)
|
679 |
);
|
680 |
+
if ( $order_date_str > $current_time ) {
|
681 |
+
// In some case the cart is recovered but it is not marked as the recovered. So here we check if any record is found for that cart id if yes then update the record respectively.
|
682 |
+
$wcal_check_email_sent_to_cart = self::wcal_get_cart_sent_data( $cart_id );
|
683 |
+
|
684 |
+
if ( 0 !== $wcal_check_email_sent_to_cart && ! in_array( $order_status, array( 'wc-pending', 'wc-failed' ), true ) ) {
|
685 |
+
|
686 |
+
$wcal_results = $wpdb->get_results( // phpcs:ignore
|
687 |
+
$wpdb->prepare(
|
688 |
+
'SELECT `post_id` FROM `' . $wpdb->prefix . 'postmeta` WHERE meta_value = %s AND meta_key = %s ',
|
689 |
+
$cart_id,
|
690 |
+
'wcal_recover_order_placed'
|
691 |
+
)
|
692 |
+
);
|
693 |
|
694 |
+
if ( count( $wcal_results ) > 0 ) {
|
695 |
+
|
696 |
+
$order_id = $wcal_results[0]->post_id;
|
697 |
+
try {
|
698 |
+
if ( 'wc-cancelled' !== $order_status && 'wc-refunded' !== $order_status && 'wc-trash' !== $order_status ) {
|
699 |
+
$wpdb->update( // phpcs:ignore
|
700 |
+
$wpdb->prefix . 'ac_abandoned_cart_history_lite',
|
701 |
+
array(
|
702 |
+
'cart_ignored' => '1',
|
703 |
+
'recovered_cart' => $order_id,
|
704 |
+
),
|
705 |
+
array(
|
706 |
+
'id' => $cart_id,
|
707 |
+
)
|
708 |
+
);
|
709 |
+
}
|
710 |
+
} catch ( Exception $e ) { // phpcs:ignore
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
711 |
}
|
712 |
+
} else { // Since there's an order placed today for the same user, mark this cart as ignored.
|
713 |
+
$wpdb->update( // phpcs:ignore
|
714 |
+
$wpdb->prefix . 'ac_abandoned_cart_history_lite',
|
715 |
+
array(
|
716 |
+
'cart_ignored' => '1',
|
717 |
+
),
|
718 |
+
array(
|
719 |
+
'id' => $cart_id,
|
720 |
+
)
|
721 |
);
|
722 |
}
|
723 |
+
} elseif ( in_array( $order_status, array( 'wc-pending', 'wc-failed' ), true ) ) {
|
724 |
+
return 0; // Return 0 as we want to send reminders for unpaid order status.
|
725 |
+
} elseif ( '1' !== $cart_ignored_status[0] ) {
|
726 |
+
$wpdb->update( // phpcs:ignore
|
727 |
+
$wpdb->prefix . 'ac_abandoned_cart_history_lite',
|
728 |
+
array(
|
729 |
+
'cart_ignored' => '1',
|
730 |
+
),
|
731 |
+
array(
|
732 |
+
'id' => $cart_id,
|
733 |
+
)
|
734 |
);
|
|
|
|
|
|
|
735 |
}
|
736 |
+
return 1;
|
737 |
+
} elseif ( strtotime( $order_date_time ) > $wcal_cart_time ) {
|
738 |
+
// Mark the cart as ignored.
|
739 |
+
$wpdb->update( // phpcs:ignore
|
740 |
+
$wpdb->prefix . 'ac_abandoned_cart_history_lite',
|
741 |
+
array(
|
742 |
+
'cart_ignored' => '1',
|
743 |
+
),
|
744 |
+
array(
|
745 |
+
'id' => $cart_id,
|
746 |
+
)
|
747 |
+
);
|
748 |
+
return 1;
|
749 |
+
} elseif ( 'wc-pending' === $order_status || 'wc-failed' === $order_status ) { // Send the reminders.
|
750 |
+
return 0;
|
751 |
}
|
752 |
+
return 0;
|
753 |
}
|
754 |
|
755 |
/**
|
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the Abandoned Cart Lite for WooCommerce plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Abandoned Cart Lite for WooCommerce 5.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-abandoned-cart\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: woocommerce-abandoned-cart\n"
|
@@ -38,70 +38,62 @@ msgstr ""
|
|
38 |
msgid "Abandoned cart reminder"
|
39 |
msgstr ""
|
40 |
|
41 |
-
#: cron/class-wcal-cron.php:
|
42 |
-
#: woocommerce-ac.php:
|
43 |
-
#: woocommerce-ac.php:
|
44 |
-
#: woocommerce-ac.php:
|
45 |
-
msgid "
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: cron/class-wcal-cron.php:
|
49 |
-
#: woocommerce-ac.php:
|
50 |
-
#: woocommerce-ac.php:
|
51 |
-
|
|
|
52 |
msgstr ""
|
53 |
|
54 |
-
#: cron/class-wcal-cron.php:
|
55 |
-
#: woocommerce-ac.php:
|
56 |
-
#: woocommerce-ac.php:
|
57 |
-
#: woocommerce-ac.php:
|
58 |
-
msgid "
|
59 |
msgstr ""
|
60 |
|
61 |
-
#: cron/class-wcal-cron.php:
|
62 |
-
#:
|
63 |
-
#: woocommerce-ac.php:
|
64 |
-
|
65 |
-
msgid "Your Shopping Cart"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: cron/class-wcal-cron.php:
|
69 |
-
#:
|
70 |
-
#: woocommerce-ac.php:
|
71 |
-
#: woocommerce-ac.php:
|
72 |
-
|
73 |
-
msgid "Item"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: cron/class-wcal-cron.php:
|
77 |
-
#: cron/class-wcal-cron.php:
|
78 |
-
#: woocommerce-ac.php:
|
79 |
-
#: woocommerce-ac.php:
|
80 |
-
|
81 |
-
msgid "Name"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: cron/class-wcal-cron.php:
|
85 |
-
#: cron/class-wcal-cron.php:
|
86 |
msgid "SKU: "
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: cron/class-wcal-cron.php:
|
90 |
-
#: woocommerce-ac.php:
|
91 |
-
#: woocommerce-ac.php:
|
92 |
msgid "Cart Total:"
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: cron/class-wcal-cron.php:
|
96 |
msgid "Product no longer exists"
|
97 |
msgstr ""
|
98 |
|
99 |
-
#: cron/class-wcal-cron.php:660
|
100 |
-
#: cron/class-wcal-cron.php:729
|
101 |
-
#: includes/frontend/class-wcal-checkout-process.php:220
|
102 |
-
msgid "This order was abandoned & subsequently recovered."
|
103 |
-
msgstr ""
|
104 |
-
|
105 |
#. translators: Cart ID.
|
106 |
#: includes/admin/class-wcal-abandoned-cart-details.php:437
|
107 |
msgid "Cart #%s"
|
@@ -131,7 +123,7 @@ msgid "ANONYMIZED"
|
|
131 |
msgstr ""
|
132 |
|
133 |
#: includes/admin/class-wcal-personal-data-export.php:137
|
134 |
-
#: woocommerce-ac.php:
|
135 |
msgid "Abandoned Carts"
|
136 |
msgstr ""
|
137 |
|
@@ -198,7 +190,7 @@ msgstr ""
|
|
198 |
#: includes/admin/class-wcap-add-cart-popup-modal.php:84
|
199 |
#: includes/admin/class-wcap-pro-settings.php:66
|
200 |
#: includes/admin/class-wcap-pro-settings.php:299
|
201 |
-
#: woocommerce-ac.php:
|
202 |
msgid "Save Changes"
|
203 |
msgstr ""
|
204 |
|
@@ -708,15 +700,15 @@ msgid ""
|
|
708 |
" <strong><a target=\"_blank\" href= \"%s\">Purchase now</a></strong> & Grab 20% discount with the code \"DFWP20\". The discount code is valid only for the first 20 customers."
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: includes/class-wcal-common.php:
|
712 |
msgid "Database Updated Successfully"
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: includes/class-wcal-common.php:
|
716 |
msgid "Database Update Failed. Please try again after sometime"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/class-wcal-common.php:
|
720 |
msgid "This product no longer exists"
|
721 |
msgstr ""
|
722 |
|
@@ -822,7 +814,7 @@ msgid "<strong>%s%%</strong> of Total Revenue"
|
|
822 |
msgstr ""
|
823 |
|
824 |
#: includes/classes/class-wcal-dashboard-report.php:161
|
825 |
-
#: woocommerce-ac.php:
|
826 |
msgid "Abandoned Orders"
|
827 |
msgstr ""
|
828 |
|
@@ -887,7 +879,7 @@ msgid "Select date range:"
|
|
887 |
msgstr ""
|
888 |
|
889 |
#: includes/classes/class-wcal-dashboard-report.php:319
|
890 |
-
#: woocommerce-ac.php:
|
891 |
msgid "Go"
|
892 |
msgstr ""
|
893 |
|
@@ -971,6 +963,10 @@ msgstr ""
|
|
971 |
msgid "off"
|
972 |
msgstr ""
|
973 |
|
|
|
|
|
|
|
|
|
974 |
#: includes/templates/rules/html-rules-engine.php:106
|
975 |
msgid "Add rules as needed to create different email templates for different user bases. "
|
976 |
msgstr ""
|
@@ -1028,415 +1024,415 @@ msgstr ""
|
|
1028 |
msgid "Search & select one coupon code that customers should use to get a discount. Generated coupon code which will be sent in email reminder will have the settings of coupon selected in this option."
|
1029 |
msgstr ""
|
1030 |
|
1031 |
-
#: woocommerce-ac.php:
|
1032 |
-
#: woocommerce-ac.php:
|
1033 |
msgid "Settings"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: woocommerce-ac.php:
|
1037 |
msgid "Emails are not being sent to customers."
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: woocommerce-ac.php:
|
1041 |
msgid "Capturing of cart and other information was not satisfactory."
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#: woocommerce-ac.php:
|
1045 |
msgid "I cannot see abandoned cart reminder emails records."
|
1046 |
msgstr ""
|
1047 |
|
1048 |
-
#: woocommerce-ac.php:
|
1049 |
msgid "I want to upgrade the plugin to the PRO version."
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: woocommerce-ac.php:
|
1053 |
msgid "HTML Email Template"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
-
#: woocommerce-ac.php:
|
1057 |
msgid "Abandoned cart Email Template"
|
1058 |
msgstr ""
|
1059 |
|
1060 |
-
#: woocommerce-ac.php:
|
1061 |
msgid "Cart Abandonment Settings"
|
1062 |
msgstr ""
|
1063 |
|
1064 |
-
#: woocommerce-ac.php:
|
1065 |
msgid "Enable abandoned cart emails"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
-
#: woocommerce-ac.php:
|
1069 |
msgid "Yes, enable the abandoned cart emails."
|
1070 |
msgstr ""
|
1071 |
|
1072 |
-
#: woocommerce-ac.php:
|
1073 |
msgid "Cart abandoned cut-off time"
|
1074 |
msgstr ""
|
1075 |
|
1076 |
-
#: woocommerce-ac.php:
|
1077 |
msgid "Consider cart abandoned after X minutes of item being added to cart & order not placed."
|
1078 |
msgstr ""
|
1079 |
|
1080 |
-
#: woocommerce-ac.php:
|
1081 |
msgid "Automatically Delete Abandoned Orders after X days"
|
1082 |
msgstr ""
|
1083 |
|
1084 |
-
#: woocommerce-ac.php:
|
1085 |
msgid "Automatically delete abandoned cart orders after X days."
|
1086 |
msgstr ""
|
1087 |
|
1088 |
-
#: woocommerce-ac.php:
|
1089 |
msgid "Email admin On Order Recovery"
|
1090 |
msgstr ""
|
1091 |
|
1092 |
-
#: woocommerce-ac.php:
|
1093 |
msgid "Sends email to Admin if an Abandoned Cart Order is recovered."
|
1094 |
msgstr ""
|
1095 |
|
1096 |
-
#: woocommerce-ac.php:
|
1097 |
msgid "Start tracking from Cart Page"
|
1098 |
msgstr ""
|
1099 |
|
1100 |
-
#: woocommerce-ac.php:
|
1101 |
msgid "Enable tracking of abandoned products & carts even if customer does not visit the checkout page or does not enter any details on the checkout page like Name or Email. Tracking will begin as soon as a visitor adds a product to their cart and visits the cart page."
|
1102 |
msgstr ""
|
1103 |
|
1104 |
-
#: woocommerce-ac.php:
|
1105 |
msgid "GDPR Settings"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
-
#: woocommerce-ac.php:
|
1109 |
msgid "Enable GDPR Notice"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
-
#: woocommerce-ac.php:
|
1113 |
msgid "Enable this setting to display a notice informing customers that their email and cart data are saved to send abandonment reminders."
|
1114 |
msgstr ""
|
1115 |
|
1116 |
-
#: woocommerce-ac.php:
|
1117 |
msgid "Message to be displayed for Guest users when tracking their carts"
|
1118 |
msgstr ""
|
1119 |
|
1120 |
-
#: woocommerce-ac.php:
|
1121 |
msgid "<br>In compliance with GDPR, add a message on the Checkout page to inform Guest users of how their data is being used.<br><i>For example: Your email address will help us support your shopping experience throughout the site. Please check our Privacy Policy to see how we use your personal data.</i>"
|
1122 |
msgstr ""
|
1123 |
|
1124 |
-
#: woocommerce-ac.php:
|
1125 |
msgid "Message to be displayed for registered users when tracking their carts."
|
1126 |
msgstr ""
|
1127 |
|
1128 |
-
#: woocommerce-ac.php:
|
1129 |
msgid "<br>In compliance with GDPR, add a message on the Shop & Product pages to inform Registered users of how their data is being used.<br><i>For example: Please check our Privacy Policy to see how we use your personal data.</i>"
|
1130 |
msgstr ""
|
1131 |
|
1132 |
-
#: woocommerce-ac.php:
|
1133 |
msgid "Allow the visitor to opt out of cart tracking."
|
1134 |
msgstr ""
|
1135 |
|
1136 |
-
#: woocommerce-ac.php:
|
1137 |
msgid "<br>In compliance with GDPR, allow the site visitor (guests & registered users) to opt out from cart tracking. This message will be displayed in conjunction with the GDPR message above.</i>"
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
#: woocommerce-ac.php:
|
1141 |
msgid "Message to be displayed when the user chooses to opt out of cart tracking."
|
1142 |
msgstr ""
|
1143 |
|
1144 |
-
#: woocommerce-ac.php:
|
1145 |
msgid "<br>Message to be displayed when the user chooses to opt out of cart tracking.</i>"
|
1146 |
msgstr ""
|
1147 |
|
1148 |
-
#: woocommerce-ac.php:
|
1149 |
msgid "Coupon Settings"
|
1150 |
msgstr ""
|
1151 |
|
1152 |
-
#: woocommerce-ac.php:
|
1153 |
msgid "Delete Coupons Automatically"
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: woocommerce-ac.php:
|
1157 |
msgid "Enable this setting if you want to completely remove the expired and used coupon code automatically every 15 days."
|
1158 |
msgstr ""
|
1159 |
|
1160 |
-
#: woocommerce-ac.php:
|
1161 |
msgid "Delete Coupons Manually"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#: woocommerce-ac.php:
|
1165 |
msgid "If you want to completely remove the expired and used coupon code now then click on \"Delete\" button."
|
1166 |
msgstr ""
|
1167 |
|
1168 |
-
#: woocommerce-ac.php:
|
1169 |
msgid "Settings for abandoned cart recovery emails"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
-
#: woocommerce-ac.php:
|
1173 |
msgid "\"From\" Name"
|
1174 |
msgstr ""
|
1175 |
|
1176 |
-
#: woocommerce-ac.php:
|
1177 |
msgid "\"From\" Address"
|
1178 |
msgstr ""
|
1179 |
|
1180 |
-
#: woocommerce-ac.php:
|
1181 |
msgid "Send Reply Emails to"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
-
#: woocommerce-ac.php:
|
1185 |
msgid "UTM parameters to be added to all the links in reminder emails"
|
1186 |
msgstr ""
|
1187 |
|
1188 |
-
#: woocommerce-ac.php:
|
1189 |
msgid "UTM parameters that should be added to all the links in reminder emails."
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: woocommerce-ac.php:
|
1193 |
msgid "Abandoned cart cut off time should be numeric and has to be greater than 0."
|
1194 |
msgstr ""
|
1195 |
|
1196 |
-
#: woocommerce-ac.php:
|
1197 |
msgid "Automatically Delete Abandoned Orders after X days has to be greater than 0."
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#: woocommerce-ac.php:
|
1201 |
msgid "Dashboard"
|
1202 |
msgstr ""
|
1203 |
|
1204 |
-
#: woocommerce-ac.php:
|
1205 |
msgid "Email Templates"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
-
#: woocommerce-ac.php:
|
1209 |
msgid "Recovered Orders"
|
1210 |
msgstr ""
|
1211 |
|
1212 |
-
#: woocommerce-ac.php:
|
1213 |
msgid "Product Report"
|
1214 |
msgstr ""
|
1215 |
|
1216 |
-
#: woocommerce-ac.php:
|
1217 |
msgid "You do not have sufficient permissions to access this page."
|
1218 |
msgstr ""
|
1219 |
|
1220 |
-
#: woocommerce-ac.php:
|
1221 |
msgid "WooCommerce - Abandon Cart Lite"
|
1222 |
msgstr ""
|
1223 |
|
1224 |
-
#: woocommerce-ac.php:
|
1225 |
msgid "The Abandoned cart has been successfully deleted."
|
1226 |
msgstr ""
|
1227 |
|
1228 |
-
#: woocommerce-ac.php:
|
1229 |
msgid "All Abandoned Carts have been successfully deleted."
|
1230 |
msgstr ""
|
1231 |
|
1232 |
-
#: woocommerce-ac.php:
|
1233 |
msgid "All Visitor carts have been successfully deleted."
|
1234 |
msgstr ""
|
1235 |
|
1236 |
-
#: woocommerce-ac.php:
|
1237 |
msgid "All Guest carts have been successfully deleted."
|
1238 |
msgstr ""
|
1239 |
|
1240 |
-
#: woocommerce-ac.php:
|
1241 |
msgid "All Registered carts have been deleted."
|
1242 |
msgstr ""
|
1243 |
|
1244 |
-
#: woocommerce-ac.php:
|
1245 |
msgid "The Template has been successfully deleted."
|
1246 |
msgstr ""
|
1247 |
|
1248 |
-
#: woocommerce-ac.php:
|
1249 |
msgid "General Settings"
|
1250 |
msgstr ""
|
1251 |
|
1252 |
-
#: woocommerce-ac.php:
|
1253 |
msgid "Email Sending Settings"
|
1254 |
msgstr ""
|
1255 |
|
1256 |
-
#: woocommerce-ac.php:
|
1257 |
-
#: woocommerce-ac.php:
|
1258 |
msgid "Change settings for sending email notifications to Customers, to Admin etc."
|
1259 |
msgstr ""
|
1260 |
|
1261 |
-
#: woocommerce-ac.php:
|
1262 |
msgid "The list below shows all Abandoned Carts which have remained in cart for a time higher than the \"Cart abandoned cut-off time\" setting."
|
1263 |
msgstr ""
|
1264 |
|
1265 |
-
#: woocommerce-ac.php:
|
1266 |
msgid "All "
|
1267 |
msgstr ""
|
1268 |
|
1269 |
#. translators: Users.
|
1270 |
-
#: woocommerce-ac.php:
|
1271 |
msgid "Registered %s"
|
1272 |
msgstr ""
|
1273 |
|
1274 |
#. translators: Users.
|
1275 |
-
#: woocommerce-ac.php:
|
1276 |
msgid "Guest %s"
|
1277 |
msgstr ""
|
1278 |
|
1279 |
-
#: woocommerce-ac.php:
|
1280 |
msgid "Carts without Customer Details"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
-
#: woocommerce-ac.php:
|
1284 |
msgid "Add email templates at different intervals to maximize the possibility of recovering your abandoned carts."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: woocommerce-ac.php:
|
1288 |
msgid "The Email Template has been successfully added. In order to start sending this email to your customers, please activate it."
|
1289 |
msgstr ""
|
1290 |
|
1291 |
-
#: woocommerce-ac.php:
|
1292 |
msgid "There was a problem adding the email template. Please contact the plugin author via <a href= \"https://wordpress.org/support/plugin/woocommerce-abandoned-cart\">support forum</a>."
|
1293 |
msgstr ""
|
1294 |
|
1295 |
-
#: woocommerce-ac.php:
|
1296 |
msgid "The Email Template has been successfully updated."
|
1297 |
msgstr ""
|
1298 |
|
1299 |
-
#: woocommerce-ac.php:
|
1300 |
msgid "There was a problem updating the email template. Please contact the plugin author via <a href= \"https://wordpress.org/support/plugin/woocommerce-abandoned-cart\">support forum</a>."
|
1301 |
msgstr ""
|
1302 |
|
1303 |
-
#: woocommerce-ac.php:
|
1304 |
msgid "Add New Template"
|
1305 |
msgstr ""
|
1306 |
|
1307 |
-
#: woocommerce-ac.php:
|
1308 |
msgid "The Report below shows how many Abandoned Carts we were able to recover for you by sending automatic emails to encourage shoppers."
|
1309 |
msgstr ""
|
1310 |
|
1311 |
-
#: woocommerce-ac.php:
|
1312 |
msgid "Start Date:"
|
1313 |
msgstr ""
|
1314 |
|
1315 |
-
#: woocommerce-ac.php:
|
1316 |
msgid "End Date:"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
#. translators: Abandoned & recovered numbers and order totals.
|
1320 |
-
#: woocommerce-ac.php:
|
1321 |
msgid "During the selected range <strong>%1$d</strong> carts totaling <strong>%2$s</strong> were abandoned. We were able to recover <strong>%3$d</strong> of them, which led to an extra <strong>%4$s</strong>"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
#. translators: Abandoned Order ID.
|
1325 |
-
#: woocommerce-ac.php:
|
1326 |
msgid "Abandoned Order #%s Details"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: woocommerce-ac.php:
|
1330 |
msgid "Line Total"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
-
#: woocommerce-ac.php:
|
1334 |
msgid "Customer Details"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: woocommerce-ac.php:
|
1338 |
msgid "Billing Details"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
-
#: woocommerce-ac.php:
|
1342 |
msgid "Name:"
|
1343 |
msgstr ""
|
1344 |
|
1345 |
-
#: woocommerce-ac.php:
|
1346 |
-
#: woocommerce-ac.php:
|
1347 |
msgid "Address:"
|
1348 |
msgstr ""
|
1349 |
|
1350 |
-
#: woocommerce-ac.php:
|
1351 |
msgid "Email:"
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#: woocommerce-ac.php:
|
1355 |
msgid "Phone:"
|
1356 |
msgstr ""
|
1357 |
|
1358 |
-
#: woocommerce-ac.php:
|
1359 |
msgid "Shipping Details"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
-
#: woocommerce-ac.php:
|
1363 |
msgid "Shipping Address same as Billing Address"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
-
#: woocommerce-ac.php:
|
1367 |
msgid "Shipping Charges"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
-
#: woocommerce-ac.php:
|
1371 |
msgid "Template Name:"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
-
#: woocommerce-ac.php:
|
1375 |
msgid "Enter a template name for reference"
|
1376 |
msgstr ""
|
1377 |
|
1378 |
-
#: woocommerce-ac.php:
|
1379 |
msgid "Subject:"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
-
#: woocommerce-ac.php:
|
1383 |
msgid "Enter the subject that should appear in the email sent"
|
1384 |
msgstr ""
|
1385 |
|
1386 |
-
#: woocommerce-ac.php:
|
1387 |
msgid "Email Body:"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
-
#: woocommerce-ac.php:
|
1391 |
msgid "Message to be sent in the reminder email."
|
1392 |
msgstr ""
|
1393 |
|
1394 |
-
#: woocommerce-ac.php:
|
1395 |
msgid "Use WooCommerce Template Style:"
|
1396 |
msgstr ""
|
1397 |
|
1398 |
-
#: woocommerce-ac.php:
|
1399 |
msgid "Email Template Header Text: "
|
1400 |
msgstr ""
|
1401 |
|
1402 |
-
#: woocommerce-ac.php:
|
1403 |
msgid "Enter the header which will appear in the abandoned WooCommerce email sent. This is only applicable when only used when \"Use WooCommerce Template Style:\" is checked."
|
1404 |
msgstr ""
|
1405 |
|
1406 |
-
#: woocommerce-ac.php:
|
1407 |
msgid "Send this email:"
|
1408 |
msgstr ""
|
1409 |
|
1410 |
-
#: woocommerce-ac.php:
|
1411 |
msgid "after cart is abandoned."
|
1412 |
msgstr ""
|
1413 |
|
1414 |
-
#: woocommerce-ac.php:
|
1415 |
msgid "Send a test email to:"
|
1416 |
msgstr ""
|
1417 |
|
1418 |
-
#: woocommerce-ac.php:
|
1419 |
msgid "Enter the email id to which the test email needs to be sent."
|
1420 |
msgstr ""
|
1421 |
|
1422 |
-
#: woocommerce-ac.php:
|
1423 |
msgid "Update Changes"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: woocommerce-ac.php:
|
1427 |
msgid "If you love <strong>Abandoned Cart Lite for WooCommerce</strong>, then please leave us a <a href=\"https://wordpress.org/support/plugin/woocommerce-abandoned-cart/reviews/?rate=5#new-post\" target=\"_blank\" class=\"ac-rating-link\" data-rated=\"Thanks :)\">★★★★★</a> rating. Thank you in advance. :)"
|
1428 |
msgstr ""
|
1429 |
|
1430 |
-
#: woocommerce-ac.php:
|
1431 |
msgid "Please enter a valid email."
|
1432 |
msgstr ""
|
1433 |
|
1434 |
-
#: woocommerce-ac.php:
|
1435 |
-
#: woocommerce-ac.php:
|
1436 |
msgid "Men's Formal Shoes"
|
1437 |
msgstr ""
|
1438 |
|
1439 |
-
#: woocommerce-ac.php:
|
1440 |
-
#: woocommerce-ac.php:
|
1441 |
msgid "Woman's Hand Bags"
|
1442 |
msgstr ""
|
2 |
# This file is distributed under the same license as the Abandoned Cart Lite for WooCommerce plugin.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Abandoned Cart Lite for WooCommerce 5.13.0\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-abandoned-cart\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-08-23T05:46:09+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.4.0\n"
|
15 |
"X-Domain: woocommerce-abandoned-cart\n"
|
38 |
msgid "Abandoned cart reminder"
|
39 |
msgstr ""
|
40 |
|
41 |
+
#: cron/class-wcal-cron.php:300
|
42 |
+
#: woocommerce-ac.php:3174
|
43 |
+
#: woocommerce-ac.php:4024
|
44 |
+
#: woocommerce-ac.php:4059
|
45 |
+
msgid "Item"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: cron/class-wcal-cron.php:301
|
49 |
+
#: woocommerce-ac.php:3175
|
50 |
+
#: woocommerce-ac.php:4025
|
51 |
+
#: woocommerce-ac.php:4060
|
52 |
+
msgid "Name"
|
53 |
msgstr ""
|
54 |
|
55 |
+
#: cron/class-wcal-cron.php:302
|
56 |
+
#: woocommerce-ac.php:3176
|
57 |
+
#: woocommerce-ac.php:4026
|
58 |
+
#: woocommerce-ac.php:4061
|
59 |
+
msgid "Quantity"
|
60 |
msgstr ""
|
61 |
|
62 |
+
#: cron/class-wcal-cron.php:303
|
63 |
+
#: woocommerce-ac.php:4027
|
64 |
+
#: woocommerce-ac.php:4062
|
65 |
+
msgid "Price"
|
|
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: cron/class-wcal-cron.php:304
|
69 |
+
#: woocommerce-ac.php:3177
|
70 |
+
#: woocommerce-ac.php:4028
|
71 |
+
#: woocommerce-ac.php:4063
|
72 |
+
msgid "Line Subtotal"
|
|
|
73 |
msgstr ""
|
74 |
|
75 |
+
#: cron/class-wcal-cron.php:309
|
76 |
+
#: cron/class-wcal-cron.php:320
|
77 |
+
#: woocommerce-ac.php:4022
|
78 |
+
#: woocommerce-ac.php:4056
|
79 |
+
msgid "Your Shopping Cart"
|
|
|
80 |
msgstr ""
|
81 |
|
82 |
+
#: cron/class-wcal-cron.php:346
|
83 |
+
#: cron/class-wcal-cron.php:378
|
84 |
msgid "SKU: "
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: cron/class-wcal-cron.php:430
|
88 |
+
#: woocommerce-ac.php:4048
|
89 |
+
#: woocommerce-ac.php:4083
|
90 |
msgid "Cart Total:"
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: cron/class-wcal-cron.php:442
|
94 |
msgid "Product no longer exists"
|
95 |
msgstr ""
|
96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
#. translators: Cart ID.
|
98 |
#: includes/admin/class-wcal-abandoned-cart-details.php:437
|
99 |
msgid "Cart #%s"
|
123 |
msgstr ""
|
124 |
|
125 |
#: includes/admin/class-wcal-personal-data-export.php:137
|
126 |
+
#: woocommerce-ac.php:1354
|
127 |
msgid "Abandoned Carts"
|
128 |
msgstr ""
|
129 |
|
190 |
#: includes/admin/class-wcap-add-cart-popup-modal.php:84
|
191 |
#: includes/admin/class-wcap-pro-settings.php:66
|
192 |
#: includes/admin/class-wcap-pro-settings.php:299
|
193 |
+
#: woocommerce-ac.php:3744
|
194 |
msgid "Save Changes"
|
195 |
msgstr ""
|
196 |
|
700 |
" <strong><a target=\"_blank\" href= \"%s\">Purchase now</a></strong> & Grab 20% discount with the code \"DFWP20\". The discount code is valid only for the first 20 customers."
|
701 |
msgstr ""
|
702 |
|
703 |
+
#: includes/class-wcal-common.php:679
|
704 |
msgid "Database Updated Successfully"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: includes/class-wcal-common.php:694
|
708 |
msgid "Database Update Failed. Please try again after sometime"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: includes/class-wcal-common.php:854
|
712 |
msgid "This product no longer exists"
|
713 |
msgstr ""
|
714 |
|
814 |
msgstr ""
|
815 |
|
816 |
#: includes/classes/class-wcal-dashboard-report.php:161
|
817 |
+
#: woocommerce-ac.php:2217
|
818 |
msgid "Abandoned Orders"
|
819 |
msgstr ""
|
820 |
|
879 |
msgstr ""
|
880 |
|
881 |
#: includes/classes/class-wcal-dashboard-report.php:319
|
882 |
+
#: woocommerce-ac.php:3127
|
883 |
msgid "Go"
|
884 |
msgstr ""
|
885 |
|
963 |
msgid "off"
|
964 |
msgstr ""
|
965 |
|
966 |
+
#: includes/frontend/class-wcal-checkout-process.php:216
|
967 |
+
msgid "This order was abandoned & subsequently recovered."
|
968 |
+
msgstr ""
|
969 |
+
|
970 |
#: includes/templates/rules/html-rules-engine.php:106
|
971 |
msgid "Add rules as needed to create different email templates for different user bases. "
|
972 |
msgstr ""
|
1024 |
msgid "Search & select one coupon code that customers should use to get a discount. Generated coupon code which will be sent in email reminder will have the settings of coupon selected in this option."
|
1025 |
msgstr ""
|
1026 |
|
1027 |
+
#: woocommerce-ac.php:313
|
1028 |
+
#: woocommerce-ac.php:2231
|
1029 |
msgid "Settings"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
+
#: woocommerce-ac.php:342
|
1033 |
msgid "Emails are not being sent to customers."
|
1034 |
msgstr ""
|
1035 |
|
1036 |
+
#: woocommerce-ac.php:348
|
1037 |
msgid "Capturing of cart and other information was not satisfactory."
|
1038 |
msgstr ""
|
1039 |
|
1040 |
+
#: woocommerce-ac.php:354
|
1041 |
msgid "I cannot see abandoned cart reminder emails records."
|
1042 |
msgstr ""
|
1043 |
|
1044 |
+
#: woocommerce-ac.php:360
|
1045 |
msgid "I want to upgrade the plugin to the PRO version."
|
1046 |
msgstr ""
|
1047 |
|
1048 |
+
#: woocommerce-ac.php:483
|
1049 |
msgid "HTML Email Template"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
+
#: woocommerce-ac.php:489
|
1053 |
msgid "Abandoned cart Email Template"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
+
#: woocommerce-ac.php:764
|
1057 |
msgid "Cart Abandonment Settings"
|
1058 |
msgstr ""
|
1059 |
|
1060 |
+
#: woocommerce-ac.php:771
|
1061 |
msgid "Enable abandoned cart emails"
|
1062 |
msgstr ""
|
1063 |
|
1064 |
+
#: woocommerce-ac.php:775
|
1065 |
msgid "Yes, enable the abandoned cart emails."
|
1066 |
msgstr ""
|
1067 |
|
1068 |
+
#: woocommerce-ac.php:780
|
1069 |
msgid "Cart abandoned cut-off time"
|
1070 |
msgstr ""
|
1071 |
|
1072 |
+
#: woocommerce-ac.php:784
|
1073 |
msgid "Consider cart abandoned after X minutes of item being added to cart & order not placed."
|
1074 |
msgstr ""
|
1075 |
|
1076 |
+
#: woocommerce-ac.php:789
|
1077 |
msgid "Automatically Delete Abandoned Orders after X days"
|
1078 |
msgstr ""
|
1079 |
|
1080 |
+
#: woocommerce-ac.php:793
|
1081 |
msgid "Automatically delete abandoned cart orders after X days."
|
1082 |
msgstr ""
|
1083 |
|
1084 |
+
#: woocommerce-ac.php:798
|
1085 |
msgid "Email admin On Order Recovery"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
+
#: woocommerce-ac.php:802
|
1089 |
msgid "Sends email to Admin if an Abandoned Cart Order is recovered."
|
1090 |
msgstr ""
|
1091 |
|
1092 |
+
#: woocommerce-ac.php:807
|
1093 |
msgid "Start tracking from Cart Page"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
+
#: woocommerce-ac.php:811
|
1097 |
msgid "Enable tracking of abandoned products & carts even if customer does not visit the checkout page or does not enter any details on the checkout page like Name or Email. Tracking will begin as soon as a visitor adds a product to their cart and visits the cart page."
|
1098 |
msgstr ""
|
1099 |
|
1100 |
+
#: woocommerce-ac.php:816
|
1101 |
msgid "GDPR Settings"
|
1102 |
msgstr ""
|
1103 |
|
1104 |
+
#: woocommerce-ac.php:823
|
1105 |
msgid "Enable GDPR Notice"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
+
#: woocommerce-ac.php:827
|
1109 |
msgid "Enable this setting to display a notice informing customers that their email and cart data are saved to send abandonment reminders."
|
1110 |
msgstr ""
|
1111 |
|
1112 |
+
#: woocommerce-ac.php:832
|
1113 |
msgid "Message to be displayed for Guest users when tracking their carts"
|
1114 |
msgstr ""
|
1115 |
|
1116 |
+
#: woocommerce-ac.php:836
|
1117 |
msgid "<br>In compliance with GDPR, add a message on the Checkout page to inform Guest users of how their data is being used.<br><i>For example: Your email address will help us support your shopping experience throughout the site. Please check our Privacy Policy to see how we use your personal data.</i>"
|
1118 |
msgstr ""
|
1119 |
|
1120 |
+
#: woocommerce-ac.php:841
|
1121 |
msgid "Message to be displayed for registered users when tracking their carts."
|
1122 |
msgstr ""
|
1123 |
|
1124 |
+
#: woocommerce-ac.php:845
|
1125 |
msgid "<br>In compliance with GDPR, add a message on the Shop & Product pages to inform Registered users of how their data is being used.<br><i>For example: Please check our Privacy Policy to see how we use your personal data.</i>"
|
1126 |
msgstr ""
|
1127 |
|
1128 |
+
#: woocommerce-ac.php:850
|
1129 |
msgid "Allow the visitor to opt out of cart tracking."
|
1130 |
msgstr ""
|
1131 |
|
1132 |
+
#: woocommerce-ac.php:854
|
1133 |
msgid "<br>In compliance with GDPR, allow the site visitor (guests & registered users) to opt out from cart tracking. This message will be displayed in conjunction with the GDPR message above.</i>"
|
1134 |
msgstr ""
|
1135 |
|
1136 |
+
#: woocommerce-ac.php:859
|
1137 |
msgid "Message to be displayed when the user chooses to opt out of cart tracking."
|
1138 |
msgstr ""
|
1139 |
|
1140 |
+
#: woocommerce-ac.php:863
|
1141 |
msgid "<br>Message to be displayed when the user chooses to opt out of cart tracking.</i>"
|
1142 |
msgstr ""
|
1143 |
|
1144 |
+
#: woocommerce-ac.php:867
|
1145 |
msgid "Coupon Settings"
|
1146 |
msgstr ""
|
1147 |
|
1148 |
+
#: woocommerce-ac.php:873
|
1149 |
msgid "Delete Coupons Automatically"
|
1150 |
msgstr ""
|
1151 |
|
1152 |
+
#: woocommerce-ac.php:877
|
1153 |
msgid "Enable this setting if you want to completely remove the expired and used coupon code automatically every 15 days."
|
1154 |
msgstr ""
|
1155 |
|
1156 |
+
#: woocommerce-ac.php:881
|
1157 |
msgid "Delete Coupons Manually"
|
1158 |
msgstr ""
|
1159 |
|
1160 |
+
#: woocommerce-ac.php:885
|
1161 |
msgid "If you want to completely remove the expired and used coupon code now then click on \"Delete\" button."
|
1162 |
msgstr ""
|
1163 |
|
1164 |
+
#: woocommerce-ac.php:894
|
1165 |
msgid "Settings for abandoned cart recovery emails"
|
1166 |
msgstr ""
|
1167 |
|
1168 |
+
#: woocommerce-ac.php:901
|
1169 |
msgid "\"From\" Name"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
+
#: woocommerce-ac.php:910
|
1173 |
msgid "\"From\" Address"
|
1174 |
msgstr ""
|
1175 |
|
1176 |
+
#: woocommerce-ac.php:919
|
1177 |
msgid "Send Reply Emails to"
|
1178 |
msgstr ""
|
1179 |
|
1180 |
+
#: woocommerce-ac.php:928
|
1181 |
msgid "UTM parameters to be added to all the links in reminder emails"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
+
#: woocommerce-ac.php:932
|
1185 |
msgid "UTM parameters that should be added to all the links in reminder emails."
|
1186 |
msgstr ""
|
1187 |
|
1188 |
+
#: woocommerce-ac.php:1074
|
1189 |
msgid "Abandoned cart cut off time should be numeric and has to be greater than 0."
|
1190 |
msgstr ""
|
1191 |
|
1192 |
+
#: woocommerce-ac.php:1092
|
1193 |
msgid "Automatically Delete Abandoned Orders after X days has to be greater than 0."
|
1194 |
msgstr ""
|
1195 |
|
1196 |
+
#: woocommerce-ac.php:2210
|
1197 |
msgid "Dashboard"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
+
#: woocommerce-ac.php:2224
|
1201 |
msgid "Email Templates"
|
1202 |
msgstr ""
|
1203 |
|
1204 |
+
#: woocommerce-ac.php:2238
|
1205 |
msgid "Recovered Orders"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: woocommerce-ac.php:2245
|
1209 |
msgid "Product Report"
|
1210 |
msgstr ""
|
1211 |
|
1212 |
+
#: woocommerce-ac.php:2524
|
1213 |
msgid "You do not have sufficient permissions to access this page."
|
1214 |
msgstr ""
|
1215 |
|
1216 |
+
#: woocommerce-ac.php:2528
|
1217 |
msgid "WooCommerce - Abandon Cart Lite"
|
1218 |
msgstr ""
|
1219 |
|
1220 |
+
#: woocommerce-ac.php:2600
|
1221 |
msgid "The Abandoned cart has been successfully deleted."
|
1222 |
msgstr ""
|
1223 |
|
1224 |
+
#: woocommerce-ac.php:2602
|
1225 |
msgid "All Abandoned Carts have been successfully deleted."
|
1226 |
msgstr ""
|
1227 |
|
1228 |
+
#: woocommerce-ac.php:2604
|
1229 |
msgid "All Visitor carts have been successfully deleted."
|
1230 |
msgstr ""
|
1231 |
|
1232 |
+
#: woocommerce-ac.php:2606
|
1233 |
msgid "All Guest carts have been successfully deleted."
|
1234 |
msgstr ""
|
1235 |
|
1236 |
+
#: woocommerce-ac.php:2608
|
1237 |
msgid "All Registered carts have been deleted."
|
1238 |
msgstr ""
|
1239 |
|
1240 |
+
#: woocommerce-ac.php:2619
|
1241 |
msgid "The Template has been successfully deleted."
|
1242 |
msgstr ""
|
1243 |
|
1244 |
+
#: woocommerce-ac.php:2663
|
1245 |
msgid "General Settings"
|
1246 |
msgstr ""
|
1247 |
|
1248 |
+
#: woocommerce-ac.php:2666
|
1249 |
msgid "Email Sending Settings"
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: woocommerce-ac.php:2686
|
1253 |
+
#: woocommerce-ac.php:2696
|
1254 |
msgid "Change settings for sending email notifications to Customers, to Admin etc."
|
1255 |
msgstr ""
|
1256 |
|
1257 |
+
#: woocommerce-ac.php:2723
|
1258 |
msgid "The list below shows all Abandoned Carts which have remained in cart for a time higher than the \"Cart abandoned cut-off time\" setting."
|
1259 |
msgstr ""
|
1260 |
|
1261 |
+
#: woocommerce-ac.php:2765
|
1262 |
msgid "All "
|
1263 |
msgstr ""
|
1264 |
|
1265 |
#. translators: Users.
|
1266 |
+
#: woocommerce-ac.php:2770
|
1267 |
msgid "Registered %s"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
#. translators: Users.
|
1271 |
+
#: woocommerce-ac.php:2776
|
1272 |
msgid "Guest %s"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
+
#: woocommerce-ac.php:2782
|
1276 |
msgid "Carts without Customer Details"
|
1277 |
msgstr ""
|
1278 |
|
1279 |
+
#: woocommerce-ac.php:2803
|
1280 |
msgid "Add email templates at different intervals to maximize the possibility of recovering your abandoned carts."
|
1281 |
msgstr ""
|
1282 |
|
1283 |
+
#: woocommerce-ac.php:2959
|
1284 |
msgid "The Email Template has been successfully added. In order to start sending this email to your customers, please activate it."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: woocommerce-ac.php:2969
|
1288 |
msgid "There was a problem adding the email template. Please contact the plugin author via <a href= \"https://wordpress.org/support/plugin/woocommerce-abandoned-cart\">support forum</a>."
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: woocommerce-ac.php:2981
|
1292 |
msgid "The Email Template has been successfully updated."
|
1293 |
msgstr ""
|
1294 |
|
1295 |
+
#: woocommerce-ac.php:2991
|
1296 |
msgid "There was a problem updating the email template. Please contact the plugin author via <a href= \"https://wordpress.org/support/plugin/woocommerce-abandoned-cart\">support forum</a>."
|
1297 |
msgstr ""
|
1298 |
|
1299 |
+
#: woocommerce-ac.php:3000
|
1300 |
msgid "Add New Template"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: woocommerce-ac.php:3072
|
1304 |
msgid "The Report below shows how many Abandoned Carts we were able to recover for you by sending automatic emails to encourage shoppers."
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: woocommerce-ac.php:3123
|
1308 |
msgid "Start Date:"
|
1309 |
msgstr ""
|
1310 |
|
1311 |
+
#: woocommerce-ac.php:3125
|
1312 |
msgid "End Date:"
|
1313 |
msgstr ""
|
1314 |
|
1315 |
#. translators: Abandoned & recovered numbers and order totals.
|
1316 |
+
#: woocommerce-ac.php:3145
|
1317 |
msgid "During the selected range <strong>%1$d</strong> carts totaling <strong>%2$s</strong> were abandoned. We were able to recover <strong>%3$d</strong> of them, which led to an extra <strong>%4$s</strong>"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
#. translators: Abandoned Order ID.
|
1321 |
+
#: woocommerce-ac.php:3170
|
1322 |
msgid "Abandoned Order #%s Details"
|
1323 |
msgstr ""
|
1324 |
|
1325 |
+
#: woocommerce-ac.php:3178
|
1326 |
msgid "Line Total"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
+
#: woocommerce-ac.php:3403
|
1330 |
msgid "Customer Details"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
+
#: woocommerce-ac.php:3407
|
1334 |
msgid "Billing Details"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
+
#: woocommerce-ac.php:3408
|
1338 |
msgid "Name:"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
+
#: woocommerce-ac.php:3411
|
1342 |
+
#: woocommerce-ac.php:3432
|
1343 |
msgid "Address:"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
+
#: woocommerce-ac.php:3422
|
1347 |
msgid "Email:"
|
1348 |
msgstr ""
|
1349 |
|
1350 |
+
#: woocommerce-ac.php:3426
|
1351 |
msgid "Phone:"
|
1352 |
msgstr ""
|
1353 |
|
1354 |
+
#: woocommerce-ac.php:3431
|
1355 |
msgid "Shipping Details"
|
1356 |
msgstr ""
|
1357 |
|
1358 |
+
#: woocommerce-ac.php:3441
|
1359 |
msgid "Shipping Address same as Billing Address"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
+
#: woocommerce-ac.php:3454
|
1363 |
msgid "Shipping Charges"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: woocommerce-ac.php:3538
|
1367 |
msgid "Template Name:"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
+
#: woocommerce-ac.php:3548
|
1371 |
msgid "Enter a template name for reference"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: woocommerce-ac.php:3554
|
1375 |
msgid "Subject:"
|
1376 |
msgstr ""
|
1377 |
|
1378 |
+
#: woocommerce-ac.php:3564
|
1379 |
msgid "Enter the subject that should appear in the email sent"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
+
#: woocommerce-ac.php:3570
|
1383 |
msgid "Email Body:"
|
1384 |
msgstr ""
|
1385 |
|
1386 |
+
#: woocommerce-ac.php:3597
|
1387 |
msgid "Message to be sent in the reminder email."
|
1388 |
msgstr ""
|
1389 |
|
1390 |
+
#: woocommerce-ac.php:3624
|
1391 |
msgid "Use WooCommerce Template Style:"
|
1392 |
msgstr ""
|
1393 |
|
1394 |
+
#: woocommerce-ac.php:3647
|
1395 |
msgid "Email Template Header Text: "
|
1396 |
msgstr ""
|
1397 |
|
1398 |
+
#: woocommerce-ac.php:3662
|
1399 |
msgid "Enter the header which will appear in the abandoned WooCommerce email sent. This is only applicable when only used when \"Use WooCommerce Template Style:\" is checked."
|
1400 |
msgstr ""
|
1401 |
|
1402 |
+
#: woocommerce-ac.php:3668
|
1403 |
msgid "Send this email:"
|
1404 |
msgstr ""
|
1405 |
|
1406 |
+
#: woocommerce-ac.php:3710
|
1407 |
msgid "after cart is abandoned."
|
1408 |
msgstr ""
|
1409 |
|
1410 |
+
#: woocommerce-ac.php:3717
|
1411 |
msgid "Send a test email to:"
|
1412 |
msgstr ""
|
1413 |
|
1414 |
+
#: woocommerce-ac.php:3726
|
1415 |
msgid "Enter the email id to which the test email needs to be sent."
|
1416 |
msgstr ""
|
1417 |
|
1418 |
+
#: woocommerce-ac.php:3740
|
1419 |
msgid "Update Changes"
|
1420 |
msgstr ""
|
1421 |
|
1422 |
+
#: woocommerce-ac.php:3766
|
1423 |
msgid "If you love <strong>Abandoned Cart Lite for WooCommerce</strong>, then please leave us a <a href=\"https://wordpress.org/support/plugin/woocommerce-abandoned-cart/reviews/?rate=5#new-post\" target=\"_blank\" class=\"ac-rating-link\" data-rated=\"Thanks :)\">★★★★★</a> rating. Thank you in advance. :)"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
+
#: woocommerce-ac.php:3818
|
1427 |
msgid "Please enter a valid email."
|
1428 |
msgstr ""
|
1429 |
|
1430 |
+
#: woocommerce-ac.php:4032
|
1431 |
+
#: woocommerce-ac.php:4067
|
1432 |
msgid "Men's Formal Shoes"
|
1433 |
msgstr ""
|
1434 |
|
1435 |
+
#: woocommerce-ac.php:4039
|
1436 |
+
#: woocommerce-ac.php:4074
|
1437 |
msgid "Woman's Hand Bags"
|
1438 |
msgstr ""
|
@@ -218,7 +218,7 @@ class wcal_common { // phpcs:ignore
|
|
218 |
global $wpdb;
|
219 |
$wcal_email_templates_count = 0;
|
220 |
// phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
221 |
-
$wcal_email_templates_results = $wpdb->get_results( 'SELECT id, is_active, is_wc_template,frequency, day_or_hour FROM `' . $wpdb->prefix . 'ac_email_templates_lite`' );
|
222 |
|
223 |
$wcal_email_templates_count = count( $wcal_email_templates_results );
|
224 |
|
@@ -237,10 +237,12 @@ class wcal_common { // phpcs:ignore
|
|
237 |
)
|
238 |
);
|
239 |
|
240 |
-
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['is_activate']
|
241 |
-
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['is_wc_template']
|
242 |
-
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['template_time']
|
243 |
-
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['total_email_sent']
|
|
|
|
|
244 |
}
|
245 |
|
246 |
return $wcal_templates_data;
|
@@ -450,9 +452,12 @@ class wcal_common { // phpcs:ignore
|
|
450 |
private static function wcal_ts_get_all_plugin_options_values() {
|
451 |
|
452 |
return array(
|
453 |
-
'wcal_cart_cut_off_time'
|
454 |
-
'wcal_admin_recovery_email'
|
455 |
-
'wcal_capture_visitors_cart'
|
|
|
|
|
|
|
456 |
);
|
457 |
}
|
458 |
|
218 |
global $wpdb;
|
219 |
$wcal_email_templates_count = 0;
|
220 |
// phpcs:ignore WordPress.DB.DirectDatabaseQuery
|
221 |
+
$wcal_email_templates_results = $wpdb->get_results( 'SELECT id, is_active, is_wc_template,frequency, day_or_hour, coupon_code, generate_unique_coupon_code FROM `' . $wpdb->prefix . 'ac_email_templates_lite`' );
|
222 |
|
223 |
$wcal_email_templates_count = count( $wcal_email_templates_results );
|
224 |
|
237 |
)
|
238 |
);
|
239 |
|
240 |
+
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['is_activate'] = ( 1 === $wcal_email_templates_results_value->is_active ) ? 'Active' : 'Deactive';
|
241 |
+
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['is_wc_template'] = ( 1 === $wcal_email_templates_results_value->is_wc_template ) ? 'Yes' : 'No';
|
242 |
+
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['template_time'] = $wcal_template_time;
|
243 |
+
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['total_email_sent'] = $wcal_template_sent_count;
|
244 |
+
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['coupon_code'] = $wcal_email_templates_results_value->coupon_code;
|
245 |
+
$wcal_templates_data [ 'template_id_' . $wcal_email_templates_results_value->id ] ['generate_unique_coupon_code'] = $wcal_email_templates_results_value->generate_unique_coupon_code;
|
246 |
}
|
247 |
|
248 |
return $wcal_templates_data;
|
452 |
private static function wcal_ts_get_all_plugin_options_values() {
|
453 |
|
454 |
return array(
|
455 |
+
'wcal_cart_cut_off_time' => get_option( 'ac_lite_cart_abandoned_time' ),
|
456 |
+
'wcal_admin_recovery_email' => get_option( 'ac_lite_email_admin_on_recovery' ),
|
457 |
+
'wcal_capture_visitors_cart' => get_option( 'ac_lite_track_guest_cart_from_cart_page' ),
|
458 |
+
'wcal_delete_abandoned_order_days' => get_option( 'ac_lite_delete_abandoned_order_days' ),
|
459 |
+
'wcal_enable_gdpr_consent' => get_option( 'wcal_enable_gdpr_consent' ),
|
460 |
+
'wcal_delete_coupon_data' => get_option( 'wcal_delete_coupon_data' ),
|
461 |
);
|
462 |
}
|
463 |
|
@@ -41,8 +41,9 @@ class Wcal_Default_Template_Settings {
|
|
41 |
$wpdb->query(
|
42 |
$wpdb->prepare(
|
43 |
'INSERT INTO `' . $db_prefix . 'ac_email_templates_lite`
|
44 |
-
( subject, body, is_active, frequency, day_or_hour, template_name, is_wc_template, default_template, wc_email_header )
|
45 |
-
VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s )',
|
|
|
46 |
$template_subject_array,
|
47 |
$body_content_array,
|
48 |
$active_post_array,
|
41 |
$wpdb->query(
|
42 |
$wpdb->prepare(
|
43 |
'INSERT INTO `' . $db_prefix . 'ac_email_templates_lite`
|
44 |
+
( email_type, subject, body, is_active, frequency, day_or_hour, template_name, is_wc_template, default_template, wc_email_header )
|
45 |
+
VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s )',
|
46 |
+
'abandoned_cart_email',
|
47 |
$template_subject_array,
|
48 |
$body_content_array,
|
49 |
$active_post_array,
|
@@ -168,7 +168,10 @@ class Wcal_Delete_Handler {
|
|
168 |
public static function wcal_delete_abandoned_carts_after_x_days() {
|
169 |
global $wpdb;
|
170 |
|
171 |
-
$delete_ac_after_days = get_option( 'ac_lite_delete_abandoned_order_days' );
|
|
|
|
|
|
|
172 |
if ( '' !== $delete_ac_after_days && 0 !== $delete_ac_after_days ) {
|
173 |
|
174 |
$delete_ac_after_days_time = $delete_ac_after_days * 86400;
|
168 |
public static function wcal_delete_abandoned_carts_after_x_days() {
|
169 |
global $wpdb;
|
170 |
|
171 |
+
$delete_ac_after_days = get_option( 'ac_lite_delete_abandoned_order_days', 365 );
|
172 |
+
if ( 0 === $delete_ac_after_days || '' === $delete_ac_after_days ) { // If for some reason, it is blanks or 0, reset it to 365.
|
173 |
+
$delete_ac_after_days = '365';
|
174 |
+
}
|
175 |
if ( '' !== $delete_ac_after_days && 0 !== $delete_ac_after_days ) {
|
176 |
|
177 |
$delete_ac_after_days_time = $delete_ac_after_days * 86400;
|
@@ -452,7 +452,8 @@ if ( ! class_exists( 'Wcal_Dashoard_Report' ) ) {
|
|
452 |
self::$recovered_count = count( $ids );
|
453 |
|
454 |
foreach ( $ids as $order_id ) {
|
455 |
-
$
|
|
|
456 |
}
|
457 |
}
|
458 |
return $amount;
|
452 |
self::$recovered_count = count( $ids );
|
453 |
|
454 |
foreach ( $ids as $order_id ) {
|
455 |
+
$order_total = (float) get_post_meta( $order_id, '_order_total', true );
|
456 |
+
$amount += round( $order_total, 2 );
|
457 |
}
|
458 |
}
|
459 |
return $amount;
|
@@ -177,7 +177,7 @@ class WCAL_Product_Report_Table extends WP_List_Table {
|
|
177 |
foreach ( $chunck_array_value as $k => $v ) {
|
178 |
$return_product_report[ $i ] = new stdClass();
|
179 |
$prod_name = get_post( $k );
|
180 |
-
if (
|
181 |
$product_name = $prod_name->post_title;
|
182 |
$abandoned_count = $v;
|
183 |
$recover = array_count_values( $recover_product_array );
|
177 |
foreach ( $chunck_array_value as $k => $v ) {
|
178 |
$return_product_report[ $i ] = new stdClass();
|
179 |
$prod_name = get_post( $k );
|
180 |
+
if ( $prod_name ) {
|
181 |
$product_name = $prod_name->post_title;
|
182 |
$abandoned_count = $v;
|
183 |
$recover = array_count_values( $recover_product_array );
|
@@ -325,7 +325,8 @@ if ( ! class_exists( 'Wcal_Checkout_Process' ) ) {
|
|
325 |
$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
|
326 |
$email_subject = __( 'New Customer Order - Recovered', 'woocommerce' );
|
327 |
$user_email = get_option( 'admin_email' );
|
328 |
-
$
|
|
|
329 |
$headers[] = 'Content-Type: text/html';
|
330 |
$user_email = apply_filters( 'wcal_send_recovery_email_to', $user_email );
|
331 |
// Buffer.
|
325 |
$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
|
326 |
$email_subject = __( 'New Customer Order - Recovered', 'woocommerce' );
|
327 |
$user_email = get_option( 'admin_email' );
|
328 |
+
$send_to = apply_filters( 'wcal_recovery_email_from', $user_email );
|
329 |
+
$headers[] = 'From: Admin <' . $send_to . '>';
|
330 |
$headers[] = 'Content-Type: text/html';
|
331 |
$user_email = apply_filters( 'wcal_send_recovery_email_to', $user_email );
|
332 |
// Buffer.
|
@@ -1,144 +1,77 @@
|
|
1 |
|
2 |
=== Abandoned Cart Lite for WooCommerce ===
|
3 |
-
Contributors: ashokrane, pinal.shah, chetnapatel, tychesoftwares,
|
4 |
-
Tags: cart abandonment,
|
5 |
Author URI: https://www.tychesoftwares.com/
|
6 |
Requires at least: 1.3
|
7 |
-
Tested up to:
|
8 |
Stable tag: trunk
|
9 |
Requires PHP: 5.6
|
10 |
License: GPLv2 or late
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
Donate link: https://www.paypal.me/TycheSoftwares
|
13 |
|
14 |
-
This easy-to-use plugin allows WooCommerce store owners to recover sales that are lost to abandoned shopping carts by customers.
|
15 |
-
|
16 |
== Description ==
|
17 |
|
18 |
-
|
19 |
-
|
20 |
-
It works in the background, sending email notifications to your guests customers & logged-in customers, reminding them about their abandoned orders.
|
21 |
-
|
22 |
-
70% abandonment rate means that out of 100 potential customers, more than 70 of them are leaving without transacting on the store. Email Remarketing has proven to recover on average between 20-25% of abandoned shopping carts.
|
23 |
-
|
24 |
-
> This plugin works as described: the **lite version doesn't cut down in functionality**. **You can have your orders recovered and save on sales**. Depending on what you are selling, this can be a few orders to **justify ordering the full package - i'm only a few away!**
|
25 |
-
|
26 |
-
>**Very recommended!**
|
27 |
-
> - [jaysnl](https://wordpress.org/support/topic/great-support-and-value-buy-it/)
|
28 |
-
|
29 |
-
The Abandoned Cart plugin allows you to recover orders that were just a step away from closing. It enables you to create automatic & well-timed email reminders to be sent to your customers who have added your products to their cart, but did not complete the order. As a result, with this plugin you will start recovering at least 30% or more of your lost sales. Why let this 30% revenue go unclaimed?
|
30 |
-
|
31 |
-
Abandoned Cart Lite plugin enables to do the following things:
|
32 |
-
|
33 |
-
1. Allow your customers to recover their abandoned carts in a **single click**.
|
34 |
-
2. Identify the **Abandoned Orders information**, including the products that were abandoned.
|
35 |
-
3. The plugin now captures abandoned **guest carts**. A guest user's cart will be captured on the **Checkout page**, if it is abandoned after entering the **email address**.
|
36 |
-
4. Track **abandoned orders value v/s recovered orders value**.
|
37 |
-
5. Admin is notified by email when an order is **recovered**.
|
38 |
-
6. Works off-the-shelf as it comes with 1 **default email template**.
|
39 |
-
7. Create **unlimited email templates** to be sent at intervals that you set - Intervals start from 1 hour after cart is abandoned.
|
40 |
-
8. Add custom variables like **Customer First Name, Customer Last name, Customer full name, Cart Link & Product Cart Information** in the email template.
|
41 |
-
9. Copy HTML from anywhere & create templates using the powerful **Rich Text Editor**.
|
42 |
-
10. **Automatically stops email notifications** when a customer makes a purchase or uses the cart recovery link.
|
43 |
-
|
44 |
-
### Differences between Lite & PRO version:
|
45 |
-
|
46 |
-
You can check the detailed difference between Pro and Lite version **[here](https://www.tychesoftwares.com/differences-between-pro-and-lite-versions-of-abandoned-cart-for-woocommerce-plugin/?utm_source=wprepo&utm_medium=litelink&utm_campaign=AbandonedCartLite "Lite and Pro version Difference")**
|
47 |
-
|
48 |
-
> I'm using the plugin on my shop. **Installation is very easy and it works great**. I've already recovered some orders, **it doesn't cost any effort**.
|
49 |
-
|
50 |
-
> **Support is fast and extensive**.
|
51 |
-
|
52 |
-
> -[bertkat](https://wordpress.org/support/topic/easy-money/)
|
53 |
-
|
54 |
-
**Pro Version:**
|
55 |
|
56 |
-
[
|
57 |
|
58 |
-
|
59 |
|
60 |
-
|
61 |
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
-
|
65 |
-
2. Works off-the-shelf as it comes with **3 default email templates**.
|
66 |
-
3. Offer **incentives to customers** to return and complete their checkout with **discounts and coupons**.
|
67 |
-
4. Add custom variables like **Customer Name, Product Information, Coupons**, etc. in the email template.
|
68 |
-
5. Embed WooCommerce coupons & also **generate unique coupons** in the emails being sent to customers.
|
69 |
-
6. Track whether **expired coupons** are causing cart abandonment.
|
70 |
-
7. Track **emails sent, emails opened, links clicked** for each template/email.
|
71 |
-
8. **Product report** allows you to see which products are being abandoned & which are being recovered the most.
|
72 |
-
9. Start sending email templates **within minutes** of cart being abandoned.
|
73 |
-
10. Admin can send the customer emails to specific abandoned cart(s) using **'Send Custom Email'** feature.
|
74 |
-
11. If the store is using **WPML** then admin can translate all the abandoned cart reminder email templates using WPML. Then the emails will be sent to the customers in the **same language in which they have abandoned the cart**.
|
75 |
-
12. Admin can **Print** or export the Abandoned Orders to **CSV** format.
|
76 |
-
13. Admin can send **different email templates** to **'Registered Users', 'Guest Users', 'For carts Abandoned with one product' or 'with more than one product' or to 'All'**.
|
77 |
-
14. Admin can **restrict** the abandoned carts based on the **'Email address'**, **'IP address'** & **'Domain name'**.
|
78 |
-
15. Admin can take a **glimpse** of **abandoned carts**, **recovered orders**, and the **states of the email template** from the **Dashboard** tab.
|
79 |
-
16. The plugin will consider the **taxation** which is set in the WooCommerce. The abandoned cart total will be displayed as per the selected tax setting.
|
80 |
|
81 |
-
|
|
|
82 |
|
83 |
-
|
84 |
|
85 |
-
|
86 |
-
> 1. Easy way to format "Abandoned cart reminder" Header
|
87 |
|
88 |
-
|
89 |
|
|
|
|
|
90 |
|
91 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
|
93 |
-
|
94 |
|
95 |
-
|
96 |
|
97 |
-
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
3. **[Order Delivery Date Pro for WooCommerce](https://www.tychesoftwares.com/store/premium-plugins/order-delivery-date-for-woocommerce-pro-21/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Order Delivery Date Pro for WooCommerce")**
|
102 |
-
|
103 |
-
4. **[Product Delivery Date Pro for WooCommerce](https://www.tychesoftwares.com/store/premium-plugins/product-delivery-date-pro-for-woocommerce/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Product Delivery Date Pro for WooCommerce")**
|
104 |
-
|
105 |
-
5. **[Deposits For WooCommerce](https://www.tychesoftwares.com/store/premium-plugins/deposits-for-woocommerce/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Deposits For WooCommerce")**
|
106 |
-
|
107 |
-
6. **[Payment Gateway Based Fees and Discounts for WooCommerce - Pro](https://www.tychesoftwares.com/store/premium-plugins/payment-gateway-based-fees-and-discounts-for-woocommerce-plugin/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Payment Gateway Based Fees and Discounts for WooCommerce - Pro")**
|
108 |
-
|
109 |
-
7. **[Custom Order Status for WooCommerce - Pro](https://www.tychesoftwares.com/store/premium-plugins/custom-order-status-woocommerce/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Custom Order Status for WooCommerce - Pro")**
|
110 |
-
|
111 |
-
8. **[Custom Order Numbers for WooCommerce - Pro](https://www.tychesoftwares.com/store/premium-plugins/custom-order-numbers-woocommerce/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Custom Order Numbers for WooCommerce - Pro")**
|
112 |
-
|
113 |
-
9. **[Product Input Fields for WooCommerce - Pro](https://www.tychesoftwares.com/store/premium-plugins/product-input-fields-for-woocommerce/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Product Input Fields for WooCommerce - Pro")**
|
114 |
-
|
115 |
-
10. **[Call for Price for WooCommerce - Pro](https://www.tychesoftwares.com/store/premium-plugins/woocommerce-call-for-price-plugin/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Call for Price for WooCommerce - Pro")**
|
116 |
-
|
117 |
-
11. **[Price based on User Role for WooCommerce - Pro](https://www.tychesoftwares.com/store/premium-plugins/price-user-role-woocommerce/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Price based on User Role for WooCommerce - Pro")**
|
118 |
-
|
119 |
-
12. **[Currency per Product for WooCommerce - Pro](https://www.tychesoftwares.com/store/premium-plugins/currency-per-product-for-woocommerce/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Currency per Product for WooCommerce - Pro")**
|
120 |
-
|
121 |
-
**Some of our other free plugins:**
|
122 |
-
|
123 |
-
1. **[Order Delivery Date for WooCommerce](https://wordpress.org/plugins/order-delivery-date-for-woocommerce/ "Order Delivery Date for WooCommerce")**
|
124 |
-
|
125 |
-
2. **[Product Delivery Date for WooCommerce - Lite](https://wordpress.org/plugins/product-delivery-date-for-woocommerce-lite/ "Product Delivery Date for WooCommerce")**
|
126 |
|
127 |
-
|
128 |
|
129 |
-
4. **[Payment Gateway Based Fees and Discounts for WooCommerce](https://wordpress.org/plugins/checkout-fees-for-woocommerce/ "Payment Gateway Based Fees and Discounts for WooCommerce")**
|
130 |
|
131 |
-
|
132 |
|
133 |
-
|
134 |
|
135 |
-
|
136 |
|
137 |
-
|
138 |
|
139 |
-
|
140 |
|
141 |
-
10. **[Currency per Product for WooCommerce](https://wordpress.org/plugins/currency-per-product-for-woocommerce/ "Currency per Product for WooCommerce")**
|
142 |
|
143 |
**[Documentation](https://www.tychesoftwares.com/docs/docs/abandoned-cart-for-woocommerce-lite/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Documentation")**
|
144 |
|
@@ -222,6 +155,22 @@ The admin can use the merge code `{{cart.unsubscribe}}' in the email templates.
|
|
222 |
6. Product Report Tab.
|
223 |
|
224 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
= 5.12.0 ( 08.02.2022 ) =
|
226 |
* Enhancement - Introduced 2 new webhooks that allows the admin to send cart abandonment and recovery data to delivery URLs.
|
227 |
* Tweak - Introduced the ability to enable/disable GDPR consent.
|
1 |
|
2 |
=== Abandoned Cart Lite for WooCommerce ===
|
3 |
+
Contributors: ashokrane, pinal.shah, chetnapatel, tychesoftwares,
|
4 |
+
Tags: woocommerce cart abandonment, woocommerce cart abandonment recovery, Cart abandonment recovery, Cart abandonment rate, Cart abandonment solutions, Best abandoned cart plugin for WooCommerce, WooCommerce abandoned cart plugin free, Abandoned cart WooCommerce plugin
|
5 |
Author URI: https://www.tychesoftwares.com/
|
6 |
Requires at least: 1.3
|
7 |
+
Tested up to: 6.0.1
|
8 |
Stable tag: trunk
|
9 |
Requires PHP: 5.6
|
10 |
License: GPLv2 or late
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
Donate link: https://www.paypal.me/TycheSoftwares
|
13 |
|
|
|
|
|
14 |
== Description ==
|
15 |
|
16 |
+
### Best FREE abandoned cart WooCommerce plugin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
+
According to experts, the average cart abandonment rate is around 70% to 75%. The reason for cart abandonment is different for each industry. If you want a rock-solid WooCommerce cart abandonment plugin that ticks all boxes in your [cart abandonment strategy](https://www.tychesoftwares.com/abandoned-cart-strategy/), the Abandoned Cart Lite for WooCommerce is the one for you.
|
19 |
|
20 |
+
The FREE Abandoned Cart Lite for WooCommerce is bundled with all the essential features you need for abandoned cart recovery.
|
21 |
|
22 |
+
### Abandoned Cart Lite for WooCommerce Features
|
23 |
|
24 |
+
* Check if the cart is abandoned by the guest client or logged in user
|
25 |
+
* Tracking percentage of recovery done
|
26 |
+
* Send a reminder email within a few minutes after the cart gets abandoned
|
27 |
+
* Abandoned cart templates for quick setup
|
28 |
+
* Copy HTML from anywhere & create templates using the powerful Rich Text Editor
|
29 |
+
* A handy report showing the number of times a product was abandoned and recovered
|
30 |
+
* Seven merge codes are available to help you send PERSONALIZED reminder emails
|
31 |
|
32 |
+
> **This plugin works as described: the lite version doesn’t cut down in functionality. You can have your orders recovered and save on sales. Depending on what you are selling, this can be a few orders to justify ordering the full package – I’m only a few away!**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
+
> **Very recommended!**
|
35 |
+
> **- [jaysnl](https://wordpress.org/support/topic/great-support-and-value-buy-it/)**
|
36 |
|
37 |
+
The FREE WooCommerce abandoned cart plugin gives you the essential options to recover the customers. But if you want more powerful Abandoned cart plugin options for **WooCommerce cart abandonment recovery**, the Abandoned Cart Pro for WooCommerce will be the best option for you.
|
38 |
|
39 |
+
### Abandoned Cart Pro for WooCommerce Features
|
|
|
40 |
|
41 |
+
The [Abandoned Cart Pro for WooCommerce](http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite) gives 25+ features to have a better insight on cart abandonment and options to bring in the customers.
|
42 |
|
43 |
+
Experience how the Abandoned Cart WooCommerce recovery plugin works - [Live Demo](https://demo.tychesoftwares.com/woo_ac_demo/?post_type=product)
|
44 |
+
Experience the user-friendly WordPress admin dashboard feature of the plugin - [Admin Demo](https://demo.tychesoftwares.com/woo_ac_demo/wp-admin/)
|
45 |
|
46 |
+
* Capture emails when Add to Cart is clicked
|
47 |
+
* Neat Dashboard to have a quick overview of the number of abandoned and recovered orders
|
48 |
+
* Automatically delete abandoned orders after a particular number of days
|
49 |
+
* Generating and assigning coupon codes to abandoned cart reminder emails
|
50 |
+
* Tracking Coupon Code Used & Coupon Status
|
51 |
+
* Exit-Intent popup to prevent customers from abandoning the cart before they leave the site
|
52 |
+
* Send automated abandoned cart notifications via Messenger, SMS, and Email in a set time interval for better results.
|
53 |
|
54 |
+
[youtube https://youtu.be/BemNllbQW1c]
|
55 |
|
56 |
+
Take a look at our complete [Abandoned cart Lite Vs Abandoned Cart Pro comparison](https://www.tychesoftwares.com/differences-between-pro-and-lite-versions-of-abandoned-cart-for-woocommerce-plugin/?utm_source=wprepo&utm_medium=prolink&utm_campaign=AbandonedCartLite) to get a clear idea of which version best suits your needs. The pro version of the **Abandoned cart WooCommerce plugin** is equipped with all **cart abandonment solutions** to make it a perfect plugin that you all need
|
57 |
|
58 |
+
> **I’m using the plugin on my shop. Installation is very easy and it works great. I’ve already recovered some orders, it doesn’t cost any effort.**
|
59 |
|
60 |
+
> **Support is fast and extensive**.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
+
> -[bertkat](https://wordpress.org/support/topic/easy-money/)
|
63 |
|
|
|
64 |
|
65 |
+
### Abandoned Cart for WooCommerce Team Promise.
|
66 |
|
67 |
+
Whether you are an Abandoned Cart free version user or a pro user, our support team is always there to help you. Feel free to contact us, and also, please share your review & rate us a **FIVE STAR rating** to help fellow WordPress users try our plugins.
|
68 |
|
69 |
+
### About Us
|
70 |
|
71 |
+
We build WordPress plugins for WooCommerce that help store owners increase their sales. We have a portfolio of **12+ Premium WooCommerce plugins with a highly focused niche**. We are committed to providing top-notch services to our customers through our products & team.
|
72 |
|
73 |
+
[Get Access To All Our Plugins](https://www.tychesoftwares.com/store/premium-plugins/all-pass-access/)
|
74 |
|
|
|
75 |
|
76 |
**[Documentation](https://www.tychesoftwares.com/docs/docs/abandoned-cart-for-woocommerce-lite/?utm_source=wprepo&utm_medium=link&utm_campaign=AbandonedCartLite "Documentation")**
|
77 |
|
155 |
6. Product Report Tab.
|
156 |
|
157 |
== Changelog ==
|
158 |
+
= 5.13.0 ( 23.08.2022 ) =
|
159 |
+
* Tweak - The plugin will now delete carts older than 365 days to ensure performance is not affected.
|
160 |
+
* Tweak - Added a email type column in email templates database table. This will not result in any frontend changes for reminder email templates.
|
161 |
+
* Tweak - Added hooks to change the sender and recipient email address for order recovery notifications.
|
162 |
+
* Tweak - Added a hook to allow the site admin to change the cart recovery URL in reminder emails.
|
163 |
+
* Tweak - Added hooks to modify the cart table in reminder emails.
|
164 |
+
* Tweak - Performance improvements have been added in the action scheduler code run every 15 mins.
|
165 |
+
* Tweak - Added a hook to change the URL the user is redirected to when unsubscribing from reminder emails.
|
166 |
+
* Tweak - Updated the data tracked and sent from user sites for better data analysis and user behaviour.
|
167 |
+
* Fix - From email address and user name is taken from WP Settings instead of plugin when WC template style headers are enabled.
|
168 |
+
* Fix - WP Multisite installation compatibility.
|
169 |
+
* Fix - An extra https:// was being added to cart recovery links in reminder emails occassionaly.
|
170 |
+
* Fix - A fatal error was observed on rare occassions on the plugin dashboard.
|
171 |
+
* Fix - A fatal error was observed on the Product Report tab.
|
172 |
+
* Fix - Orphan record were being left by the plugin in the options table on uninstalling.
|
173 |
+
|
174 |
= 5.12.0 ( 08.02.2022 ) =
|
175 |
* Enhancement - Introduced 2 new webhooks that allows the admin to send cart abandonment and recovery data to delivery URLs.
|
176 |
* Tweak - Introduced the ability to enable/disable GDPR consent.
|
@@ -38,6 +38,8 @@ if ( is_multisite() ) { // Multisite.
|
|
38 |
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
39 |
$wpdb->get_results( 'DROP TABLE ' . $sub_site_prefix . 'ac_guest_abandoned_cart_history_lite' ); //phpcs:ignore
|
40 |
|
|
|
|
|
41 |
delete_blog_option( $blog_id_number, 'woocommerce_ac_email_body' );
|
42 |
delete_blog_option( $blog_id_number, 'ac_lite_cart_abandoned_time' );
|
43 |
delete_blog_option( $blog_id_number, 'ac_lite_email_admin_on_recovery' );
|
@@ -73,6 +75,12 @@ if ( is_multisite() ) { // Multisite.
|
|
73 |
delete_blog_option( $blog_id_number, 'wcal_previous_version' );
|
74 |
delete_blog_option( $blog_id_number, 'wcal_gdpr_consent_migrated' );
|
75 |
delete_blog_option( $blog_id_number, 'wcal_enable_gdpr_consent' );
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
} else {
|
77 |
|
78 |
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
@@ -92,6 +100,8 @@ if ( is_multisite() ) { // Multisite.
|
|
92 |
|
93 |
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
94 |
$wpdb->get_results( "DELETE FROM `$wpdb->prefix" . "usermeta` WHERE meta_key = '_woocommerce_ac_modified_cart'" ); //phpcs:ignore
|
|
|
|
|
95 |
}
|
96 |
}
|
97 |
} else { // Single site.
|
@@ -113,6 +123,8 @@ if ( is_multisite() ) { // Multisite.
|
|
113 |
|
114 |
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
115 |
$wpdb->get_results( "DELETE FROM `$wpdb->prefix" . "usermeta` WHERE meta_key = '_woocommerce_ac_modified_cart'" ); //phpcs:ignore
|
|
|
|
|
116 |
}
|
117 |
|
118 |
delete_option( 'woocommerce_ac_email_body' );
|
@@ -151,3 +163,9 @@ delete_option( 'wcal_previous_version' );
|
|
151 |
|
152 |
delete_option( 'wcal_gdpr_consent_migrated' );
|
153 |
delete_option( 'wcal_enable_gdpr_consent' );
|
|
|
|
|
|
|
|
|
|
|
|
38 |
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
39 |
$wpdb->get_results( 'DROP TABLE ' . $sub_site_prefix . 'ac_guest_abandoned_cart_history_lite' ); //phpcs:ignore
|
40 |
|
41 |
+
$wpdb->query( "DELETE FROM `$sub_site_prefix" . "options` WHERE option_name LIKE 'wcal_template_%'" ); // phpcs:ignore
|
42 |
+
|
43 |
delete_blog_option( $blog_id_number, 'woocommerce_ac_email_body' );
|
44 |
delete_blog_option( $blog_id_number, 'ac_lite_cart_abandoned_time' );
|
45 |
delete_blog_option( $blog_id_number, 'ac_lite_email_admin_on_recovery' );
|
75 |
delete_blog_option( $blog_id_number, 'wcal_previous_version' );
|
76 |
delete_blog_option( $blog_id_number, 'wcal_gdpr_consent_migrated' );
|
77 |
delete_blog_option( $blog_id_number, 'wcal_enable_gdpr_consent' );
|
78 |
+
delete_blog_option( $blog_id_number, 'wcal_email_type_setup' );
|
79 |
+
delete_blog_option( $blog_id_number, 'wcal_add_utm_to_links' );
|
80 |
+
delete_blog_option( $blog_id_number, 'wcal_delete_coupon_data' );
|
81 |
+
delete_blog_option( $blog_id_number, 'wcal_gdpr_allow_opt_out' );
|
82 |
+
delete_blog_option( $blog_id_number, 'wcal_gdpr_opt_out_message' );
|
83 |
+
delete_blog_option( $blog_id_number, 'wcal_guest_user_id_altered' );
|
84 |
} else {
|
85 |
|
86 |
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
100 |
|
101 |
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
102 |
$wpdb->get_results( "DELETE FROM `$wpdb->prefix" . "usermeta` WHERE meta_key = '_woocommerce_ac_modified_cart'" ); //phpcs:ignore
|
103 |
+
|
104 |
+
$wpdb->query( "DELETE FROM `$wpdb->prefix" . "options` WHERE option_name LIKE 'wcal_template_%'" ); // phpcs:ignore
|
105 |
}
|
106 |
}
|
107 |
} else { // Single site.
|
123 |
|
124 |
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
125 |
$wpdb->get_results( "DELETE FROM `$wpdb->prefix" . "usermeta` WHERE meta_key = '_woocommerce_ac_modified_cart'" ); //phpcs:ignore
|
126 |
+
|
127 |
+
$wpdb->query( "DELETE FROM `$wpdb->prefix" . "options` WHERE option_name LIKE 'wcal_template_%'" ); // phpcs:ignore
|
128 |
}
|
129 |
|
130 |
delete_option( 'woocommerce_ac_email_body' );
|
163 |
|
164 |
delete_option( 'wcal_gdpr_consent_migrated' );
|
165 |
delete_option( 'wcal_enable_gdpr_consent' );
|
166 |
+
delete_option( 'wcal_email_type_setup' );
|
167 |
+
delete_option( 'wcal_add_utm_to_links' );
|
168 |
+
delete_option( 'wcal_delete_coupon_data' );
|
169 |
+
delete_option( 'wcal_gdpr_allow_opt_out' );
|
170 |
+
delete_option( 'wcal_gdpr_opt_out_message' );
|
171 |
+
delete_option( 'wcal_guest_user_id_altered' );
|
@@ -3,14 +3,14 @@
|
|
3 |
* Plugin Name: Abandoned Cart Lite for WooCommerce
|
4 |
* Plugin URI: http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro
|
5 |
* Description: This plugin captures abandoned carts by logged-in users & emails them about it. <strong><a href="http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro">Click here to get the PRO Version.</a></strong>
|
6 |
-
* Version: 5.
|
7 |
* Author: Tyche Softwares
|
8 |
* Author URI: http://www.tychesoftwares.com/
|
9 |
* Text Domain: woocommerce-abandoned-cart
|
10 |
* Domain Path: /i18n/languages/
|
11 |
* Requires PHP: 5.6
|
12 |
* WC requires at least: 4.0.0
|
13 |
-
* WC tested up to: 6.
|
14 |
*
|
15 |
* @package Abandoned-Cart-Lite-for-WooCommerce
|
16 |
*/
|
@@ -124,7 +124,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
124 |
}
|
125 |
|
126 |
if ( ! defined( 'WCAL_PLUGIN_VERSION' ) ) {
|
127 |
-
define( 'WCAL_PLUGIN_VERSION', '5.
|
128 |
}
|
129 |
|
130 |
if ( ! defined( 'WCAL_PLUGIN_PATH' ) ) {
|
@@ -268,6 +268,8 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
268 |
add_action( 'woocommerce_before_cart_table', array( 'wcal_common', 'wcal_apply_direct_coupon_code' ) );
|
269 |
// Add coupon when user views checkout page (would not be added otherwise, unless user views cart first).
|
270 |
add_action( 'woocommerce_before_checkout_form', array( 'wcal_common', 'wcal_apply_direct_coupon_code' ) );
|
|
|
|
|
271 |
}
|
272 |
|
273 |
/**
|
@@ -602,6 +604,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
602 |
$wpdb->query( // phpcs:ignore
|
603 |
"CREATE TABLE IF NOT EXISTS $table_name (
|
604 |
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
|
605 |
`subject` text NOT NULL,
|
606 |
`body` mediumtext NOT NULL,
|
607 |
`is_active` enum('0','1') NOT NULL,
|
@@ -1082,9 +1085,10 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
1082 |
*/
|
1083 |
public static function wcal_delete_days_validation( $input ) {
|
1084 |
$output = '';
|
1085 |
-
if (
|
1086 |
$output = stripslashes( $input );
|
1087 |
} else {
|
|
|
1088 |
add_settings_error( 'ac_lite_delete_abandoned_order_days', 'error found', __( 'Automatically Delete Abandoned Orders after X days has to be greater than 0.', 'woocommerce-abandoned-cart' ) );
|
1089 |
}
|
1090 |
return $output;
|
@@ -1098,7 +1102,10 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
1098 |
*/
|
1099 |
public static function wcal_delete_abandoned_orders_days_callback( $args ) {
|
1100 |
// First, we read the option.
|
1101 |
-
$delete_abandoned_order_days = get_option( 'ac_lite_delete_abandoned_order_days' );
|
|
|
|
|
|
|
1102 |
// Next, we update the name attribute to access this element's ID in the context of the display options array.
|
1103 |
// We also access the show_header element of the options collection in the call to the checked() helper function.
|
1104 |
printf(
|
@@ -1758,7 +1765,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
1758 |
);
|
1759 |
echo esc_html( 'Unsubscribed Successfully' );
|
1760 |
sleep( 2 );
|
1761 |
-
$url = get_option( '
|
1762 |
?>
|
1763 |
<script>
|
1764 |
location.href = "<?php echo esc_url( $url ); ?>";
|
@@ -1785,7 +1792,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
1785 |
|
1786 |
$track_link = isset( $_GET['wcal_action'] ) ? sanitize_text_field( wp_unslash( $_GET['wcal_action'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification
|
1787 |
|
1788 |
-
if ( 'track_links' === $track_link ||
|
1789 |
if ( '' === session_id() ) {
|
1790 |
// session has not started.
|
1791 |
session_start();
|
@@ -1834,7 +1841,7 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
1834 |
|
1835 |
$url_pos = strpos( $link_decode, '=' );
|
1836 |
++$url_pos;
|
1837 |
-
$url
|
1838 |
|
1839 |
wcal_common::wcal_set_cart_session( 'abandoned_cart_id_lite', $abandoned_id );
|
1840 |
set_transient( 'wcal_abandoned_id', $abandoned_id, 5 );
|
@@ -2807,15 +2814,31 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
2807 |
$day_or_hour = isset( $_POST['day_or_hour'] ) ? trim( sanitize_text_field( wp_unslash( $_POST['day_or_hour'] ) ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification
|
2808 |
$is_wc_template = empty( $_POST['is_wc_template'] ) ? '0' : '1'; // phpcs:ignore WordPress.Security.NonceVerification
|
2809 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2810 |
if ( isset( $_POST['ac_settings_frm'] ) && 'save' === sanitize_text_field( wp_unslash( $_POST['ac_settings_frm'] ) ) ) { // phpcs:ignore
|
2811 |
$default_value = 0;
|
2812 |
$coupon_code_id = isset( $_POST['coupon_ids'][0] ) ? sanitize_text_field( wp_unslash( implode( ',', $_POST['coupon_ids'] ) ) ) : ''; // phpcs:ignore
|
2813 |
$unique_coupon = ( empty( $_POST['unique_coupon'] ) ) ? '0' : '1'; // phpcs:ignore WordPress.Security.NonceVerification
|
2814 |
$coupon_code_options = self::wcal_coupon_options();
|
|
|
2815 |
|
2816 |
$insert_template_successfuly = $wpdb->query( //phpcs:ignore
|
2817 |
$wpdb->prepare(
|
2818 |
-
'INSERT INTO `' . $wpdb->prefix . 'ac_email_templates_lite` (subject, body, frequency, day_or_hour, template_name, is_wc_template, default_template, wc_email_header, coupon_code, individual_use, generate_unique_coupon_code, discount, discount_type, discount_shipping, discount_expiry ) VALUES ( %s, %s, %d, %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s )',
|
|
|
2819 |
$woocommerce_ac_email_subject,
|
2820 |
$woocommerce_ac_email_body,
|
2821 |
$email_frequency,
|
@@ -3932,6 +3955,34 @@ if ( ! class_exists( 'woocommerce_abandon_cart_lite' ) ) {
|
|
3932 |
}
|
3933 |
wp_die();
|
3934 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3935 |
/**
|
3936 |
* It will replace the test email data with the static content.
|
3937 |
*
|
3 |
* Plugin Name: Abandoned Cart Lite for WooCommerce
|
4 |
* Plugin URI: http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro
|
5 |
* Description: This plugin captures abandoned carts by logged-in users & emails them about it. <strong><a href="http://www.tychesoftwares.com/store/premium-plugins/woocommerce-abandoned-cart-pro">Click here to get the PRO Version.</a></strong>
|
6 |
+
* Version: 5.13.0
|
7 |
* Author: Tyche Softwares
|
8 |
* Author URI: http://www.tychesoftwares.com/
|
9 |
* Text Domain: woocommerce-abandoned-cart
|
10 |
* Domain Path: /i18n/languages/
|
11 |
* Requires PHP: 5.6
|
12 |
* WC requires at least: 4.0.0
|
13 |
+
* WC tested up to: 6.8.2
|
14 |
*
|
15 |
* @package Abandoned-Cart-Lite-for-WooCommerce
|
16 |
*/
|
124 |
}
|
125 |
|
126 |
if ( ! defined( 'WCAL_PLUGIN_VERSION' ) ) {
|
127 |
+
define( 'WCAL_PLUGIN_VERSION', '5.13.0' );
|
128 |
}
|
129 |
|
130 |
if ( ! defined( 'WCAL_PLUGIN_PATH' ) ) {
|
268 |
add_action( 'woocommerce_before_cart_table', array( 'wcal_common', 'wcal_apply_direct_coupon_code' ) );
|
269 |
// Add coupon when user views checkout page (would not be added otherwise, unless user views cart first).
|
270 |
add_action( 'woocommerce_before_checkout_form', array( 'wcal_common', 'wcal_apply_direct_coupon_code' ) );
|
271 |
+
add_filter( 'woocommerce_email_from_address', array( __CLASS__, 'wcal_from_address_for_emails' ), 10, 3 );
|
272 |
+
add_filter( 'woocommerce_email_from_name', array( __CLASS__, 'wcal_from_name_for_emails' ), 10, 3 );
|
273 |
}
|
274 |
|
275 |
/**
|
604 |
$wpdb->query( // phpcs:ignore
|
605 |
"CREATE TABLE IF NOT EXISTS $table_name (
|
606 |
`id` int(11) NOT NULL AUTO_INCREMENT,
|
607 |
+
`email_type` varchar(50) NOT NULL,
|
608 |
`subject` text NOT NULL,
|
609 |
`body` mediumtext NOT NULL,
|
610 |
`is_active` enum('0','1') NOT NULL,
|
1085 |
*/
|
1086 |
public static function wcal_delete_days_validation( $input ) {
|
1087 |
$output = '';
|
1088 |
+
if ( is_numeric( $input ) && $input > 0 ) {
|
1089 |
$output = stripslashes( $input );
|
1090 |
} else {
|
1091 |
+
$output = '365';
|
1092 |
add_settings_error( 'ac_lite_delete_abandoned_order_days', 'error found', __( 'Automatically Delete Abandoned Orders after X days has to be greater than 0.', 'woocommerce-abandoned-cart' ) );
|
1093 |
}
|
1094 |
return $output;
|
1102 |
*/
|
1103 |
public static function wcal_delete_abandoned_orders_days_callback( $args ) {
|
1104 |
// First, we read the option.
|
1105 |
+
$delete_abandoned_order_days = get_option( 'ac_lite_delete_abandoned_order_days', '365' );
|
1106 |
+
if ( '' === $delete_abandoned_order_days ) {
|
1107 |
+
$delete_abandoned_order_days = '365';
|
1108 |
+
}
|
1109 |
// Next, we update the name attribute to access this element's ID in the context of the display options array.
|
1110 |
// We also access the show_header element of the options collection in the call to the checked() helper function.
|
1111 |
printf(
|
1765 |
);
|
1766 |
echo esc_html( 'Unsubscribed Successfully' );
|
1767 |
sleep( 2 );
|
1768 |
+
$url = apply_filters( 'wcal_unsubscribe_redirect', get_option( 'home' ) );
|
1769 |
?>
|
1770 |
<script>
|
1771 |
location.href = "<?php echo esc_url( $url ); ?>";
|
1792 |
|
1793 |
$track_link = isset( $_GET['wcal_action'] ) ? sanitize_text_field( wp_unslash( $_GET['wcal_action'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification
|
1794 |
|
1795 |
+
if ( 'track_links' === $track_link || 'checkout_link' === $track_link ) {
|
1796 |
if ( '' === session_id() ) {
|
1797 |
// session has not started.
|
1798 |
session_start();
|
1841 |
|
1842 |
$url_pos = strpos( $link_decode, '=' );
|
1843 |
++$url_pos;
|
1844 |
+
$url = substr( $link_decode, $url_pos );
|
1845 |
|
1846 |
wcal_common::wcal_set_cart_session( 'abandoned_cart_id_lite', $abandoned_id );
|
1847 |
set_transient( 'wcal_abandoned_id', $abandoned_id, 5 );
|
2814 |
$day_or_hour = isset( $_POST['day_or_hour'] ) ? trim( sanitize_text_field( wp_unslash( $_POST['day_or_hour'] ) ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification
|
2815 |
$is_wc_template = empty( $_POST['is_wc_template'] ) ? '0' : '1'; // phpcs:ignore WordPress.Security.NonceVerification
|
2816 |
|
2817 |
+
// If the link merge tags are prefixed with http://|https:// please remove it.
|
2818 |
+
$rectify_links = array(
|
2819 |
+
'http://{{cart.link}}',
|
2820 |
+
'https://{{cart.link}}',
|
2821 |
+
'http://{{cart.unsubscribe}}',
|
2822 |
+
'https://{{cart.unsubscribe}}',
|
2823 |
+
'http://{{shop.url}}',
|
2824 |
+
'https://{{shop.url}}',
|
2825 |
+
);
|
2826 |
+
foreach ( $rectify_links as $merge_tag ) {
|
2827 |
+
$start_tag = stripos( $merge_tag, '{{' );
|
2828 |
+
$new_tag = substr( $merge_tag, $start_tag );
|
2829 |
+
$woocommerce_ac_email_body = str_ireplace( $merge_tag, $new_tag, $woocommerce_ac_email_body );
|
2830 |
+
}
|
2831 |
if ( isset( $_POST['ac_settings_frm'] ) && 'save' === sanitize_text_field( wp_unslash( $_POST['ac_settings_frm'] ) ) ) { // phpcs:ignore
|
2832 |
$default_value = 0;
|
2833 |
$coupon_code_id = isset( $_POST['coupon_ids'][0] ) ? sanitize_text_field( wp_unslash( implode( ',', $_POST['coupon_ids'] ) ) ) : ''; // phpcs:ignore
|
2834 |
$unique_coupon = ( empty( $_POST['unique_coupon'] ) ) ? '0' : '1'; // phpcs:ignore WordPress.Security.NonceVerification
|
2835 |
$coupon_code_options = self::wcal_coupon_options();
|
2836 |
+
$email_type = 'abandoned_cart_email';
|
2837 |
|
2838 |
$insert_template_successfuly = $wpdb->query( //phpcs:ignore
|
2839 |
$wpdb->prepare(
|
2840 |
+
'INSERT INTO `' . $wpdb->prefix . 'ac_email_templates_lite` (email_type, subject, body, frequency, day_or_hour, template_name, is_wc_template, default_template, wc_email_header, coupon_code, individual_use, generate_unique_coupon_code, discount, discount_type, discount_shipping, discount_expiry ) VALUES ( %s, %s, %s, %d, %s, %s, %s, %d, %s, %s, %s, %s, %s, %s, %s, %s )',
|
2841 |
+
$email_type,
|
2842 |
$woocommerce_ac_email_subject,
|
2843 |
$woocommerce_ac_email_body,
|
2844 |
$email_frequency,
|
3955 |
}
|
3956 |
wp_die();
|
3957 |
}
|
3958 |
+
|
3959 |
+
/**
|
3960 |
+
* Set up from email address in emails sent by our plugin when WC template style is ON.
|
3961 |
+
*
|
3962 |
+
* @param str $wp_admin_address - From email address set up in WP.
|
3963 |
+
* @param object $email - Email object.
|
3964 |
+
* @param str $from_email - Email Address passed in.
|
3965 |
+
*
|
3966 |
+
* @since 5.13.0
|
3967 |
+
*/
|
3968 |
+
public static function wcal_from_address_for_emails( $wp_admin_address, $email, $from_email ) {
|
3969 |
+
$from_address = '' == $email->title ? get_option( 'wcal_from_email' ) : $wp_admin_address; // phpcs:ignore
|
3970 |
+
return $from_address;
|
3971 |
+
}
|
3972 |
+
|
3973 |
+
/**
|
3974 |
+
* Set up from name in emails sent by our plugin when WC template style is ON.
|
3975 |
+
*
|
3976 |
+
* @param str $wp_admin_name - From name set up in WP.
|
3977 |
+
* @param object $email - Email object.
|
3978 |
+
* @param str $from_name_default - Name passed in.
|
3979 |
+
*
|
3980 |
+
* @since 5.13.0
|
3981 |
+
*/
|
3982 |
+
public static function wcal_from_name_for_emails( $wp_admin_name, $email, $from_name_default ) {
|
3983 |
+
$from_name = '' == $email->title ? get_option( 'wcal_from_name' ) : $wp_admin_name; // phpcs:ignore
|
3984 |
+
return $from_name;
|
3985 |
+
}
|
3986 |
/**
|
3987 |
* It will replace the test email data with the static content.
|
3988 |
*
|