Version Description
Download this release
Release Info
Developer | sandesh055 |
Plugin | WooCommerce Cart Abandonment Recovery |
Version | 1.1.7 |
Comparing to | |
See all releases |
Code changes from version 1.1.6 to 1.1.7
- changelog.txt +7 -0
- classes/class-cartflows-ca-loader.php +9 -9
- classes/class-cartflows-ca-settings.php +32 -32
- languages/{cartflows-ca.pot → woo-cart-abandonment-recovery.pot} +42 -37
- modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php +14 -18
- modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php +91 -36
- modules/cart-abandonment/class-cartflows-ca-email-templates-table.php +8 -8
- modules/cart-abandonment/class-cartflows-ca-email-templates.php +19 -19
- modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php +26 -26
- modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php +13 -13
- modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-tabs.php +1 -1
- readme.txt +31 -18
- woo-cart-abandonment-recovery.php +2 -2
changelog.txt
CHANGED
@@ -1,3 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
Version 1.1.6 - Friday, 19th July 2019
|
2 |
- New: Bundled product support for email checkout URL.
|
3 |
- Improvement: Added phone number and address while triggering the to webhook.
|
1 |
+
Version 1.1.7 - Monday, 12th August 2019
|
2 |
+
- New: Filter added to show the cart total inside the email template.
|
3 |
+
- New: Filter added to change the cart abandoned time.
|
4 |
+
- Improvement: Order tracking logic updated for automated payments.
|
5 |
+
- Improvement: Update report dashboard DateTime format to WordPress format.
|
6 |
+
- Fix: Broken image in the email template.
|
7 |
+
|
8 |
Version 1.1.6 - Friday, 19th July 2019
|
9 |
- New: Bundled product support for email checkout URL.
|
10 |
- Improvement: Added phone number and address while triggering the to webhook.
|
classes/class-cartflows-ca-loader.php
CHANGED
@@ -77,7 +77,7 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
|
|
77 |
define( 'CARTFLOWS_CA_BASE', plugin_basename( CARTFLOWS_CA_FILE ) );
|
78 |
define( 'CARTFLOWS_CA_DIR', plugin_dir_path( CARTFLOWS_CA_FILE ) );
|
79 |
define( 'CARTFLOWS_CA_URL', plugins_url( '/', CARTFLOWS_CA_FILE ) );
|
80 |
-
define( 'CARTFLOWS_CA_VER', '1.1.
|
81 |
define( 'CARTFLOWS_CA_SLUG', 'cartflows_ca' );
|
82 |
|
83 |
define( 'CARTFLOWS_CA_CART_ABANDONMENT_TABLE', 'cartflows_ca_cart_abandonment' );
|
@@ -131,7 +131,7 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
|
|
131 |
|
132 |
$class = 'notice notice-error';
|
133 |
/* translators: %s: html tags */
|
134 |
-
$message = sprintf( __( 'The %1$sWooCommerce Cart Abandonment Recovery%2$s plugin requires %1$sWooCommerce%2$s plugin installed & activated.', '
|
135 |
|
136 |
$plugin = 'woocommerce/woocommerce.php';
|
137 |
|
@@ -141,7 +141,7 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
|
|
141 |
}
|
142 |
|
143 |
$action_url = wp_nonce_url( 'plugins.php?action=activate&plugin=' . $plugin . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $plugin );
|
144 |
-
$button_label = __( 'Activate WooCommerce', '
|
145 |
|
146 |
} else {
|
147 |
if ( ! current_user_can( 'install_plugins' ) ) {
|
@@ -149,7 +149,7 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
|
|
149 |
}
|
150 |
|
151 |
$action_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=woocommerce' ), 'install-plugin_woocommerce' );
|
152 |
-
$button_label = __( 'Install WooCommerce', '
|
153 |
}
|
154 |
|
155 |
$button = '<p><a href="' . $action_url . '" class="button-primary">' . $button_label . '</a></p><p></p>';
|
@@ -249,8 +249,8 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
|
|
249 |
* Uses get_user_locale()` in WordPress 4.7 or greater,
|
250 |
* otherwise uses `get_locale()`.
|
251 |
*/
|
252 |
-
$locale = apply_filters( 'plugin_locale', $get_locale, '
|
253 |
-
$mofile = sprintf( '%1$s-%2$s.mo', '
|
254 |
|
255 |
// Setup paths to current locale file.
|
256 |
$mofile_local = $lang_dir . $mofile;
|
@@ -258,13 +258,13 @@ if ( ! class_exists( 'CARTFLOWS_CA_Loader' ) ) {
|
|
258 |
|
259 |
if ( file_exists( $mofile_global ) ) {
|
260 |
// Look in global /wp-content/languages/%plugin-folder-name%/ folder.
|
261 |
-
load_textdomain( '
|
262 |
} elseif ( file_exists( $mofile_local ) ) {
|
263 |
// Look in local /wp-content/plugins/%plugin-folder-name%/languages/ folder.
|
264 |
-
load_textdomain( '
|
265 |
} else {
|
266 |
// Load the default language files.
|
267 |
-
load_plugin_textdomain( '
|
268 |
}
|
269 |
}
|
270 |
/**
|
77 |
define( 'CARTFLOWS_CA_BASE', plugin_basename( CARTFLOWS_CA_FILE ) );
|
78 |
define( 'CARTFLOWS_CA_DIR', plugin_dir_path( CARTFLOWS_CA_FILE ) );
|
79 |
define( 'CARTFLOWS_CA_URL', plugins_url( '/', CARTFLOWS_CA_FILE ) );
|
80 |
+
define( 'CARTFLOWS_CA_VER', '1.1.7' );
|
81 |
define( 'CARTFLOWS_CA_SLUG', 'cartflows_ca' );
|
82 |
|
83 |
define( 'CARTFLOWS_CA_CART_ABANDONMENT_TABLE', 'cartflows_ca_cart_abandonment' );
|
131 |
|
132 |
$class = 'notice notice-error';
|
133 |
/* translators: %s: html tags */
|
134 |
+
$message = sprintf( __( 'The %1$sWooCommerce Cart Abandonment Recovery%2$s plugin requires %1$sWooCommerce%2$s plugin installed & activated.', 'woo-cart-abandonment-recovery' ), '<strong>', '</strong>' );
|
135 |
|
136 |
$plugin = 'woocommerce/woocommerce.php';
|
137 |
|
141 |
}
|
142 |
|
143 |
$action_url = wp_nonce_url( 'plugins.php?action=activate&plugin=' . $plugin . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $plugin );
|
144 |
+
$button_label = __( 'Activate WooCommerce', 'woo-cart-abandonment-recovery' );
|
145 |
|
146 |
} else {
|
147 |
if ( ! current_user_can( 'install_plugins' ) ) {
|
149 |
}
|
150 |
|
151 |
$action_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=woocommerce' ), 'install-plugin_woocommerce' );
|
152 |
+
$button_label = __( 'Install WooCommerce', 'woo-cart-abandonment-recovery' );
|
153 |
}
|
154 |
|
155 |
$button = '<p><a href="' . $action_url . '" class="button-primary">' . $button_label . '</a></p><p></p>';
|
249 |
* Uses get_user_locale()` in WordPress 4.7 or greater,
|
250 |
* otherwise uses `get_locale()`.
|
251 |
*/
|
252 |
+
$locale = apply_filters( 'plugin_locale', $get_locale, 'woo-cart-abandonment-recovery' );
|
253 |
+
$mofile = sprintf( '%1$s-%2$s.mo', 'woo-cart-abandonment-recovery', $locale );
|
254 |
|
255 |
// Setup paths to current locale file.
|
256 |
$mofile_local = $lang_dir . $mofile;
|
258 |
|
259 |
if ( file_exists( $mofile_global ) ) {
|
260 |
// Look in global /wp-content/languages/%plugin-folder-name%/ folder.
|
261 |
+
load_textdomain( 'woo-cart-abandonment-recovery', $mofile_global );
|
262 |
} elseif ( file_exists( $mofile_local ) ) {
|
263 |
// Look in local /wp-content/plugins/%plugin-folder-name%/languages/ folder.
|
264 |
+
load_textdomain( 'woo-cart-abandonment-recovery', $mofile_local );
|
265 |
} else {
|
266 |
// Load the default language files.
|
267 |
+
load_plugin_textdomain( 'woo-cart-abandonment-recovery', false, $lang_dir );
|
268 |
}
|
269 |
}
|
270 |
/**
|
classes/class-cartflows-ca-settings.php
CHANGED
@@ -50,18 +50,18 @@ class Cartflows_Ca_Settings {
|
|
50 |
// Start: Settings for cart abandonment.
|
51 |
add_settings_section(
|
52 |
WCF_CA_GENERAL_SETTINGS_SECTION,
|
53 |
-
__( 'Cart Abandonment Settings', '
|
54 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
55 |
WCF_CA_PAGE_NAME
|
56 |
);
|
57 |
|
58 |
add_settings_field(
|
59 |
'wcf_ca_status',
|
60 |
-
__( 'Enable Tracking', '
|
61 |
array( $this, 'wcf_ca_status_callback' ),
|
62 |
WCF_CA_PAGE_NAME,
|
63 |
WCF_CA_GENERAL_SETTINGS_SECTION,
|
64 |
-
array( __( 'Start capturing abandoned carts. <br/><br/> <span class="description"><strong>Note:</strong> Cart will be considered abandoned if order is not completed in <strong>15 minutes</strong>.</span>', '
|
65 |
);
|
66 |
|
67 |
register_setting(
|
@@ -73,36 +73,36 @@ class Cartflows_Ca_Settings {
|
|
73 |
// Start: Settings for email templates.
|
74 |
add_settings_section(
|
75 |
WCF_CA_EMAIL_SETTINGS_SECTION,
|
76 |
-
__( 'Email Settings', '
|
77 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
78 |
WCF_CA_PAGE_NAME
|
79 |
);
|
80 |
|
81 |
add_settings_field(
|
82 |
'wcf_ca_from_name',
|
83 |
-
__( '"From" Name', '
|
84 |
array( $this, 'wcf_ca_from_name_callback' ),
|
85 |
WCF_CA_PAGE_NAME,
|
86 |
WCF_CA_EMAIL_SETTINGS_SECTION,
|
87 |
-
array( 'Name will appear in email sent.', '
|
88 |
);
|
89 |
|
90 |
add_settings_field(
|
91 |
'wcf_ca_from_email',
|
92 |
-
__( '"From" Address', '
|
93 |
array( $this, 'wcf_ca_from_email_callback' ),
|
94 |
WCF_CA_PAGE_NAME,
|
95 |
WCF_CA_EMAIL_SETTINGS_SECTION,
|
96 |
-
array( 'Email which send from.', '
|
97 |
);
|
98 |
|
99 |
add_settings_field(
|
100 |
'wcf_ca_reply_email',
|
101 |
-
__( '"Reply To" Address', '
|
102 |
array( $this, 'wcf_ca_reply_email_callback' ),
|
103 |
WCF_CA_PAGE_NAME,
|
104 |
WCF_CA_EMAIL_SETTINGS_SECTION,
|
105 |
-
array( 'When a user clicks reply, which email address should that reply be sent to?', '
|
106 |
);
|
107 |
|
108 |
register_setting(
|
@@ -125,20 +125,20 @@ class Cartflows_Ca_Settings {
|
|
125 |
// Start: Settings for coupon code.
|
126 |
add_settings_field(
|
127 |
'wcf_ca_zapier_tracking_status',
|
128 |
-
__( 'Enable Webhook', '
|
129 |
array( $this, 'wcf_ca_zapier_tracking_status_callback' ),
|
130 |
WCF_CA_PAGE_NAME,
|
131 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
132 |
-
array( __( 'Allows you to trigger webhook automatically upon cart abandonment and recovery.', '
|
133 |
);
|
134 |
|
135 |
add_settings_field(
|
136 |
'wcf_ca_zapier_cart_abandoned_webhook',
|
137 |
-
__( 'Webhook URL', '
|
138 |
array( $this, 'wcf_ca_zapier_cart_abandoned_webhook_callback' ),
|
139 |
WCF_CA_PAGE_NAME,
|
140 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
141 |
-
array( '', '
|
142 |
);
|
143 |
|
144 |
register_setting(
|
@@ -153,45 +153,45 @@ class Cartflows_Ca_Settings {
|
|
153 |
|
154 |
add_settings_section(
|
155 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
156 |
-
__( 'Coupon Code Settings', '
|
157 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
158 |
WCF_CA_PAGE_NAME
|
159 |
);
|
160 |
|
161 |
add_settings_field(
|
162 |
'wcf_ca_coupon_code_status',
|
163 |
-
__( 'Create Coupon Code', '
|
164 |
array( $this, 'wcf_ca_coupon_code_status_callback' ),
|
165 |
WCF_CA_PAGE_NAME,
|
166 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
167 |
-
array( __( 'Auto-create the special coupon for the abandoned cart to send over the emails.', '
|
168 |
);
|
169 |
|
170 |
add_settings_field(
|
171 |
'wcf_ca_discount_type',
|
172 |
-
__( 'Discount Type', '
|
173 |
array( $this, 'wcf_ca_discount_type_callback' ),
|
174 |
WCF_CA_PAGE_NAME,
|
175 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
176 |
-
array( '', '
|
177 |
);
|
178 |
|
179 |
add_settings_field(
|
180 |
'wcf_ca_coupon_amount',
|
181 |
-
__( 'Coupon Amount', '
|
182 |
array( $this, 'wcf_ca_coupon_amount_callback' ),
|
183 |
WCF_CA_PAGE_NAME,
|
184 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
185 |
-
array( '', '
|
186 |
);
|
187 |
|
188 |
add_settings_field(
|
189 |
'wcf_ca_coupon_expiry',
|
190 |
-
__( 'Coupon Expires After', '
|
191 |
array( $this, 'wcf_ca_coupon_expiry_callback' ),
|
192 |
WCF_CA_PAGE_NAME,
|
193 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
194 |
-
array( '<br/><br/> <span class="description"><strong>Note: </strong> Enter zero (0) to restrict coupon from expiring.</span>', '
|
195 |
);
|
196 |
|
197 |
register_setting(
|
@@ -222,7 +222,7 @@ class Cartflows_Ca_Settings {
|
|
222 |
// Start: Settings for Zapier.
|
223 |
add_settings_section(
|
224 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
225 |
-
__( 'Webhook Settings', '
|
226 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
227 |
WCF_CA_PAGE_NAME
|
228 |
);
|
@@ -231,27 +231,27 @@ class Cartflows_Ca_Settings {
|
|
231 |
// Start: GDPR Settings.
|
232 |
add_settings_section(
|
233 |
WCF_CA_GDPR_SETTINGS_SECTION,
|
234 |
-
__( 'GDPR Settings', '
|
235 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
236 |
WCF_CA_PAGE_NAME
|
237 |
);
|
238 |
|
239 |
add_settings_field(
|
240 |
'wcf_ca_gdpr_status',
|
241 |
-
__( 'Enable GDPR Integration', '
|
242 |
array( $this, 'wcf_ca_gdpr_status_callback' ),
|
243 |
WCF_CA_PAGE_NAME,
|
244 |
WCF_CA_GDPR_SETTINGS_SECTION,
|
245 |
-
array( __( 'Ask confirmation from the user before tracking data. <br/><br/> <span class="description"><strong>Note:</strong> By checking this, it will show up confirmation text below the email id on checkout page.</span>', '
|
246 |
);
|
247 |
|
248 |
add_settings_field(
|
249 |
'wcf_ca_gdpr_message',
|
250 |
-
__( 'GDPR Message', '
|
251 |
array( $this, 'wcf_ca_gdpr_message_callback' ),
|
252 |
WCF_CA_PAGE_NAME,
|
253 |
WCF_CA_GDPR_SETTINGS_SECTION,
|
254 |
-
array( '', '
|
255 |
);
|
256 |
|
257 |
register_setting(
|
@@ -418,7 +418,7 @@ class Cartflows_Ca_Settings {
|
|
418 |
add_settings_error(
|
419 |
'wcf_ca_coupon_amount',
|
420 |
'error found',
|
421 |
-
__( 'Coupon code should be numeric and has to be greater than or equals to 1.', '
|
422 |
);
|
423 |
}
|
424 |
return $output;
|
@@ -528,7 +528,7 @@ class Cartflows_Ca_Settings {
|
|
528 |
add_settings_error(
|
529 |
'wcf_ca_from_email',
|
530 |
'error found',
|
531 |
-
__( 'Invalid email "From" address field', '
|
532 |
);
|
533 |
}
|
534 |
return sanitize_email( $input );
|
@@ -546,7 +546,7 @@ class Cartflows_Ca_Settings {
|
|
546 |
add_settings_error(
|
547 |
'wcf_ca_reply_email',
|
548 |
'error found',
|
549 |
-
__( 'Invalid email "Reply" address field', '
|
550 |
);
|
551 |
}
|
552 |
return sanitize_email( $input );
|
50 |
// Start: Settings for cart abandonment.
|
51 |
add_settings_section(
|
52 |
WCF_CA_GENERAL_SETTINGS_SECTION,
|
53 |
+
__( 'Cart Abandonment Settings', 'woo-cart-abandonment-recovery' ),
|
54 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
55 |
WCF_CA_PAGE_NAME
|
56 |
);
|
57 |
|
58 |
add_settings_field(
|
59 |
'wcf_ca_status',
|
60 |
+
__( 'Enable Tracking', 'woo-cart-abandonment-recovery' ),
|
61 |
array( $this, 'wcf_ca_status_callback' ),
|
62 |
WCF_CA_PAGE_NAME,
|
63 |
WCF_CA_GENERAL_SETTINGS_SECTION,
|
64 |
+
array( __( 'Start capturing abandoned carts. <br/><br/> <span class="description"><strong>Note:</strong> Cart will be considered abandoned if order is not completed in <strong>15 minutes</strong>.</span>', 'woo-cart-abandonment-recovery' ) )
|
65 |
);
|
66 |
|
67 |
register_setting(
|
73 |
// Start: Settings for email templates.
|
74 |
add_settings_section(
|
75 |
WCF_CA_EMAIL_SETTINGS_SECTION,
|
76 |
+
__( 'Email Settings', 'woo-cart-abandonment-recovery' ),
|
77 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
78 |
WCF_CA_PAGE_NAME
|
79 |
);
|
80 |
|
81 |
add_settings_field(
|
82 |
'wcf_ca_from_name',
|
83 |
+
__( '"From" Name', 'woo-cart-abandonment-recovery' ),
|
84 |
array( $this, 'wcf_ca_from_name_callback' ),
|
85 |
WCF_CA_PAGE_NAME,
|
86 |
WCF_CA_EMAIL_SETTINGS_SECTION,
|
87 |
+
array( 'Name will appear in email sent.', 'woo-cart-abandonment-recovery' )
|
88 |
);
|
89 |
|
90 |
add_settings_field(
|
91 |
'wcf_ca_from_email',
|
92 |
+
__( '"From" Address', 'woo-cart-abandonment-recovery' ),
|
93 |
array( $this, 'wcf_ca_from_email_callback' ),
|
94 |
WCF_CA_PAGE_NAME,
|
95 |
WCF_CA_EMAIL_SETTINGS_SECTION,
|
96 |
+
array( 'Email which send from.', 'woo-cart-abandonment-recovery' )
|
97 |
);
|
98 |
|
99 |
add_settings_field(
|
100 |
'wcf_ca_reply_email',
|
101 |
+
__( '"Reply To" Address', 'woo-cart-abandonment-recovery' ),
|
102 |
array( $this, 'wcf_ca_reply_email_callback' ),
|
103 |
WCF_CA_PAGE_NAME,
|
104 |
WCF_CA_EMAIL_SETTINGS_SECTION,
|
105 |
+
array( 'When a user clicks reply, which email address should that reply be sent to?', 'woo-cart-abandonment-recovery' )
|
106 |
);
|
107 |
|
108 |
register_setting(
|
125 |
// Start: Settings for coupon code.
|
126 |
add_settings_field(
|
127 |
'wcf_ca_zapier_tracking_status',
|
128 |
+
__( 'Enable Webhook', 'woo-cart-abandonment-recovery' ),
|
129 |
array( $this, 'wcf_ca_zapier_tracking_status_callback' ),
|
130 |
WCF_CA_PAGE_NAME,
|
131 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
132 |
+
array( __( 'Allows you to trigger webhook automatically upon cart abandonment and recovery.', 'woo-cart-abandonment-recovery' ) )
|
133 |
);
|
134 |
|
135 |
add_settings_field(
|
136 |
'wcf_ca_zapier_cart_abandoned_webhook',
|
137 |
+
__( 'Webhook URL', 'woo-cart-abandonment-recovery' ),
|
138 |
array( $this, 'wcf_ca_zapier_cart_abandoned_webhook_callback' ),
|
139 |
WCF_CA_PAGE_NAME,
|
140 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
141 |
+
array( '', 'woo-cart-abandonment-recovery' )
|
142 |
);
|
143 |
|
144 |
register_setting(
|
153 |
|
154 |
add_settings_section(
|
155 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
156 |
+
__( 'Coupon Code Settings', 'woo-cart-abandonment-recovery' ),
|
157 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
158 |
WCF_CA_PAGE_NAME
|
159 |
);
|
160 |
|
161 |
add_settings_field(
|
162 |
'wcf_ca_coupon_code_status',
|
163 |
+
__( 'Create Coupon Code', 'woo-cart-abandonment-recovery' ),
|
164 |
array( $this, 'wcf_ca_coupon_code_status_callback' ),
|
165 |
WCF_CA_PAGE_NAME,
|
166 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
167 |
+
array( __( 'Auto-create the special coupon for the abandoned cart to send over the emails.', 'woo-cart-abandonment-recovery' ) )
|
168 |
);
|
169 |
|
170 |
add_settings_field(
|
171 |
'wcf_ca_discount_type',
|
172 |
+
__( 'Discount Type', 'woo-cart-abandonment-recovery' ),
|
173 |
array( $this, 'wcf_ca_discount_type_callback' ),
|
174 |
WCF_CA_PAGE_NAME,
|
175 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
176 |
+
array( '', 'woo-cart-abandonment-recovery' )
|
177 |
);
|
178 |
|
179 |
add_settings_field(
|
180 |
'wcf_ca_coupon_amount',
|
181 |
+
__( 'Coupon Amount', 'woo-cart-abandonment-recovery' ),
|
182 |
array( $this, 'wcf_ca_coupon_amount_callback' ),
|
183 |
WCF_CA_PAGE_NAME,
|
184 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
185 |
+
array( '', 'woo-cart-abandonment-recovery' )
|
186 |
);
|
187 |
|
188 |
add_settings_field(
|
189 |
'wcf_ca_coupon_expiry',
|
190 |
+
__( 'Coupon Expires After', 'woo-cart-abandonment-recovery' ),
|
191 |
array( $this, 'wcf_ca_coupon_expiry_callback' ),
|
192 |
WCF_CA_PAGE_NAME,
|
193 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
194 |
+
array( '<br/><br/> <span class="description"><strong>Note: </strong> Enter zero (0) to restrict coupon from expiring.</span>', 'woo-cart-abandonment-recovery' )
|
195 |
);
|
196 |
|
197 |
register_setting(
|
222 |
// Start: Settings for Zapier.
|
223 |
add_settings_section(
|
224 |
WCF_CA_ZAPIER_SETTINGS_SECTION,
|
225 |
+
__( 'Webhook Settings', 'woo-cart-abandonment-recovery' ),
|
226 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
227 |
WCF_CA_PAGE_NAME
|
228 |
);
|
231 |
// Start: GDPR Settings.
|
232 |
add_settings_section(
|
233 |
WCF_CA_GDPR_SETTINGS_SECTION,
|
234 |
+
__( 'GDPR Settings', 'woo-cart-abandonment-recovery' ),
|
235 |
array( $this, 'wcf_cart_abandonment_options_callback' ),
|
236 |
WCF_CA_PAGE_NAME
|
237 |
);
|
238 |
|
239 |
add_settings_field(
|
240 |
'wcf_ca_gdpr_status',
|
241 |
+
__( 'Enable GDPR Integration', 'woo-cart-abandonment-recovery' ),
|
242 |
array( $this, 'wcf_ca_gdpr_status_callback' ),
|
243 |
WCF_CA_PAGE_NAME,
|
244 |
WCF_CA_GDPR_SETTINGS_SECTION,
|
245 |
+
array( __( 'Ask confirmation from the user before tracking data. <br/><br/> <span class="description"><strong>Note:</strong> By checking this, it will show up confirmation text below the email id on checkout page.</span>', 'woo-cart-abandonment-recovery' ) )
|
246 |
);
|
247 |
|
248 |
add_settings_field(
|
249 |
'wcf_ca_gdpr_message',
|
250 |
+
__( 'GDPR Message', 'woo-cart-abandonment-recovery' ),
|
251 |
array( $this, 'wcf_ca_gdpr_message_callback' ),
|
252 |
WCF_CA_PAGE_NAME,
|
253 |
WCF_CA_GDPR_SETTINGS_SECTION,
|
254 |
+
array( '', 'woo-cart-abandonment-recovery' )
|
255 |
);
|
256 |
|
257 |
register_setting(
|
418 |
add_settings_error(
|
419 |
'wcf_ca_coupon_amount',
|
420 |
'error found',
|
421 |
+
__( 'Coupon code should be numeric and has to be greater than or equals to 1.', 'woo-cart-abandonment-recovery' )
|
422 |
);
|
423 |
}
|
424 |
return $output;
|
528 |
add_settings_error(
|
529 |
'wcf_ca_from_email',
|
530 |
'error found',
|
531 |
+
__( 'Invalid email "From" address field', 'woo-cart-abandonment-recovery' )
|
532 |
);
|
533 |
}
|
534 |
return sanitize_email( $input );
|
546 |
add_settings_error(
|
547 |
'wcf_ca_reply_email',
|
548 |
'error found',
|
549 |
+
__( 'Invalid email "Reply" address field', 'woo-cart-abandonment-recovery' )
|
550 |
);
|
551 |
}
|
552 |
return sanitize_email( $input );
|
languages/{cartflows-ca.pot → woo-cart-abandonment-recovery.pot}
RENAMED
@@ -2,10 +2,10 @@
|
|
2 |
# This file is distributed under the same license as the WooCommerce Cart Abandonment Recovery package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: WooCommerce Cart Abandonment Recovery 1.1.
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://wordpress.org/support/plugin/woo-cart-abandonment-recovery\n"
|
8 |
-
"POT-Creation-Date: 2019-
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -153,132 +153,137 @@ msgid "View"
|
|
153 |
msgstr ""
|
154 |
|
155 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:66
|
156 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:
|
157 |
#: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:85
|
158 |
#: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:119
|
159 |
msgid "Delete"
|
160 |
msgstr ""
|
161 |
|
162 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:70
|
163 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
164 |
msgid "Unsubscribe"
|
165 |
msgstr ""
|
166 |
|
167 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:
|
168 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1563
|
169 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1618
|
|
|
170 |
#: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:168
|
171 |
msgid "Name"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:
|
175 |
msgid "Email"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:
|
179 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
180 |
msgid "Cart Total"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:
|
184 |
msgid "Order Status"
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:
|
188 |
msgid "Time"
|
189 |
msgstr ""
|
190 |
|
191 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
|
|
|
|
|
|
|
|
|
|
192 |
msgid "Mail has been sent successfully!"
|
193 |
msgstr ""
|
194 |
|
195 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
196 |
msgid "Mail sending failed!"
|
197 |
msgstr ""
|
198 |
|
199 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
200 |
msgid "Every Fifteen Minutes"
|
201 |
msgstr ""
|
202 |
|
203 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
204 |
msgid "You have successfully unsubscribed from our email list."
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
208 |
#: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:159
|
209 |
msgid "Unsubscribed"
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
213 |
msgid "No Thanks"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
217 |
msgid "You won't receive further emails from us, thank you!"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
221 |
-
|
222 |
-
msgstr ""
|
223 |
-
|
224 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:885
|
225 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:886
|
226 |
msgid "Cart Abandonment"
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
230 |
msgid "Items deleted: %d"
|
231 |
msgstr ""
|
232 |
|
233 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
234 |
msgid "User unsubscribed successfully!"
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
238 |
msgid "Report"
|
239 |
msgstr ""
|
240 |
|
241 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
242 |
msgid "Follow-Up Emails"
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
246 |
msgid "Settings"
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
250 |
msgid "there"
|
251 |
msgstr ""
|
252 |
|
253 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
|
|
|
|
|
|
254 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1617
|
|
|
255 |
msgid "Item"
|
256 |
msgstr ""
|
257 |
|
258 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1564
|
259 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1619
|
|
|
260 |
msgid "Quantity"
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1565
|
264 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1620
|
|
|
265 |
msgid "Price"
|
266 |
msgstr ""
|
267 |
|
268 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1566
|
269 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1621
|
|
|
270 |
msgid "Line Subtotal"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
274 |
msgid "Discount"
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
278 |
msgid "Other"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:
|
282 |
msgid "Shipping"
|
283 |
msgstr ""
|
284 |
|
2 |
# This file is distributed under the same license as the WooCommerce Cart Abandonment Recovery package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: WooCommerce Cart Abandonment Recovery 1.1.7\n"
|
6 |
"Report-Msgid-Bugs-To: "
|
7 |
"https://wordpress.org/support/plugin/woo-cart-abandonment-recovery\n"
|
8 |
+
"POT-Creation-Date: 2019-08-12 08:43:46+00:00\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=utf-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
153 |
msgstr ""
|
154 |
|
155 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:66
|
156 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:118
|
157 |
#: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:85
|
158 |
#: modules/cart-abandonment/class-cartflows-ca-email-templates-table.php:119
|
159 |
msgid "Delete"
|
160 |
msgstr ""
|
161 |
|
162 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:70
|
163 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1488
|
164 |
msgid "Unsubscribe"
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:184
|
|
|
168 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1618
|
169 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1673
|
170 |
#: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:168
|
171 |
msgid "Name"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:185
|
175 |
msgid "Email"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:186
|
179 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1695
|
180 |
msgid "Cart Total"
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:187
|
184 |
msgid "Order Status"
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php:188
|
188 |
msgid "Time"
|
189 |
msgstr ""
|
190 |
|
191 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:119
|
192 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:817
|
193 |
+
msgid "This order was abandoned & subsequently recovered."
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:136
|
197 |
msgid "Mail has been sent successfully!"
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:138
|
201 |
msgid "Mail sending failed!"
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:178
|
205 |
msgid "Every Fifteen Minutes"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:244
|
209 |
msgid "You have successfully unsubscribed from our email list."
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:244
|
213 |
#: modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php:159
|
214 |
msgid "Unsubscribed"
|
215 |
msgstr ""
|
216 |
|
217 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:401
|
218 |
msgid "No Thanks"
|
219 |
msgstr ""
|
220 |
|
221 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:402
|
222 |
msgid "You won't receive further emails from us, thank you!"
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:929
|
226 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:930
|
|
|
|
|
|
|
|
|
227 |
msgid "Cart Abandonment"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:963
|
231 |
msgid "Items deleted: %d"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:980
|
235 |
msgid "User unsubscribed successfully!"
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1175
|
239 |
msgid "Report"
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1191
|
243 |
msgid "Follow-Up Emails"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1207
|
247 |
msgid "Settings"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1458
|
251 |
msgid "there"
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1610
|
255 |
+
msgid "Cart Total ( Cart Total + Shipping + Tax )"
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1617
|
259 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1672
|
260 |
msgid "Item"
|
261 |
msgstr ""
|
262 |
|
|
|
263 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1619
|
264 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1674
|
265 |
msgid "Quantity"
|
266 |
msgstr ""
|
267 |
|
|
|
268 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1620
|
269 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1675
|
270 |
msgid "Price"
|
271 |
msgstr ""
|
272 |
|
|
|
273 |
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1621
|
274 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1676
|
275 |
msgid "Line Subtotal"
|
276 |
msgstr ""
|
277 |
|
278 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1682
|
279 |
msgid "Discount"
|
280 |
msgstr ""
|
281 |
|
282 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1686
|
283 |
msgid "Other"
|
284 |
msgstr ""
|
285 |
|
286 |
+
#: modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php:1691
|
287 |
msgid "Shipping"
|
288 |
msgstr ""
|
289 |
|
modules/cart-abandonment/class-cartflows-ca-cart-abandonment-table.php
CHANGED
@@ -62,12 +62,12 @@ class Cartflows_Ca_Cart_Abandonment_Table extends WP_List_Table {
|
|
62 |
);
|
63 |
|
64 |
$actions = array(
|
65 |
-
'view' => sprintf( '<a href="%s">%s</a>', esc_url( $view_url ), __( 'View', '
|
66 |
-
'delete' => sprintf( '<a onclick="return confirm(\'Are you sure to delete this order?\');" href="?page=%s&action=delete&id=%s">%s</a>', esc_html( $page ), esc_html( $item['id'] ), __( 'Delete', '
|
67 |
);
|
68 |
|
69 |
if ( WCF_CART_ABANDONED_ORDER === $item['order_status'] && ! $item['unsubscribed'] ) {
|
70 |
-
$actions['unsubscribe'] = sprintf( '<a onclick="return confirm(\'Are you sure to unsubscribe this user? \');" href="?page=%s&action=unsubscribe&id=%s">%s</a>', esc_html( $page ), esc_html( $item['id'] ), __( 'Unsubscribe', '
|
71 |
|
72 |
}
|
73 |
|
@@ -87,16 +87,12 @@ class Cartflows_Ca_Cart_Abandonment_Table extends WP_List_Table {
|
|
87 |
* @return HTML
|
88 |
*/
|
89 |
function column_time( $item ) {
|
90 |
-
$database_time
|
91 |
-
$date_time
|
92 |
-
$
|
93 |
-
$
|
94 |
|
95 |
-
return sprintf(
|
96 |
-
'<span class="dashicons dashicons-clock"></span> %s %s',
|
97 |
-
esc_html( $time ),
|
98 |
-
esc_html( $date )
|
99 |
-
);
|
100 |
}
|
101 |
|
102 |
/**
|
@@ -119,7 +115,7 @@ class Cartflows_Ca_Cart_Abandonment_Table extends WP_List_Table {
|
|
119 |
*/
|
120 |
function get_bulk_actions() {
|
121 |
$actions = array(
|
122 |
-
'delete' => __( 'Delete', '
|
123 |
);
|
124 |
return $actions;
|
125 |
}
|
@@ -185,11 +181,11 @@ class Cartflows_Ca_Cart_Abandonment_Table extends WP_List_Table {
|
|
185 |
function get_columns() {
|
186 |
$columns = array(
|
187 |
'cb' => '<input type="checkbox" />',
|
188 |
-
'nameSurname' => __( 'Name', '
|
189 |
-
'email' => __( 'Email', '
|
190 |
-
'cart_total' => __( 'Cart Total', '
|
191 |
-
'order_status' => __( 'Order Status', '
|
192 |
-
'time' => __( 'Time', '
|
193 |
);
|
194 |
return $columns;
|
195 |
}
|
62 |
);
|
63 |
|
64 |
$actions = array(
|
65 |
+
'view' => sprintf( '<a href="%s">%s</a>', esc_url( $view_url ), __( 'View', 'woo-cart-abandonment-recovery' ) ),
|
66 |
+
'delete' => sprintf( '<a onclick="return confirm(\'Are you sure to delete this order?\');" href="?page=%s&action=delete&id=%s">%s</a>', esc_html( $page ), esc_html( $item['id'] ), __( 'Delete', 'woo-cart-abandonment-recovery' ) ),
|
67 |
);
|
68 |
|
69 |
if ( WCF_CART_ABANDONED_ORDER === $item['order_status'] && ! $item['unsubscribed'] ) {
|
70 |
+
$actions['unsubscribe'] = sprintf( '<a onclick="return confirm(\'Are you sure to unsubscribe this user? \');" href="?page=%s&action=unsubscribe&id=%s">%s</a>', esc_html( $page ), esc_html( $item['id'] ), __( 'Unsubscribe', 'woo-cart-abandonment-recovery' ) );
|
71 |
|
72 |
}
|
73 |
|
87 |
* @return HTML
|
88 |
*/
|
89 |
function column_time( $item ) {
|
90 |
+
$database_time = $item['time'];
|
91 |
+
$date_time = new DateTime( $database_time );
|
92 |
+
$date_time_format = get_option( 'date_format' ) . ' ' . get_option( 'time_format' );
|
93 |
+
$date_time = $date_time->format( $date_time_format );
|
94 |
|
95 |
+
return sprintf( '<span class="dashicons dashicons-clock"></span> %s', esc_html( $date_time ) );
|
|
|
|
|
|
|
|
|
96 |
}
|
97 |
|
98 |
/**
|
115 |
*/
|
116 |
function get_bulk_actions() {
|
117 |
$actions = array(
|
118 |
+
'delete' => __( 'Delete', 'woo-cart-abandonment-recovery' ),
|
119 |
);
|
120 |
return $actions;
|
121 |
}
|
181 |
function get_columns() {
|
182 |
$columns = array(
|
183 |
'cb' => '<input type="checkbox" />',
|
184 |
+
'nameSurname' => __( 'Name', 'woo-cart-abandonment-recovery' ),
|
185 |
+
'email' => __( 'Email', 'woo-cart-abandonment-recovery' ),
|
186 |
+
'cart_total' => __( 'Cart Total', 'woo-cart-abandonment-recovery' ),
|
187 |
+
'order_status' => __( 'Order Status', 'woo-cart-abandonment-recovery' ),
|
188 |
+
'time' => __( 'Time', 'woo-cart-abandonment-recovery' ),
|
189 |
);
|
190 |
return $columns;
|
191 |
}
|
modules/cart-abandonment/class-cartflows-ca-cart-abandonment.php
CHANGED
@@ -44,8 +44,6 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
44 |
|
45 |
if ( wcf_ca()->utils->is_cart_abandonment_tracking_enabled() && ! isset( $_COOKIE['wcf_ca_skip_track_data'] ) ) {
|
46 |
|
47 |
-
add_action( 'woocommerce_update_cart_action_cart_updated', 'on_action_cart_updated', 20, 1 );
|
48 |
-
|
49 |
// Add script to track the cart abandonment.
|
50 |
add_action( 'woocommerce_after_checkout_form', array( $this, 'cart_abandonment_tracking_script' ) );
|
51 |
|
@@ -60,6 +58,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
60 |
// Delete the stored cart abandonment data once order gets created.
|
61 |
add_action( 'woocommerce_new_order', array( $this, 'delete_cart_abandonment_data' ) );
|
62 |
add_action( 'woocommerce_thankyou', array( $this, 'delete_cart_abandonment_data' ) );
|
|
|
63 |
|
64 |
// Adding filter to restore the data if recreating abandonment order.
|
65 |
add_filter( 'wp', array( $this, 'restore_cart_abandonment_data' ), 10 );
|
@@ -86,6 +85,46 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
86 |
|
87 |
}
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
/**
|
90 |
* Send preview emails.
|
91 |
*/
|
@@ -94,9 +133,9 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
94 |
check_ajax_referer( WCF_EMAIL_TEMPLATES_NONCE, 'security' );
|
95 |
$mail_result = $this->send_email_templates( null, true );
|
96 |
if ( $mail_result ) {
|
97 |
-
wp_send_json_success( __( 'Mail has been sent successfully!', '
|
98 |
} else {
|
99 |
-
wp_send_json_error( __( 'Mail sending failed!', '
|
100 |
}
|
101 |
}
|
102 |
|
@@ -129,9 +168,14 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
129 |
*/
|
130 |
function cartflows_ca_update_order_status_action( $schedules ) {
|
131 |
|
|
|
|
|
|
|
|
|
|
|
132 |
$schedules['every_fifteen_minutes'] = array(
|
133 |
-
'interval' =>
|
134 |
-
'display' => __( 'Every Fifteen Minutes', '
|
135 |
);
|
136 |
|
137 |
return $schedules;
|
@@ -197,7 +241,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
197 |
array( 'unsubscribed' => true ),
|
198 |
array( 'session_id' => $session_id )
|
199 |
);
|
200 |
-
wp_die( __( 'You have successfully unsubscribed from our email list.', '
|
201 |
|
202 |
}
|
203 |
}
|
@@ -354,8 +398,8 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
354 |
'_post_id' => get_the_ID(),
|
355 |
'_show_gdpr_message' => ( wcf_ca()->utils->is_gdpr_enabled() && ! isset( $_COOKIE['wcf_ca_skip_track_data'] ) ),
|
356 |
'_gdpr_message' => get_option( 'wcf_ca_gdpr_message' ),
|
357 |
-
'_gdpr_nothanks_msg' => __( 'No Thanks', '
|
358 |
-
'_gdpr_after_no_thanks_msg' => __( 'You won\'t receive further emails from us, thank you!', '
|
359 |
'enable_ca_tracking' => true,
|
360 |
);
|
361 |
|
@@ -770,7 +814,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
770 |
$this->trigger_zapier_webhook( $session_id, WCF_CART_COMPLETED_ORDER );
|
771 |
|
772 |
$order = wc_get_order( $order_id );
|
773 |
-
$note = __( '
|
774 |
$order->add_order_note( $note );
|
775 |
$order->save();
|
776 |
|
@@ -882,8 +926,8 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
882 |
function abandoned_cart_tracking_menu() {
|
883 |
|
884 |
$parent_slug = 'woocommerce';
|
885 |
-
$page_title = __( 'Cart Abandonment', '
|
886 |
-
$menu_title = __( 'Cart Abandonment', '
|
887 |
$capability = 'manage_options';
|
888 |
$menu_slug = WCF_CA_PAGE_NAME;
|
889 |
$callback = array( $this, 'render_abandoned_cart_tracking' );
|
@@ -916,7 +960,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
916 |
$deleted_row_count = empty( $ids ) ? 1 : count( $ids );
|
917 |
|
918 |
$wcf_list_table->process_bulk_action();
|
919 |
-
$message = '<div class="notice notice-success is-dismissible" id="message"><p>' . sprintf( __( 'Items deleted: %d', '
|
920 |
set_transient( 'wcf_ca_show_message', $message, 5 );
|
921 |
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
|
922 |
wp_safe_redirect( $_SERVER['HTTP_REFERER'] );
|
@@ -933,7 +977,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
933 |
array( 'id' => $id )
|
934 |
);
|
935 |
|
936 |
-
$message = '<div class="notice notice-success is-dismissible" id="message"><p>' . sprintf( __( 'User unsubscribed successfully!', '
|
937 |
set_transient( 'wcf_ca_show_message', $message, 5 );
|
938 |
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
|
939 |
wp_safe_redirect( $_SERVER['HTTP_REFERER'] );
|
@@ -990,7 +1034,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
990 |
$reports_btn_markup = '<style>.wrap{ position:relative;}</style>';
|
991 |
$reports_btn_markup .= "<div class='wcf-reports-button-wrap'>";
|
992 |
$reports_btn_markup .= "<button class='wcf-cart-abandonment-reports-popup button button-secondary'>";
|
993 |
-
$reports_btn_markup .= esc_html( 'View Report', '
|
994 |
$reports_btn_markup .= '</button>';
|
995 |
$reports_btn_markup .= '</div>';
|
996 |
|
@@ -1128,7 +1172,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
1128 |
echo $active_reports;}
|
1129 |
?>
|
1130 |
">
|
1131 |
-
<?php _e( 'Report', '
|
1132 |
</a>
|
1133 |
|
1134 |
<?php
|
@@ -1144,7 +1188,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
1144 |
echo $active_email_templates;}
|
1145 |
?>
|
1146 |
">
|
1147 |
-
<?php _e( 'Follow-Up Emails', '
|
1148 |
</a>
|
1149 |
|
1150 |
<?php
|
@@ -1160,7 +1204,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
1160 |
echo $active_settings;}
|
1161 |
?>
|
1162 |
">
|
1163 |
-
<?php _e( 'Settings', '
|
1164 |
</a>
|
1165 |
|
1166 |
</div>
|
@@ -1283,7 +1327,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
1283 |
?>
|
1284 |
<div class="notice notice-warning is-dismissible">
|
1285 |
<p>
|
1286 |
-
<?php echo __('Looks like abandonment tracking is disabled! Please enable it from <a href=' . esc_url($settings_url) . '> <strong>settings</strong></a>.', '
|
1287 |
?>
|
1288 |
</p>
|
1289 |
</div>
|
@@ -1411,7 +1455,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
1411 |
$from_email_preview = get_option( 'wcf_ca_reply_email' );
|
1412 |
|
1413 |
$user_first_name = ucfirst( $other_fields['wcf_first_name'] );
|
1414 |
-
$user_first_name = $user_first_name ? $user_first_name : __( 'there', '
|
1415 |
$user_last_name = ucfirst( $other_fields['wcf_last_name'] );
|
1416 |
$user_full_name = trim( $user_first_name . ' ' . $user_last_name );
|
1417 |
|
@@ -1441,7 +1485,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
1441 |
|
1442 |
$current_time_stamp = $email_data->time;
|
1443 |
$body_email_preview = str_replace( '{{cart.abandoned_date}}', $current_time_stamp, $body_email_preview );
|
1444 |
-
$unsubscribe_element = '<a target="_blank" style="color: lightgray" href="' . $checkout_url . '&unsubscribe=true' . '">' . __( 'Unsubscribe', '
|
1445 |
$body_email_preview = str_replace( '{{cart.unsubscribe}}', $unsubscribe_element, $body_email_preview );
|
1446 |
$body_email_preview = str_replace( 'http://{{cart.checkout_url}}', '{{cart.checkout_url}}', $body_email_preview );
|
1447 |
$body_email_preview = str_replace( 'https://{{cart.checkout_url}}', '{{cart.checkout_url}}', $body_email_preview );
|
@@ -1549,7 +1593,7 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
1549 |
}
|
1550 |
|
1551 |
$tr = $tr . '<tr style="color: #636363; border: 1px solid #e5e5e5;" align="center">
|
1552 |
-
<td ' . $style . '><img class="demo_img" width="42" height="42" src="
|
1553 |
<td ' . $style . '>' . $product->get_title() . '</td>
|
1554 |
<td ' . $style . '> ' . $cart_item['quantity'] . ' </td>
|
1555 |
<td ' . $style . '>' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
|
@@ -1557,13 +1601,24 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
1557 |
</tr> ';
|
1558 |
}
|
1559 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1560 |
return '<table align="left" cellpadding="10" cellspacing="0" style="float: none; border: 1px solid #e5e5e5;">
|
1561 |
<tr align="center">
|
1562 |
-
<th ' . $style . '>' . __( 'Item', '
|
1563 |
-
<th ' . $style . '>' . __( 'Name', '
|
1564 |
-
<th ' . $style . '>' . __( 'Quantity', '
|
1565 |
-
<th ' . $style . '>' . __( 'Price', '
|
1566 |
-
<th ' . $style . '>' . __( 'Line Subtotal', '
|
1567 |
</tr> ' . $tr . '
|
1568 |
</table>';
|
1569 |
|
@@ -1614,30 +1669,30 @@ class Cartflows_Ca_Cart_Abandonment {
|
|
1614 |
return '<table align="left" cellspacing="0" class="widefat fixed striped posts">
|
1615 |
<thead>
|
1616 |
<tr align="center">
|
1617 |
-
<th >' . __( 'Item', '
|
1618 |
-
<th >' . __( 'Name', '
|
1619 |
-
<th >' . __( 'Quantity', '
|
1620 |
-
<th >' . __( 'Price', '
|
1621 |
-
<th >' . __( 'Line Subtotal', '
|
1622 |
</tr>
|
1623 |
</thead>
|
1624 |
<tbody>
|
1625 |
' . $tr . '
|
1626 |
<tr align="center" id="wcf-ca-discount">
|
1627 |
-
<td colspan="4" >' . __( 'Discount', '
|
1628 |
<td>' . $currency_symbol . ( $discount ) . '</td>
|
1629 |
</tr>
|
1630 |
<tr align="center" id="wcf-ca-other">
|
1631 |
-
<td colspan="4" >' . __( 'Other', '
|
1632 |
<td>' . $currency_symbol . ( $tax ) . '</td>
|
1633 |
</tr>
|
1634 |
|
1635 |
<tr align="center" id="wcf-ca-shipping">
|
1636 |
-
<td colspan="4" >' . __( 'Shipping', '
|
1637 |
<td>' . $currency_symbol . number_format_i18n( $discount + ( $cart_total - $total ) - $tax, 2 ) . '</td>
|
1638 |
</tr>
|
1639 |
<tr align="center" id="wcf-ca-cart-total">
|
1640 |
-
<td colspan="4" >' . __( 'Cart Total', '
|
1641 |
<td>' . $currency_symbol . $cart_total . '</td>
|
1642 |
</tr>
|
1643 |
</tbody>
|
44 |
|
45 |
if ( wcf_ca()->utils->is_cart_abandonment_tracking_enabled() && ! isset( $_COOKIE['wcf_ca_skip_track_data'] ) ) {
|
46 |
|
|
|
|
|
47 |
// Add script to track the cart abandonment.
|
48 |
add_action( 'woocommerce_after_checkout_form', array( $this, 'cart_abandonment_tracking_script' ) );
|
49 |
|
58 |
// Delete the stored cart abandonment data once order gets created.
|
59 |
add_action( 'woocommerce_new_order', array( $this, 'delete_cart_abandonment_data' ) );
|
60 |
add_action( 'woocommerce_thankyou', array( $this, 'delete_cart_abandonment_data' ) );
|
61 |
+
add_action( 'woocommerce_order_status_changed', array( $this, 'wcf_ca_update_order_status' ), 999, 3 );
|
62 |
|
63 |
// Adding filter to restore the data if recreating abandonment order.
|
64 |
add_filter( 'wp', array( $this, 'restore_cart_abandonment_data' ), 10 );
|
85 |
|
86 |
}
|
87 |
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Update the Order status.
|
91 |
+
*
|
92 |
+
* @param integer $order_id order id.
|
93 |
+
* @param string $old_order_status old order status.
|
94 |
+
* @param string $new_order_status new order status.
|
95 |
+
*/
|
96 |
+
public function wcf_ca_update_order_status( $order_id, $old_order_status, $new_order_status ) {
|
97 |
+
|
98 |
+
$acceptable_order_statuses = array( 'completed', 'processing' );
|
99 |
+
|
100 |
+
if ( $order_id && in_array( $new_order_status, $acceptable_order_statuses, true ) ) {
|
101 |
+
|
102 |
+
$order = wc_get_order( $order_id );
|
103 |
+
|
104 |
+
$order_email = $order->get_billing_email();
|
105 |
+
$captured_data = $this->get_captured_data_by_email( $order_email );
|
106 |
+
|
107 |
+
if ( $captured_data && is_object( $captured_data ) ) {
|
108 |
+
$capture_status = $captured_data->order_status;
|
109 |
+
global $wpdb;
|
110 |
+
$cart_abandonment_table = $wpdb->prefix . CARTFLOWS_CA_CART_ABANDONMENT_TABLE;
|
111 |
+
|
112 |
+
if ( ( WCF_CART_NORMAL_ORDER === $capture_status ) ) {
|
113 |
+
$wpdb->delete( $cart_abandonment_table, array( 'session_id' => sanitize_key( $captured_data->session_id ) ) );
|
114 |
+
}
|
115 |
+
|
116 |
+
if ( ( WCF_CART_ABANDONED_ORDER === $capture_status || WCF_CART_LOST_ORDER === $capture_status ) ) {
|
117 |
+
$wpdb->update( $cart_abandonment_table, array( 'order_status' => WCF_CART_COMPLETED_ORDER ), array( 'session_id' => sanitize_key( $captured_data->session_id ) ) );
|
118 |
+
$this->trigger_zapier_webhook( $captured_data->session_id, WCF_CART_COMPLETED_ORDER );
|
119 |
+
$note = __( 'This order was abandoned & subsequently recovered.', 'woo-cart-abandonment-recovery' );
|
120 |
+
$order->add_order_note( $note );
|
121 |
+
$order->save();
|
122 |
+
}
|
123 |
+
}
|
124 |
+
}
|
125 |
+
|
126 |
+
}
|
127 |
+
|
128 |
/**
|
129 |
* Send preview emails.
|
130 |
*/
|
133 |
check_ajax_referer( WCF_EMAIL_TEMPLATES_NONCE, 'security' );
|
134 |
$mail_result = $this->send_email_templates( null, true );
|
135 |
if ( $mail_result ) {
|
136 |
+
wp_send_json_success( __( 'Mail has been sent successfully!', 'woo-cart-abandonment-recovery' ) );
|
137 |
} else {
|
138 |
+
wp_send_json_error( __( 'Mail sending failed!', 'woo-cart-abandonment-recovery' ) );
|
139 |
}
|
140 |
}
|
141 |
|
168 |
*/
|
169 |
function cartflows_ca_update_order_status_action( $schedules ) {
|
170 |
|
171 |
+
/**
|
172 |
+
* Add filter to change the cron interval time to uodate order status.
|
173 |
+
*/
|
174 |
+
$cron_time = apply_filters( 'woo_ca_update_order_cron_interval', 15 );
|
175 |
+
|
176 |
$schedules['every_fifteen_minutes'] = array(
|
177 |
+
'interval' => $cron_time * MINUTE_IN_SECONDS,
|
178 |
+
'display' => __( 'Every Fifteen Minutes', 'woo-cart-abandonment-recovery' ),
|
179 |
);
|
180 |
|
181 |
return $schedules;
|
241 |
array( 'unsubscribed' => true ),
|
242 |
array( 'session_id' => $session_id )
|
243 |
);
|
244 |
+
wp_die( __( 'You have successfully unsubscribed from our email list.', 'woo-cart-abandonment-recovery' ), __( 'Unsubscribed', 'woo-cart-abandonment-recovery' ) );
|
245 |
|
246 |
}
|
247 |
}
|
398 |
'_post_id' => get_the_ID(),
|
399 |
'_show_gdpr_message' => ( wcf_ca()->utils->is_gdpr_enabled() && ! isset( $_COOKIE['wcf_ca_skip_track_data'] ) ),
|
400 |
'_gdpr_message' => get_option( 'wcf_ca_gdpr_message' ),
|
401 |
+
'_gdpr_nothanks_msg' => __( 'No Thanks', 'woo-cart-abandonment-recovery' ),
|
402 |
+
'_gdpr_after_no_thanks_msg' => __( 'You won\'t receive further emails from us, thank you!', 'woo-cart-abandonment-recovery' ),
|
403 |
'enable_ca_tracking' => true,
|
404 |
);
|
405 |
|
814 |
$this->trigger_zapier_webhook( $session_id, WCF_CART_COMPLETED_ORDER );
|
815 |
|
816 |
$order = wc_get_order( $order_id );
|
817 |
+
$note = __( 'This order was abandoned & subsequently recovered.', 'woo-cart-abandonment-recovery' );
|
818 |
$order->add_order_note( $note );
|
819 |
$order->save();
|
820 |
|
926 |
function abandoned_cart_tracking_menu() {
|
927 |
|
928 |
$parent_slug = 'woocommerce';
|
929 |
+
$page_title = __( 'Cart Abandonment', 'woo-cart-abandonment-recovery' );
|
930 |
+
$menu_title = __( 'Cart Abandonment', 'woo-cart-abandonment-recovery' );
|
931 |
$capability = 'manage_options';
|
932 |
$menu_slug = WCF_CA_PAGE_NAME;
|
933 |
$callback = array( $this, 'render_abandoned_cart_tracking' );
|
960 |
$deleted_row_count = empty( $ids ) ? 1 : count( $ids );
|
961 |
|
962 |
$wcf_list_table->process_bulk_action();
|
963 |
+
$message = '<div class="notice notice-success is-dismissible" id="message"><p>' . sprintf( __( 'Items deleted: %d', 'woo-cart-abandonment-recovery' ), $deleted_row_count ) . '</p></div>'; // phpcs:ignore
|
964 |
set_transient( 'wcf_ca_show_message', $message, 5 );
|
965 |
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
|
966 |
wp_safe_redirect( $_SERVER['HTTP_REFERER'] );
|
977 |
array( 'id' => $id )
|
978 |
);
|
979 |
|
980 |
+
$message = '<div class="notice notice-success is-dismissible" id="message"><p>' . sprintf( __( 'User unsubscribed successfully!', 'woo-cart-abandonment-recovery' ) ) . '</p></div>'; // phpcs:ignore
|
981 |
set_transient( 'wcf_ca_show_message', $message, 5 );
|
982 |
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
|
983 |
wp_safe_redirect( $_SERVER['HTTP_REFERER'] );
|
1034 |
$reports_btn_markup = '<style>.wrap{ position:relative;}</style>';
|
1035 |
$reports_btn_markup .= "<div class='wcf-reports-button-wrap'>";
|
1036 |
$reports_btn_markup .= "<button class='wcf-cart-abandonment-reports-popup button button-secondary'>";
|
1037 |
+
$reports_btn_markup .= esc_html( 'View Report', 'woo-cart-abandonment-recovery' );
|
1038 |
$reports_btn_markup .= '</button>';
|
1039 |
$reports_btn_markup .= '</div>';
|
1040 |
|
1172 |
echo $active_reports;}
|
1173 |
?>
|
1174 |
">
|
1175 |
+
<?php _e( 'Report', 'woo-cart-abandonment-recovery' ); ?>
|
1176 |
</a>
|
1177 |
|
1178 |
<?php
|
1188 |
echo $active_email_templates;}
|
1189 |
?>
|
1190 |
">
|
1191 |
+
<?php _e( 'Follow-Up Emails', 'woo-cart-abandonment-recovery' ); ?>
|
1192 |
</a>
|
1193 |
|
1194 |
<?php
|
1204 |
echo $active_settings;}
|
1205 |
?>
|
1206 |
">
|
1207 |
+
<?php _e( 'Settings', 'woo-cart-abandonment-recovery' ); ?>
|
1208 |
</a>
|
1209 |
|
1210 |
</div>
|
1327 |
?>
|
1328 |
<div class="notice notice-warning is-dismissible">
|
1329 |
<p>
|
1330 |
+
<?php echo __('Looks like abandonment tracking is disabled! Please enable it from <a href=' . esc_url($settings_url) . '> <strong>settings</strong></a>.', 'woo-cart-abandonment-recovery'); // phpcs:ignore
|
1331 |
?>
|
1332 |
</p>
|
1333 |
</div>
|
1455 |
$from_email_preview = get_option( 'wcf_ca_reply_email' );
|
1456 |
|
1457 |
$user_first_name = ucfirst( $other_fields['wcf_first_name'] );
|
1458 |
+
$user_first_name = $user_first_name ? $user_first_name : __( 'there', 'woo-cart-abandonment-recovery' );
|
1459 |
$user_last_name = ucfirst( $other_fields['wcf_last_name'] );
|
1460 |
$user_full_name = trim( $user_first_name . ' ' . $user_last_name );
|
1461 |
|
1485 |
|
1486 |
$current_time_stamp = $email_data->time;
|
1487 |
$body_email_preview = str_replace( '{{cart.abandoned_date}}', $current_time_stamp, $body_email_preview );
|
1488 |
+
$unsubscribe_element = '<a target="_blank" style="color: lightgray" href="' . $checkout_url . '&unsubscribe=true' . '">' . __( 'Unsubscribe', 'woo-cart-abandonment-recovery' ) . '</a>';
|
1489 |
$body_email_preview = str_replace( '{{cart.unsubscribe}}', $unsubscribe_element, $body_email_preview );
|
1490 |
$body_email_preview = str_replace( 'http://{{cart.checkout_url}}', '{{cart.checkout_url}}', $body_email_preview );
|
1491 |
$body_email_preview = str_replace( 'https://{{cart.checkout_url}}', '{{cart.checkout_url}}', $body_email_preview );
|
1593 |
}
|
1594 |
|
1595 |
$tr = $tr . '<tr style="color: #636363; border: 1px solid #e5e5e5;" align="center">
|
1596 |
+
<td ' . $style . '><img class="demo_img" width="42" height="42" src="' . esc_url( get_the_post_thumbnail_url( $product->get_id() ) ) . '"></td>
|
1597 |
<td ' . $style . '>' . $product->get_title() . '</td>
|
1598 |
<td ' . $style . '> ' . $cart_item['quantity'] . ' </td>
|
1599 |
<td ' . $style . '>' . $currency_symbol . number_format_i18n( $cart_item['line_total'], 2 ) . '</td>
|
1601 |
</tr> ';
|
1602 |
}
|
1603 |
|
1604 |
+
/**
|
1605 |
+
* Add filter to toggle the Cart Total row.
|
1606 |
+
*/
|
1607 |
+
$enable_cart_total = apply_filters( 'woo_ca_recovery_enable_cart_total', false );
|
1608 |
+
if ( $enable_cart_total ) {
|
1609 |
+
$tr = $tr . '<tr ' . $style . ' align="center">
|
1610 |
+
<td colspan="4" ' . $style . '> ' . __( 'Cart Total ( Cart Total + Shipping + Tax )', 'woo-cart-abandonment-recovery' ) . ' </td>
|
1611 |
+
<td ' . $style . ' >' . $currency_symbol . number_format_i18n( $cart_total, 2 ) . '</td>
|
1612 |
+
</tr> ';
|
1613 |
+
}
|
1614 |
+
|
1615 |
return '<table align="left" cellpadding="10" cellspacing="0" style="float: none; border: 1px solid #e5e5e5;">
|
1616 |
<tr align="center">
|
1617 |
+
<th ' . $style . '>' . __( 'Item', 'woo-cart-abandonment-recovery' ) . '</th>
|
1618 |
+
<th ' . $style . '>' . __( 'Name', 'woo-cart-abandonment-recovery' ) . '</th>
|
1619 |
+
<th ' . $style . '>' . __( 'Quantity', 'woo-cart-abandonment-recovery' ) . '</th>
|
1620 |
+
<th ' . $style . '>' . __( 'Price', 'woo-cart-abandonment-recovery' ) . '</th>
|
1621 |
+
<th ' . $style . '>' . __( 'Line Subtotal', 'woo-cart-abandonment-recovery' ) . '</th>
|
1622 |
</tr> ' . $tr . '
|
1623 |
</table>';
|
1624 |
|
1669 |
return '<table align="left" cellspacing="0" class="widefat fixed striped posts">
|
1670 |
<thead>
|
1671 |
<tr align="center">
|
1672 |
+
<th >' . __( 'Item', 'woo-cart-abandonment-recovery' ) . '</th>
|
1673 |
+
<th >' . __( 'Name', 'woo-cart-abandonment-recovery' ) . '</th>
|
1674 |
+
<th >' . __( 'Quantity', 'woo-cart-abandonment-recovery' ) . '</th>
|
1675 |
+
<th >' . __( 'Price', 'woo-cart-abandonment-recovery' ) . '</th>
|
1676 |
+
<th >' . __( 'Line Subtotal', 'woo-cart-abandonment-recovery' ) . '</th>
|
1677 |
</tr>
|
1678 |
</thead>
|
1679 |
<tbody>
|
1680 |
' . $tr . '
|
1681 |
<tr align="center" id="wcf-ca-discount">
|
1682 |
+
<td colspan="4" >' . __( 'Discount', 'woo-cart-abandonment-recovery' ) . '</td>
|
1683 |
<td>' . $currency_symbol . ( $discount ) . '</td>
|
1684 |
</tr>
|
1685 |
<tr align="center" id="wcf-ca-other">
|
1686 |
+
<td colspan="4" >' . __( 'Other', 'woo-cart-abandonment-recovery' ) . '</td>
|
1687 |
<td>' . $currency_symbol . ( $tax ) . '</td>
|
1688 |
</tr>
|
1689 |
|
1690 |
<tr align="center" id="wcf-ca-shipping">
|
1691 |
+
<td colspan="4" >' . __( 'Shipping', 'woo-cart-abandonment-recovery' ) . '</td>
|
1692 |
<td>' . $currency_symbol . number_format_i18n( $discount + ( $cart_total - $total ) - $tax, 2 ) . '</td>
|
1693 |
</tr>
|
1694 |
<tr align="center" id="wcf-ca-cart-total">
|
1695 |
+
<td colspan="4" >' . __( 'Cart Total', 'woo-cart-abandonment-recovery' ) . '</td>
|
1696 |
<td>' . $currency_symbol . $cart_total . '</td>
|
1697 |
</tr>
|
1698 |
</tbody>
|
modules/cart-abandonment/class-cartflows-ca-email-templates-table.php
CHANGED
@@ -70,7 +70,7 @@ class Cartflows_Ca_Email_Templates_Table extends WP_List_Table {
|
|
70 |
$this->base_url
|
71 |
),
|
72 |
WCF_EMAIL_TEMPLATES_NONCE
|
73 |
-
) . '">' . __( 'Edit', '
|
74 |
|
75 |
$row_actions['delete'] = '<a onclick="return confirm(\'Are you sure to delete this email template?\');" href="' . wp_nonce_url(
|
76 |
add_query_arg(
|
@@ -82,7 +82,7 @@ class Cartflows_Ca_Email_Templates_Table extends WP_List_Table {
|
|
82 |
$this->base_url
|
83 |
),
|
84 |
WCF_EMAIL_TEMPLATES_NONCE
|
85 |
-
) . '">' . __( 'Delete', '
|
86 |
|
87 |
$row_actions['clone'] = '<a href="' . wp_nonce_url(
|
88 |
add_query_arg(
|
@@ -94,7 +94,7 @@ class Cartflows_Ca_Email_Templates_Table extends WP_List_Table {
|
|
94 |
$this->base_url
|
95 |
),
|
96 |
WCF_EMAIL_TEMPLATES_NONCE
|
97 |
-
) . '">' . __( 'Clone', '
|
98 |
|
99 |
return sprintf( '%s %s', esc_html( $item['template_name'] ), $this->row_actions( $row_actions ) );
|
100 |
}
|
@@ -116,7 +116,7 @@ class Cartflows_Ca_Email_Templates_Table extends WP_List_Table {
|
|
116 |
*/
|
117 |
function get_bulk_actions() {
|
118 |
$actions = array(
|
119 |
-
WCF_ACTION_EMAIL_TEMPLATES => __( 'Delete', '
|
120 |
);
|
121 |
return $actions;
|
122 |
}
|
@@ -180,10 +180,10 @@ class Cartflows_Ca_Email_Templates_Table extends WP_List_Table {
|
|
180 |
function get_columns() {
|
181 |
$columns = array(
|
182 |
'cb' => '<input type="checkbox" />',
|
183 |
-
'template_name' => __( 'Template Name', '
|
184 |
-
'email_subject' => __( 'Email Subject', '
|
185 |
-
'trigger_time' => __( 'Trigger After', '
|
186 |
-
'is_activated' => __( 'Is Activated?', '
|
187 |
|
188 |
);
|
189 |
return $columns;
|
70 |
$this->base_url
|
71 |
),
|
72 |
WCF_EMAIL_TEMPLATES_NONCE
|
73 |
+
) . '">' . __( 'Edit', 'woo-cart-abandonment-recovery' ) . '</a>';
|
74 |
|
75 |
$row_actions['delete'] = '<a onclick="return confirm(\'Are you sure to delete this email template?\');" href="' . wp_nonce_url(
|
76 |
add_query_arg(
|
82 |
$this->base_url
|
83 |
),
|
84 |
WCF_EMAIL_TEMPLATES_NONCE
|
85 |
+
) . '">' . __( 'Delete', 'woo-cart-abandonment-recovery' ) . '</a>';
|
86 |
|
87 |
$row_actions['clone'] = '<a href="' . wp_nonce_url(
|
88 |
add_query_arg(
|
94 |
$this->base_url
|
95 |
),
|
96 |
WCF_EMAIL_TEMPLATES_NONCE
|
97 |
+
) . '">' . __( 'Clone', 'woo-cart-abandonment-recovery' ) . '</a>';
|
98 |
|
99 |
return sprintf( '%s %s', esc_html( $item['template_name'] ), $this->row_actions( $row_actions ) );
|
100 |
}
|
116 |
*/
|
117 |
function get_bulk_actions() {
|
118 |
$actions = array(
|
119 |
+
WCF_ACTION_EMAIL_TEMPLATES => __( 'Delete', 'woo-cart-abandonment-recovery' ),
|
120 |
);
|
121 |
return $actions;
|
122 |
}
|
180 |
function get_columns() {
|
181 |
$columns = array(
|
182 |
'cb' => '<input type="checkbox" />',
|
183 |
+
'template_name' => __( 'Template Name', 'woo-cart-abandonment-recovery' ),
|
184 |
+
'email_subject' => __( 'Email Subject', 'woo-cart-abandonment-recovery' ),
|
185 |
+
'trigger_time' => __( 'Trigger After', 'woo-cart-abandonment-recovery' ),
|
186 |
+
'is_activated' => __( 'Is Activated?', 'woo-cart-abandonment-recovery' ),
|
187 |
|
188 |
);
|
189 |
return $columns;
|
modules/cart-abandonment/class-cartflows-ca-email-templates.php
CHANGED
@@ -183,7 +183,7 @@ class Cartflows_Ca_Email_Templates {
|
|
183 |
<div id="message" class="notice notice-success is-dismissible">
|
184 |
<p>
|
185 |
<strong>
|
186 |
-
<?php _e( 'The Email Template has been successfully added.', '
|
187 |
</strong>
|
188 |
</p>
|
189 |
</div>
|
@@ -193,7 +193,7 @@ class Cartflows_Ca_Email_Templates {
|
|
193 |
<div id="message" class="notice notice-success is-dismissible">
|
194 |
<p>
|
195 |
<strong>
|
196 |
-
<?php _e( 'The Email Template has been cloned successfully.', '
|
197 |
</strong>
|
198 |
</p>
|
199 |
</div>
|
@@ -203,7 +203,7 @@ class Cartflows_Ca_Email_Templates {
|
|
203 |
<div id="message" class="notice notice-success is-dismissible">
|
204 |
<p>
|
205 |
<strong>
|
206 |
-
<?php _e( 'The Email Template has been successfully deleted.', '
|
207 |
</strong>
|
208 |
</p>
|
209 |
</div>
|
@@ -212,7 +212,7 @@ class Cartflows_Ca_Email_Templates {
|
|
212 |
<div id="message" class="notice notice-success is-dismissible">
|
213 |
<p>
|
214 |
<strong>
|
215 |
-
<?php _e( 'The Email Template has been successfully updated.', '
|
216 |
</strong>
|
217 |
</p>
|
218 |
</div>
|
@@ -222,7 +222,7 @@ class Cartflows_Ca_Email_Templates {
|
|
222 |
<div id="message" class="notice notice-success is-dismissible">
|
223 |
<p>
|
224 |
<strong>
|
225 |
-
<?php _e( 'Default Email Templates has been restored successfully.', '
|
226 |
</strong>
|
227 |
</p>
|
228 |
</div>
|
@@ -382,13 +382,13 @@ class Cartflows_Ca_Email_Templates {
|
|
382 |
?>
|
383 |
<div id="poststuff">
|
384 |
<div> <!-- <div class="postbox" > -->
|
385 |
-
<h3><?php _e($display_message, '
|
386 |
<hr/>
|
387 |
<div>
|
388 |
<table class="form-table" id="addedit_template">
|
389 |
<tr>
|
390 |
<th>
|
391 |
-
<label for="wcf_email_subject"><b><?php _e( 'Activate Template now?', '
|
392 |
</th>
|
393 |
<td>
|
394 |
<?php
|
@@ -408,7 +408,7 @@ class Cartflows_Ca_Email_Templates {
|
|
408 |
|
409 |
<tr>
|
410 |
<th>
|
411 |
-
<label for="wcf_template_name"><b><?php _e( 'Template Name:', '
|
412 |
</th>
|
413 |
<td>
|
414 |
<?php
|
@@ -423,7 +423,7 @@ class Cartflows_Ca_Email_Templates {
|
|
423 |
|
424 |
<tr>
|
425 |
<th>
|
426 |
-
<label for="wcf_email_subject"><b><?php _e( 'Email Subject:', '
|
427 |
</th>
|
428 |
<td>
|
429 |
<?php
|
@@ -438,7 +438,7 @@ class Cartflows_Ca_Email_Templates {
|
|
438 |
|
439 |
<tr>
|
440 |
<th>
|
441 |
-
<label for="wcf_email_body"><b><?php _e( 'Email Body:', '
|
442 |
</th>
|
443 |
<td>
|
444 |
<?php
|
@@ -467,7 +467,7 @@ class Cartflows_Ca_Email_Templates {
|
|
467 |
|
468 |
<tr>
|
469 |
<th>
|
470 |
-
<label for="wcf_override_global_coupon"><b><?php _e( 'Create Coupon', '
|
471 |
</th>
|
472 |
<td>
|
473 |
<?php
|
@@ -487,7 +487,7 @@ class Cartflows_Ca_Email_Templates {
|
|
487 |
|
488 |
<tr>
|
489 |
<th>
|
490 |
-
<label for="wcf_email_discount_type"><b><?php _e( 'Discount Type', '
|
491 |
</th>
|
492 |
<td>
|
493 |
<?php
|
@@ -519,7 +519,7 @@ class Cartflows_Ca_Email_Templates {
|
|
519 |
|
520 |
<tr>
|
521 |
<th>
|
522 |
-
<label for="wcf_email_discount_amount"><b><?php _e( 'Coupon Amount', '
|
523 |
</th>
|
524 |
<td>
|
525 |
<?php
|
@@ -537,7 +537,7 @@ class Cartflows_Ca_Email_Templates {
|
|
537 |
|
538 |
<tr>
|
539 |
<th>
|
540 |
-
<label for="wcf_email_coupon_expiry_date"><b><?php _e( 'Coupon expiry date', '
|
541 |
</th>
|
542 |
<td>
|
543 |
<?php
|
@@ -574,7 +574,7 @@ class Cartflows_Ca_Email_Templates {
|
|
574 |
|
575 |
<tr>
|
576 |
<th>
|
577 |
-
<label for="wcf_email_subject"><b><?php _e( 'Send This Email', '
|
578 |
</th>
|
579 |
<td>
|
580 |
<?php
|
@@ -607,7 +607,7 @@ class Cartflows_Ca_Email_Templates {
|
|
607 |
?>
|
608 |
</select>
|
609 |
<span class="description">
|
610 |
-
<?php _e( 'after cart is abandoned.', '
|
611 |
</span>
|
612 |
|
613 |
|
@@ -617,7 +617,7 @@ class Cartflows_Ca_Email_Templates {
|
|
617 |
<tr>
|
618 |
<?php $current_user = wp_get_current_user(); ?>
|
619 |
<th>
|
620 |
-
<label for="wcf_email_preview"><b><?php _e( 'Send Test Email To:', '
|
621 |
</th>
|
622 |
<td>
|
623 |
<input class="wcf-ca-trigger-input" type="text" id="wcf_send_test_email" name="send_test_email" value="<?php echo $current_user->user_email; ?>" class="wcf-ca-trigger-input">
|
@@ -931,10 +931,10 @@ class Cartflows_Ca_Email_Templates {
|
|
931 |
?>
|
932 |
<div class="wcf-ca-report-btn">
|
933 |
<div class="wcf-ca-left-report-field-group">
|
934 |
-
<a style="cursor: pointer" href="<?php echo $add_new_template_url; ?>" class="button-secondary"><?php _e( 'Create New Template', '
|
935 |
</div>
|
936 |
<div class="wcf-ca-right-report-field-group">
|
937 |
-
<a onclick="return confirm('Are you sure to restore email templates?');" style="cursor: pointer" href="<?php echo $restore_template_url; ?>" class="button-secondary"><?php _e( ' Restore Default Templates', '
|
938 |
</div>
|
939 |
</div>
|
940 |
<?php
|
183 |
<div id="message" class="notice notice-success is-dismissible">
|
184 |
<p>
|
185 |
<strong>
|
186 |
+
<?php _e( 'The Email Template has been successfully added.', 'woo-cart-abandonment-recovery' ); ?>
|
187 |
</strong>
|
188 |
</p>
|
189 |
</div>
|
193 |
<div id="message" class="notice notice-success is-dismissible">
|
194 |
<p>
|
195 |
<strong>
|
196 |
+
<?php _e( 'The Email Template has been cloned successfully.', 'woo-cart-abandonment-recovery' ); ?>
|
197 |
</strong>
|
198 |
</p>
|
199 |
</div>
|
203 |
<div id="message" class="notice notice-success is-dismissible">
|
204 |
<p>
|
205 |
<strong>
|
206 |
+
<?php _e( 'The Email Template has been successfully deleted.', 'woo-cart-abandonment-recovery' ); ?>
|
207 |
</strong>
|
208 |
</p>
|
209 |
</div>
|
212 |
<div id="message" class="notice notice-success is-dismissible">
|
213 |
<p>
|
214 |
<strong>
|
215 |
+
<?php _e( 'The Email Template has been successfully updated.', 'woo-cart-abandonment-recovery' ); ?>
|
216 |
</strong>
|
217 |
</p>
|
218 |
</div>
|
222 |
<div id="message" class="notice notice-success is-dismissible">
|
223 |
<p>
|
224 |
<strong>
|
225 |
+
<?php _e( 'Default Email Templates has been restored successfully.', 'woo-cart-abandonment-recovery' ); ?>
|
226 |
</strong>
|
227 |
</p>
|
228 |
</div>
|
382 |
?>
|
383 |
<div id="poststuff">
|
384 |
<div> <!-- <div class="postbox" > -->
|
385 |
+
<h3><?php _e($display_message, 'woo-cart-abandonment-recovery'); // phpcs:ignore ?></h3>
|
386 |
<hr/>
|
387 |
<div>
|
388 |
<table class="form-table" id="addedit_template">
|
389 |
<tr>
|
390 |
<th>
|
391 |
+
<label for="wcf_email_subject"><b><?php _e( 'Activate Template now?', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
392 |
</th>
|
393 |
<td>
|
394 |
<?php
|
408 |
|
409 |
<tr>
|
410 |
<th>
|
411 |
+
<label for="wcf_template_name"><b><?php _e( 'Template Name:', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
412 |
</th>
|
413 |
<td>
|
414 |
<?php
|
423 |
|
424 |
<tr>
|
425 |
<th>
|
426 |
+
<label for="wcf_email_subject"><b><?php _e( 'Email Subject:', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
427 |
</th>
|
428 |
<td>
|
429 |
<?php
|
438 |
|
439 |
<tr>
|
440 |
<th>
|
441 |
+
<label for="wcf_email_body"><b><?php _e( 'Email Body:', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
442 |
</th>
|
443 |
<td>
|
444 |
<?php
|
467 |
|
468 |
<tr>
|
469 |
<th>
|
470 |
+
<label for="wcf_override_global_coupon"><b><?php _e( 'Create Coupon', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
471 |
</th>
|
472 |
<td>
|
473 |
<?php
|
487 |
|
488 |
<tr>
|
489 |
<th>
|
490 |
+
<label for="wcf_email_discount_type"><b><?php _e( 'Discount Type', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
491 |
</th>
|
492 |
<td>
|
493 |
<?php
|
519 |
|
520 |
<tr>
|
521 |
<th>
|
522 |
+
<label for="wcf_email_discount_amount"><b><?php _e( 'Coupon Amount', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
523 |
</th>
|
524 |
<td>
|
525 |
<?php
|
537 |
|
538 |
<tr>
|
539 |
<th>
|
540 |
+
<label for="wcf_email_coupon_expiry_date"><b><?php _e( 'Coupon expiry date', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
541 |
</th>
|
542 |
<td>
|
543 |
<?php
|
574 |
|
575 |
<tr>
|
576 |
<th>
|
577 |
+
<label for="wcf_email_subject"><b><?php _e( 'Send This Email', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
578 |
</th>
|
579 |
<td>
|
580 |
<?php
|
607 |
?>
|
608 |
</select>
|
609 |
<span class="description">
|
610 |
+
<?php _e( 'after cart is abandoned.', 'woo-cart-abandonment-recovery' ); ?>
|
611 |
</span>
|
612 |
|
613 |
|
617 |
<tr>
|
618 |
<?php $current_user = wp_get_current_user(); ?>
|
619 |
<th>
|
620 |
+
<label for="wcf_email_preview"><b><?php _e( 'Send Test Email To:', 'woo-cart-abandonment-recovery' ); ?></b></label>
|
621 |
</th>
|
622 |
<td>
|
623 |
<input class="wcf-ca-trigger-input" type="text" id="wcf_send_test_email" name="send_test_email" value="<?php echo $current_user->user_email; ?>" class="wcf-ca-trigger-input">
|
931 |
?>
|
932 |
<div class="wcf-ca-report-btn">
|
933 |
<div class="wcf-ca-left-report-field-group">
|
934 |
+
<a style="cursor: pointer" href="<?php echo $add_new_template_url; ?>" class="button-secondary"><?php _e( 'Create New Template', 'woo-cart-abandonment-recovery' ); ?></a>
|
935 |
</div>
|
936 |
<div class="wcf-ca-right-report-field-group">
|
937 |
+
<a onclick="return confirm('Are you sure to restore email templates?');" style="cursor: pointer" href="<?php echo $restore_template_url; ?>" class="button-secondary"><?php _e( ' Restore Default Templates', 'woo-cart-abandonment-recovery' ); ?></a>
|
938 |
</div>
|
939 |
</div>
|
940 |
<?php
|
modules/cart-abandonment/includes/admin/cartflows-ca-single-report-details.php
CHANGED
@@ -35,7 +35,7 @@
|
|
35 |
|
36 |
<div class="wcf-ca-report-btn" style="padding: 0px">
|
37 |
<div class="wcf-ca-left-report-field-group">
|
38 |
-
<h2> <?php _e( 'Email Details:', '
|
39 |
</div>
|
40 |
<div class="wcf-ca-right-report-field-group">
|
41 |
|
@@ -67,7 +67,7 @@
|
|
67 |
</div>
|
68 |
|
69 |
<?php if ( empty( $scheduled_emails ) ) : ?>
|
70 |
-
<div style="text-align: center;"><strong> <?php _e( ' No Email Scheduled.', '
|
71 |
</div>
|
72 |
<?php else : ?>
|
73 |
<table cellpadding="15" cellspacing="0" class="wcf-table wcf-table-striped fixed posts">
|
@@ -107,19 +107,19 @@
|
|
107 |
case 0:
|
108 |
if ( $details->unsubscribed ) {
|
109 |
$icon = '<span class="dashicons dashicons-minus"></span>';
|
110 |
-
$title = __( 'The email has been unsubscribed and won\'t be sent further.', '
|
111 |
} else {
|
112 |
$icon = '<span class="dashicons dashicons-no"></span>';
|
113 |
-
$title = __( 'Email is in the queue and will be sent at the scheduled time.', '
|
114 |
}
|
115 |
break;
|
116 |
case 1:
|
117 |
$icon = '<span class="dashicons dashicons-yes wp-ui-text-highlight" ></span>';
|
118 |
-
$title = __( 'The email has been sent.', '
|
119 |
break;
|
120 |
case -1:
|
121 |
$icon = '<span class="dashicons dashicons-dismiss wp-ui-text-highlight" ></span>';
|
122 |
-
$title = __( 'The email has been unscheduled due to the complete order and won\'t be sent further.', '
|
123 |
break;
|
124 |
}
|
125 |
|
@@ -152,11 +152,11 @@
|
|
152 |
|
153 |
<div class="wcf-ca-report-btn" style="padding: 0px">
|
154 |
<div class="wcf-ca-left-report-field-group">
|
155 |
-
<h2> <?php _e( 'User Address Details:', '
|
156 |
</div>
|
157 |
<div class="wcf-ca-right-report-field-group">
|
158 |
<?php if ( $details->unsubscribed ) : ?>
|
159 |
-
<span class="wcf-ca-tag"> <?php _e( 'Unsubscribed', '
|
160 |
<?php endif; ?>
|
161 |
|
162 |
<span class="wcf-ca-tag"> <?php echo ucfirst( $details->order_status ); ?> </span>
|
@@ -164,61 +164,61 @@
|
|
164 |
</div>
|
165 |
|
166 |
<div class="wcf-ca-user-address wcf-pull-left">
|
167 |
-
<h3> <?php _e( 'Billing Address', '
|
168 |
-
<p><strong> <?php _e( 'Name', '
|
169 |
<?php echo $user_details->wcf_first_name . ' ' . $user_details->wcf_last_name; ?> </p>
|
170 |
<p>
|
171 |
-
<strong> <?php _e( 'Email address', '
|
172 |
<a href="mailto:<?php echo( $details->email ); ?>"><?php echo( $details->email ); ?></a>
|
173 |
</p>
|
174 |
|
175 |
<p>
|
176 |
-
<strong> <?php _e( 'Phone', '
|
177 |
<a href="tel:<?php echo( $user_details->wcf_phone_number ); ?>"><?php echo( $user_details->wcf_phone_number ); ?></a>
|
178 |
</p>
|
179 |
|
180 |
<p>
|
181 |
-
<strong> <?php _e( 'Address 1:', '
|
182 |
</p>
|
183 |
<p>
|
184 |
-
<strong> <?php _e( 'Address 2:', '
|
185 |
</p>
|
186 |
<p>
|
187 |
-
<strong> <?php _e( 'Country, City:', '
|
188 |
</p>
|
189 |
<p>
|
190 |
-
<strong> <?php _e( 'State:', '
|
191 |
</p>
|
192 |
|
193 |
<p>
|
194 |
-
<strong> <?php _e( 'Postcode:', '
|
195 |
</p>
|
196 |
</div>
|
197 |
|
198 |
<div class="wcf-ca-user-address wcf-pull-left">
|
199 |
-
<h3> <?php _e( 'Shipping Address', '
|
200 |
<p>
|
201 |
-
<strong> <?php _e( 'Address 1:', '
|
202 |
</p>
|
203 |
<p>
|
204 |
-
<strong> <?php _e( 'Address 2:', '
|
205 |
</p>
|
206 |
<p>
|
207 |
-
<strong> <?php _e( 'City:', '
|
208 |
</p>
|
209 |
<p>
|
210 |
-
<strong> <?php _e( 'State:', '
|
211 |
</p>
|
212 |
<p>
|
213 |
-
<strong> <?php _e( 'Country:', '
|
214 |
</p>
|
215 |
<p>
|
216 |
-
<strong> <?php _e( 'Postcode:', '
|
217 |
</p>
|
218 |
<p>
|
219 |
<?php $cart_abandonment = Cartflows_Ca_Cart_Abandonment::get_instance(); ?>
|
220 |
<strong> <a target="_blank" href=" <?php echo $cart_abandonment->get_checkout_url( $details->checkout_id, $details->session_id ); ?> ">
|
221 |
-
<?php _e( 'Checkout Link', '
|
222 |
</a>
|
223 |
</strong>
|
224 |
</p>
|
@@ -233,7 +233,7 @@
|
|
233 |
<div class="wcf-ca-panel">
|
234 |
<div class="wcf-ca-column wcf-ca-column-one">
|
235 |
<div class="wcf-ca-user-order">
|
236 |
-
<h2> <?php _e( 'User Order Details:', '
|
237 |
<?php echo( $this->get_admin_product_block( $details->cart_contents, $details->cart_total ) ); ?>
|
238 |
</div>
|
239 |
</div>
|
35 |
|
36 |
<div class="wcf-ca-report-btn" style="padding: 0px">
|
37 |
<div class="wcf-ca-left-report-field-group">
|
38 |
+
<h2> <?php _e( 'Email Details:', 'woo-cart-abandonment-recovery' ); ?> </h2>
|
39 |
</div>
|
40 |
<div class="wcf-ca-right-report-field-group">
|
41 |
|
67 |
</div>
|
68 |
|
69 |
<?php if ( empty( $scheduled_emails ) ) : ?>
|
70 |
+
<div style="text-align: center;"><strong> <?php _e( ' No Email Scheduled.', 'woo-cart-abandonment-recovery' ); ?></strong>
|
71 |
</div>
|
72 |
<?php else : ?>
|
73 |
<table cellpadding="15" cellspacing="0" class="wcf-table wcf-table-striped fixed posts">
|
107 |
case 0:
|
108 |
if ( $details->unsubscribed ) {
|
109 |
$icon = '<span class="dashicons dashicons-minus"></span>';
|
110 |
+
$title = __( 'The email has been unsubscribed and won\'t be sent further.', 'woo-cart-abandonment-recovery' );
|
111 |
} else {
|
112 |
$icon = '<span class="dashicons dashicons-no"></span>';
|
113 |
+
$title = __( 'Email is in the queue and will be sent at the scheduled time.', 'woo-cart-abandonment-recovery' );
|
114 |
}
|
115 |
break;
|
116 |
case 1:
|
117 |
$icon = '<span class="dashicons dashicons-yes wp-ui-text-highlight" ></span>';
|
118 |
+
$title = __( 'The email has been sent.', 'woo-cart-abandonment-recovery' );
|
119 |
break;
|
120 |
case -1:
|
121 |
$icon = '<span class="dashicons dashicons-dismiss wp-ui-text-highlight" ></span>';
|
122 |
+
$title = __( 'The email has been unscheduled due to the complete order and won\'t be sent further.', 'woo-cart-abandonment-recovery' );
|
123 |
break;
|
124 |
}
|
125 |
|
152 |
|
153 |
<div class="wcf-ca-report-btn" style="padding: 0px">
|
154 |
<div class="wcf-ca-left-report-field-group">
|
155 |
+
<h2> <?php _e( 'User Address Details:', 'woo-cart-abandonment-recovery' ); ?> </h2>
|
156 |
</div>
|
157 |
<div class="wcf-ca-right-report-field-group">
|
158 |
<?php if ( $details->unsubscribed ) : ?>
|
159 |
+
<span class="wcf-ca-tag"> <?php _e( 'Unsubscribed', 'woo-cart-abandonment-recovery' ); ?> </span>
|
160 |
<?php endif; ?>
|
161 |
|
162 |
<span class="wcf-ca-tag"> <?php echo ucfirst( $details->order_status ); ?> </span>
|
164 |
</div>
|
165 |
|
166 |
<div class="wcf-ca-user-address wcf-pull-left">
|
167 |
+
<h3> <?php _e( 'Billing Address', 'woo-cart-abandonment-recovery' ); ?> </h3>
|
168 |
+
<p><strong> <?php _e( 'Name', 'woo-cart-abandonment-recovery' ); ?> </strong>
|
169 |
<?php echo $user_details->wcf_first_name . ' ' . $user_details->wcf_last_name; ?> </p>
|
170 |
<p>
|
171 |
+
<strong> <?php _e( 'Email address', 'woo-cart-abandonment-recovery' ); ?> </strong>
|
172 |
<a href="mailto:<?php echo( $details->email ); ?>"><?php echo( $details->email ); ?></a>
|
173 |
</p>
|
174 |
|
175 |
<p>
|
176 |
+
<strong> <?php _e( 'Phone', 'woo-cart-abandonment-recovery' ); ?> </strong>
|
177 |
<a href="tel:<?php echo( $user_details->wcf_phone_number ); ?>"><?php echo( $user_details->wcf_phone_number ); ?></a>
|
178 |
</p>
|
179 |
|
180 |
<p>
|
181 |
+
<strong> <?php _e( 'Address 1:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo $user_details->wcf_billing_address_1; ?>
|
182 |
</p>
|
183 |
<p>
|
184 |
+
<strong> <?php _e( 'Address 2:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo $user_details->wcf_billing_address_2; ?>
|
185 |
</p>
|
186 |
<p>
|
187 |
+
<strong> <?php _e( 'Country, City:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo( $user_details->wcf_location ); ?>
|
188 |
</p>
|
189 |
<p>
|
190 |
+
<strong> <?php _e( 'State:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo( $user_details->wcf_billing_state ); ?>
|
191 |
</p>
|
192 |
|
193 |
<p>
|
194 |
+
<strong> <?php _e( 'Postcode:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo( $user_details->wcf_billing_postcode ); ?>
|
195 |
</p>
|
196 |
</div>
|
197 |
|
198 |
<div class="wcf-ca-user-address wcf-pull-left">
|
199 |
+
<h3> <?php _e( 'Shipping Address', 'woo-cart-abandonment-recovery' ); ?> </h3>
|
200 |
<p>
|
201 |
+
<strong> <?php _e( 'Address 1:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo( $user_details->wcf_shipping_address_1 ); ?>
|
202 |
</p>
|
203 |
<p>
|
204 |
+
<strong> <?php _e( 'Address 2:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo( $user_details->wcf_shipping_address_2 ); ?>
|
205 |
</p>
|
206 |
<p>
|
207 |
+
<strong> <?php _e( 'City:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo( $user_details->wcf_shipping_city ); ?>
|
208 |
</p>
|
209 |
<p>
|
210 |
+
<strong> <?php _e( 'State:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo( $user_details->wcf_shipping_state ); ?>
|
211 |
</p>
|
212 |
<p>
|
213 |
+
<strong> <?php _e( 'Country:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo( $user_details->wcf_shipping_country ); ?>
|
214 |
</p>
|
215 |
<p>
|
216 |
+
<strong> <?php _e( 'Postcode:', 'woo-cart-abandonment-recovery' ); ?> </strong> <?php echo( $user_details->wcf_shipping_postcode ); ?>
|
217 |
</p>
|
218 |
<p>
|
219 |
<?php $cart_abandonment = Cartflows_Ca_Cart_Abandonment::get_instance(); ?>
|
220 |
<strong> <a target="_blank" href=" <?php echo $cart_abandonment->get_checkout_url( $details->checkout_id, $details->session_id ); ?> ">
|
221 |
+
<?php _e( 'Checkout Link', 'woo-cart-abandonment-recovery' ); ?>
|
222 |
</a>
|
223 |
</strong>
|
224 |
</p>
|
233 |
<div class="wcf-ca-panel">
|
234 |
<div class="wcf-ca-column wcf-ca-column-one">
|
235 |
<div class="wcf-ca-user-order">
|
236 |
+
<h2> <?php _e( 'User Order Details:', 'woo-cart-abandonment-recovery' ); ?> </h2>
|
237 |
<?php echo( $this->get_admin_product_block( $details->cart_contents, $details->cart_total ) ); ?>
|
238 |
</div>
|
239 |
</div>
|
modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-reports.php
CHANGED
@@ -43,26 +43,26 @@
|
|
43 |
|
44 |
<div class="wcf-ca-ibox">
|
45 |
<div class="wcf-ca-ibox-title">
|
46 |
-
<h3> <?php _e( 'Recoverable Orders', '
|
47 |
</div>
|
48 |
<div class="wcf-ca-ibox-content">
|
49 |
<h1> <?php echo $abandoned_report['no_of_orders']; ?> </h1>
|
50 |
-
<small> <?php _e( 'Total Recoverable Orders.', '
|
51 |
</div>
|
52 |
</div>
|
53 |
|
54 |
<div class="wcf-ca-ibox">
|
55 |
-
<div class="wcf-ca-ibox-title"><h3><?php _e( 'Recovered Orders', '
|
56 |
<div class="wcf-ca-ibox-content"><h1><?php echo $recovered_report['no_of_orders']; ?></h1>
|
57 |
-
<small> <?php _e( 'Total Recovered Orders.', '
|
58 |
</div>
|
59 |
</div>
|
60 |
|
61 |
<div class="wcf-ca-ibox">
|
62 |
-
<div class="wcf-ca-ibox-title"><h3><?php _e( 'Lost Orders', '
|
63 |
<div class="wcf-ca-ibox-content"><h1
|
64 |
><?php echo $lost_report['no_of_orders']; ?></h1>
|
65 |
-
<small> <?php _e( 'Total Lost Orders.', '
|
66 |
</div>
|
67 |
</div>
|
68 |
|
@@ -71,30 +71,30 @@
|
|
71 |
<div class="wcf-ca-grid-container">
|
72 |
|
73 |
<div class="wcf-ca-ibox">
|
74 |
-
<div class="wcf-ca-ibox-title"><h3> <?php _e( 'Recoverable Revenue', '
|
75 |
<div class="wcf-ca-ibox-content">
|
76 |
<h1>
|
77 |
<?php echo $currency_symbol . number_format_i18n( $abandoned_report['revenue'], 2 ); ?>
|
78 |
</h1>
|
79 |
-
<small> <?php _e( 'Total Recoverable Revenue.', '
|
80 |
</div>
|
81 |
</div>
|
82 |
|
83 |
<div class="wcf-ca-ibox">
|
84 |
-
<div class="wcf-ca-ibox-title"><h3><?php _e( 'Recovered Revenue', '
|
85 |
<div class="wcf-ca-ibox-content"><h1>
|
86 |
<?php
|
87 |
echo $currency_symbol . number_format_i18n( $recovered_report['revenue'], 2 );
|
88 |
?>
|
89 |
</h1>
|
90 |
-
<small> <?php _e( 'Total Recovered Revenue.', '
|
91 |
</div>
|
92 |
</div>
|
93 |
|
94 |
<div class="wcf-ca-ibox">
|
95 |
-
<div class="wcf-ca-ibox-title"><h3> <?php _e( 'Recovery Rate', '
|
96 |
<div class="wcf-ca-ibox-content"><h1><?php echo $conversion_rate . '%'; ?></h1>
|
97 |
-
<small><?php _e( 'Total Percentage Of Recovered Orders After Abandonment.', '
|
98 |
</div>
|
99 |
</div>
|
100 |
|
@@ -132,7 +132,7 @@ if ( count( $wcf_list_table->items ) ) {
|
|
132 |
<?php
|
133 |
} else {
|
134 |
|
135 |
-
echo '<div> <strong> ' . __( 'No Orders Found.', '
|
136 |
|
137 |
}
|
138 |
|
43 |
|
44 |
<div class="wcf-ca-ibox">
|
45 |
<div class="wcf-ca-ibox-title">
|
46 |
+
<h3> <?php _e( 'Recoverable Orders', 'woo-cart-abandonment-recovery' ); ?> </h3>
|
47 |
</div>
|
48 |
<div class="wcf-ca-ibox-content">
|
49 |
<h1> <?php echo $abandoned_report['no_of_orders']; ?> </h1>
|
50 |
+
<small> <?php _e( 'Total Recoverable Orders.', 'woo-cart-abandonment-recovery' ); ?> </small>
|
51 |
</div>
|
52 |
</div>
|
53 |
|
54 |
<div class="wcf-ca-ibox">
|
55 |
+
<div class="wcf-ca-ibox-title"><h3><?php _e( 'Recovered Orders', 'woo-cart-abandonment-recovery' ); ?></h3></div>
|
56 |
<div class="wcf-ca-ibox-content"><h1><?php echo $recovered_report['no_of_orders']; ?></h1>
|
57 |
+
<small> <?php _e( 'Total Recovered Orders.', 'woo-cart-abandonment-recovery' ); ?> </small>
|
58 |
</div>
|
59 |
</div>
|
60 |
|
61 |
<div class="wcf-ca-ibox">
|
62 |
+
<div class="wcf-ca-ibox-title"><h3><?php _e( 'Lost Orders', 'woo-cart-abandonment-recovery' ); ?></h3></div>
|
63 |
<div class="wcf-ca-ibox-content"><h1
|
64 |
><?php echo $lost_report['no_of_orders']; ?></h1>
|
65 |
+
<small> <?php _e( 'Total Lost Orders.', 'woo-cart-abandonment-recovery' ); ?> </small>
|
66 |
</div>
|
67 |
</div>
|
68 |
|
71 |
<div class="wcf-ca-grid-container">
|
72 |
|
73 |
<div class="wcf-ca-ibox">
|
74 |
+
<div class="wcf-ca-ibox-title"><h3> <?php _e( 'Recoverable Revenue', 'woo-cart-abandonment-recovery' ); ?> </h3></div>
|
75 |
<div class="wcf-ca-ibox-content">
|
76 |
<h1>
|
77 |
<?php echo $currency_symbol . number_format_i18n( $abandoned_report['revenue'], 2 ); ?>
|
78 |
</h1>
|
79 |
+
<small> <?php _e( 'Total Recoverable Revenue.', 'woo-cart-abandonment-recovery' ); ?> </small>
|
80 |
</div>
|
81 |
</div>
|
82 |
|
83 |
<div class="wcf-ca-ibox">
|
84 |
+
<div class="wcf-ca-ibox-title"><h3><?php _e( 'Recovered Revenue', 'woo-cart-abandonment-recovery' ); ?></h3></div>
|
85 |
<div class="wcf-ca-ibox-content"><h1>
|
86 |
<?php
|
87 |
echo $currency_symbol . number_format_i18n( $recovered_report['revenue'], 2 );
|
88 |
?>
|
89 |
</h1>
|
90 |
+
<small> <?php _e( 'Total Recovered Revenue.', 'woo-cart-abandonment-recovery' ); ?> </small>
|
91 |
</div>
|
92 |
</div>
|
93 |
|
94 |
<div class="wcf-ca-ibox">
|
95 |
+
<div class="wcf-ca-ibox-title"><h3> <?php _e( 'Recovery Rate', 'woo-cart-abandonment-recovery' ); ?> </h3></div>
|
96 |
<div class="wcf-ca-ibox-content"><h1><?php echo $conversion_rate . '%'; ?></h1>
|
97 |
+
<small><?php _e( 'Total Percentage Of Recovered Orders After Abandonment.', 'woo-cart-abandonment-recovery' ); ?> </small>
|
98 |
</div>
|
99 |
</div>
|
100 |
|
132 |
<?php
|
133 |
} else {
|
134 |
|
135 |
+
echo '<div> <strong> ' . __( 'No Orders Found.', 'woo-cart-abandonment-recovery' ) . '</strong> </div>';
|
136 |
|
137 |
}
|
138 |
|
modules/cart-abandonment/includes/admin/cartflows-cart-abandonment-tabs.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
|
8 |
?>
|
9 |
<div class="wrap">
|
10 |
-
<h1 id="wcf_cart_abandonment_tracking_table"><?php echo __( 'WooCommerce Cart Abandonment Recovery ', '
|
11 |
<?php
|
12 |
|
13 |
$action = filter_input( INPUT_GET, 'action', FILTER_SANITIZE_STRING );
|
7 |
|
8 |
?>
|
9 |
<div class="wrap">
|
10 |
+
<h1 id="wcf_cart_abandonment_tracking_table"><?php echo __( 'WooCommerce Cart Abandonment Recovery ', 'woo-cart-abandonment-recovery' ); ?></h1>
|
11 |
<?php
|
12 |
|
13 |
$action = filter_input( INPUT_GET, 'action', FILTER_SANITIZE_STRING );
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.me/BrainstormForce
|
|
4 |
Tags: woocommerce, cart abandonment, cart recovery
|
5 |
Requires at least: 4.4
|
6 |
Tested up to: 5.2
|
7 |
-
Stable tag: 1.1.
|
8 |
Requires PHP: 5.6
|
9 |
License: GPLv2 or later
|
10 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
@@ -17,9 +17,9 @@ Recover your lost revenue. Capture email address of users on the checkout page a
|
|
17 |
|
18 |
Research shows about 60% to 80% of the users who go to the checkout page, do not complete their purchase. Even the best <a href="https://wpastra.com/best-checkout-experience/" target="_blank">optimized checkout process</a> has an abandonment rate of 20%
|
19 |
|
20 |
-
|
21 |
|
22 |
-
But we have good news for you. Install our plugin and recover your lost revenue
|
23 |
|
24 |
**How Does This Plugin Work?**
|
25 |
|
@@ -54,6 +54,7 @@ WooCommerce Cart Abandonment Recovery offers everything you need to recover your
|
|
54 |
|
55 |
* **Reports**: You get a full report of how the plugin is working behind the scenes, and recovering your lost revenue on autopilot.
|
56 |
|
|
|
57 |
|
58 |
**Is This Plugin Really Free? What’s the Catch?**
|
59 |
|
@@ -85,34 +86,39 @@ The plugin will start recovering your lost sales in as quickly as 15 minutes.
|
|
85 |
|
86 |
== Frequently Asked Questions ==
|
87 |
|
88 |
-
=
|
89 |
|
90 |
-
|
91 |
|
92 |
-
=
|
93 |
|
94 |
-
|
95 |
|
96 |
-
=
|
97 |
|
98 |
-
|
99 |
|
100 |
-
=
|
101 |
|
102 |
-
|
103 |
|
104 |
-
= Can I
|
105 |
|
106 |
-
|
107 |
|
108 |
-
=
|
109 |
|
110 |
-
|
111 |
-
The plugin offers an advanced feature for admin to unsubscribe a particular user. As the admin can view the list of abandoned users, he can manually do the unsubscription.
|
112 |
|
113 |
-
=
|
114 |
|
115 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
|
117 |
== Screenshots ==
|
118 |
|
@@ -122,6 +128,13 @@ Yes, the webhook feature will help you with this. You just need to create a webh
|
|
122 |
4. General settings for Email, Webhook (Coupon Code), GDPR
|
123 |
|
124 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
= Version 1.1.6 - Friday, 19th July 2019
|
126 |
* New: Bundled product support for email checkout URL.
|
127 |
* Improvement: Added phone number and address while triggering the to webhook.
|
4 |
Tags: woocommerce, cart abandonment, cart recovery
|
5 |
Requires at least: 4.4
|
6 |
Tested up to: 5.2
|
7 |
+
Stable tag: 1.1.7
|
8 |
Requires PHP: 5.6
|
9 |
License: GPLv2 or later
|
10 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
17 |
|
18 |
Research shows about 60% to 80% of the users who go to the checkout page, do not complete their purchase. Even the best <a href="https://wpastra.com/best-checkout-experience/" target="_blank">optimized checkout process</a> has an abandonment rate of 20%
|
19 |
|
20 |
+
Cart gets abandoned for many reasons.
|
21 |
|
22 |
+
But we have good news for you. Install our plugin and automatically recover your lost revenue **absolutely free**.
|
23 |
|
24 |
**How Does This Plugin Work?**
|
25 |
|
54 |
|
55 |
* **Reports**: You get a full report of how the plugin is working behind the scenes, and recovering your lost revenue on autopilot.
|
56 |
|
57 |
+
[youtube https://www.youtube.com/watch?v=VWGxjjuP2_k]
|
58 |
|
59 |
**Is This Plugin Really Free? What’s the Catch?**
|
60 |
|
86 |
|
87 |
== Frequently Asked Questions ==
|
88 |
|
89 |
+
= What Is Meant by Cart Abandonment? =
|
90 |
|
91 |
+
While shopping, a user adds products to the cart. But if this user doesn't complete the purchase on the checkout page, the cart is considered abandoned.
|
92 |
|
93 |
+
= How Often Cart Gets Abandoned? Is It Happening on My Shop? =
|
94 |
|
95 |
+
According to research, 6 out of 10 visitors, leave the checkout page and do not complete the purchase. Even if you have motivated enough, 20% to 25% of the shoppers leave the purchase process.
|
96 |
|
97 |
+
= Do I Need Any Technical Experience to Use This Plugin? =
|
98 |
|
99 |
+
Any WooCommerce shop owner selling anything online can use this plugin.You will not need any technical experience to start recovering your lost revenue. Once initiated the plugin will work automatically for you.
|
100 |
|
101 |
+
= Can I Send Coupon with Follow up Email? =
|
102 |
|
103 |
+
Yes. You can generate and send unique, limited-time discount coupon. Though there is no compulsion of sending coupon. It's completely optional.
|
104 |
|
105 |
+
= Can I Directly Take Users to Checkout Page, Exactly Where They Left Off? =
|
106 |
|
107 |
+
Absolutely. A unique checkout link can be sent with follow up email. This will take the shopper to their prefilled checkout page. This will make the purchase process easier for the shopper.
|
108 |
|
109 |
+
= Can Marketing Automation Tools Be Integrated with This? =
|
110 |
|
111 |
+
Plugin offers Webhooks. This allows integrating Active Campaign, Mautic, Campaign Monitor, etc with the plugin.
|
|
|
112 |
|
113 |
+
= Will This Plugin Add Any Extra Time in Website Loading? =
|
114 |
|
115 |
+
Not at all. All the plugin data is stored in its own database table. It is completely self-hosted plugin. It works smoothly and does not leave any impact on the performance of the website. So you don't have to worry about the speed.
|
116 |
+
|
117 |
+
= Why This Awesome Plugin Is Free? =
|
118 |
+
|
119 |
+
Here are few thoughts behind making it available for free:
|
120 |
+
- It is our way of saying thank you to the community and helping shop owners to boost their profits.
|
121 |
+
- And quite honestly, we want you to try one of our products for free. And when you see how helpful it is, it should get you excited to buy other products from us in the future
|
122 |
|
123 |
== Screenshots ==
|
124 |
|
128 |
4. General settings for Email, Webhook (Coupon Code), GDPR
|
129 |
|
130 |
== Changelog ==
|
131 |
+
= Version 1.1.7 - Monday, 12th August 2019
|
132 |
+
* New: Filter added to show the cart total inside the email template.
|
133 |
+
* New: Filter added to change the cart abandoned time.
|
134 |
+
* Improvement: Order tracking logic updated for automated payments.
|
135 |
+
* Improvement: Update report dashboard DateTime format to WordPress format.
|
136 |
+
* Fix: Broken image in the email template.
|
137 |
+
|
138 |
= Version 1.1.6 - Friday, 19th July 2019
|
139 |
* New: Bundled product support for email checkout URL.
|
140 |
* Improvement: Added phone number and address while triggering the to webhook.
|
woo-cart-abandonment-recovery.php
CHANGED
@@ -3,10 +3,10 @@
|
|
3 |
* Plugin Name: WooCommerce Cart Abandonment Recovery
|
4 |
* Plugin URI: https://cartflows.com/
|
5 |
* Description: Recover your lost revenue. Capture email address of users on the checkout page and send follow up emails if they don't complete the purchase.
|
6 |
-
* Version: 1.1.
|
7 |
* Author: CartFlows Inc
|
8 |
* Author URI: https://cartflows.com/
|
9 |
-
* Text Domain:
|
10 |
* WC requires at least: 3.0
|
11 |
* WC tested up to: 3.6.3
|
12 |
*
|
3 |
* Plugin Name: WooCommerce Cart Abandonment Recovery
|
4 |
* Plugin URI: https://cartflows.com/
|
5 |
* Description: Recover your lost revenue. Capture email address of users on the checkout page and send follow up emails if they don't complete the purchase.
|
6 |
+
* Version: 1.1.7
|
7 |
* Author: CartFlows Inc
|
8 |
* Author URI: https://cartflows.com/
|
9 |
+
* Text Domain: woo-cart-abandonment-recovery
|
10 |
* WC requires at least: 3.0
|
11 |
* WC tested up to: 3.6.3
|
12 |
*
|