PluginProbe
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant / 2.3.2
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant v2.3.2
2.3.2 2.3.1 2.3.0 2.2.8 2.2.7 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 1.11.0 1.11.1 1.11.2 1.6 1.7 1.8 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 1.9.10 1.9.11 All 60 releases
← All changes | admin/classes/class-merchant-admin-modules.php +476 -306 1.11.12.3.2 View file →
@@ -7,14 +7,12 @@
7 7 exit; // Exit if accessed directly
8 8 }
9 9
10 10 if ( ! class_exists( 'Merchant_Admin_Modules' ) ) {
11 -
12 11 class Merchant_Admin_Modules {
13 12
14 13 /**
15 14 * Upsell modules.
16 - *
17 15 */
18 16 public static $modules_data = array();
19 17
20 18 /**
@@ -36,394 +34,247 @@
36 34 * Constructor.
37 35 */
38 36 public function __construct() {
39 37 self::$modules_data = array(
40 -
41 - // Boost Revenue.
42 - 'pre-orders' => array(
43 - 'pro' => false,
38 + 'pre-orders' => array(
39 + 'pro' => false,
44 40 'section' => 'boost-revenue',
45 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-pre-orders' ),
46 - 'title' => esc_html__( 'Pre-Orders', 'merchant' ),
47 - 'desc' => esc_html__( 'Allow visitors to pre-order products that are either out of stock or not yet released', 'merchant' ),
48 - 'tutorial_url' => 'https://docs.athemes.com/article/pre-orders/',
41 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-pre-orders' ),
49 42 ),
50 - 'wait-list' => array(
51 - 'pro' => true,
43 + 'wait-list' => array(
44 + 'pro' => true,
52 45 'section' => 'boost-revenue',
53 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-wait-list' ),
54 - 'title' => esc_html__( 'Waitlist', 'merchant' ),
55 - 'desc' => esc_html__( 'Build waitlists for sold-out items and auto-notify potential customers when items are restocked', 'merchant' ),
56 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-waitlist/',
46 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-wait-list' ),
57 47 ),
58 - 'product-bundles' => array(
59 - 'pro' => true,
48 + 'product-bundles' => array(
49 + 'pro' => true,
60 50 'section' => 'boost-revenue',
61 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-bundles' ),
62 - 'title' => esc_html__( 'Product Bundles', 'merchant' ),
63 - 'desc' => esc_html__( 'Create bundles of products to be sold together and boost your average order value', 'merchant' ),
64 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-bundles/',
51 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-bundles' ),
65 52 ),
66 53 'frequently-bought-together' => array(
67 - 'pro' => true,
54 + 'pro' => true,
68 55 'section' => 'boost-revenue',
69 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-frequently-bought-together' ),
70 - 'title' => esc_html__( 'Frequently Bought Together', 'merchant' ),
71 - 'desc' => esc_html__( 'Create bundles of related products that customers can add to their cart with just one click', 'merchant' ),
72 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-frequently-bought-together/',
56 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-frequently-bought-together' ),
73 57 ),
74 - 'buy-x-get-y' => array(
75 - 'pro' => true,
58 + 'buy-x-get-y' => array(
59 + 'pro' => true,
76 60 'section' => 'boost-revenue',
77 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-buy-x-get-y' ),
78 - 'title' => esc_html__( 'Buy X, Get Y', 'merchant' ),
79 - 'desc' => esc_html__( 'Create offers where purchasing a specific quantity of Product X triggers a discount on Product Y', 'merchant' ),
80 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-buy-x-get-y/',
61 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-buy-x-get-y' ),
81 62 ),
82 - 'volume-discounts' => array(
83 - 'pro' => true,
63 + 'complementary-products' => array(
64 + 'pro' => true,
84 65 'section' => 'boost-revenue',
85 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-volume-discounts' ),
86 - 'title' => esc_html__( 'Bulk Discounts', 'merchant' ),
87 - 'desc' => esc_html__( 'Offer discounts on larger quantity purchases to drive up average order value', 'merchant' ),
88 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-bulk-discounts/',
66 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'complementary-products' ),
89 67 ),
90 - 'storewide-sale' => array(
91 - 'pro' => true,
68 + 'volume-discounts' => array(
69 + 'pro' => true,
92 70 'section' => 'boost-revenue',
93 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-storewide-sale' ),
94 - 'title' => esc_html__( 'Storewide Sale', 'merchant' ),
95 - 'desc' => esc_html__( 'Create discount campaigns for all your products, specific categories, or specific products', 'merchant' ),
96 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-storewide-sale/',
71 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-volume-discounts' ),
97 72 ),
98 - 'spending-goal' => array(
99 - 'pro' => true,
73 + 'storewide-sale' => array(
74 + 'pro' => true,
100 75 'section' => 'boost-revenue',
101 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-spending-goal' ),
102 - 'title' => esc_html__( 'Spending Discount Goal', 'merchant' ),
103 - 'desc' => esc_html__( 'Motivate higher order values by offering customers discounts for reaching spending goals', 'merchant' ),
104 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-spending-goal/',
76 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-storewide-sale' ),
105 77 ),
106 - 'free-gifts' => array(
107 - 'pro' => true,
78 + 'spending-goal' => array(
79 + 'pro' => true,
108 80 'section' => 'boost-revenue',
109 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-free-gifts' ),
110 - 'title' => esc_html__( 'Free Gifts', 'merchant' ),
111 - 'desc' => esc_html__( 'Reward shoppers with a gift if they hit a specified spending target or apply a coupon', 'merchant' ),
112 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-gift-card/',
81 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-spending-goal' ),
113 82 ),
83 + 'free-gifts' => array(
84 + 'pro' => true,
85 + 'section' => 'boost-revenue',
86 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-free-gifts' ),
87 + ),
114 88 'free-shipping-progress-bar' => array(
115 - 'pro' => true,
89 + 'pro' => true,
116 90 'section' => 'boost-revenue',
117 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'free-shipping-progress-bar' ),
118 - 'title' => esc_html__( 'Free Shipping Bar', 'merchant' ),
119 - 'desc' => esc_html__( 'Encourage customers to spend more by displaying the amount left needed for free shipping', 'merchant' ),
120 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-free-shipping-progress-bar/',
91 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'free-shipping-progress-bar' ),
121 92 ),
122 - // Increase Conversion Rates (Convert More).
123 - 'product-labels' => array(
124 - 'pro' => false,
93 + 'product-labels' => array(
94 + 'pro' => false,
125 95 'section' => 'convert-more',
126 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-labels' ),
127 - 'title' => esc_html__( 'Product Labels', 'merchant' ),
128 - 'desc' => esc_html__( 'Create customizable product labels with display conditions and color settings', 'merchant' ),
129 - 'tutorial_url' => 'https://docs.athemes.com/article/product-labels/',
96 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-labels' ),
130 97 ),
131 98 'quick-view' => array(
132 - 'pro' => false,
99 + 'pro' => false,
133 100 'section' => 'convert-more',
134 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-quick-view' ),
135 - 'title' => esc_html__( 'Quick View', 'merchant' ),
136 - 'desc' => esc_html__( 'Allows users to quickly view product details without leaving the current page', 'merchant' ),
137 - 'tutorial_url' => 'https://docs.athemes.com/article/quick-view/',
101 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-quick-view' ),
138 102 ),
139 - 'added-to-cart-popup' => array(
140 - 'pro' => true,
103 + 'added-to-cart-popup' => array(
104 + 'pro' => true,
141 105 'section' => 'convert-more',
142 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'added-to-cart-popup' ),
143 - 'title' => esc_html__( 'Added To Cart Popup', 'merchant' ),
144 - 'desc' => esc_html__( 'Display a dynamic popup with product suggestions when items are added to the cart', 'merchant' ),
145 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-added-to-cart-popup/',
106 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'added-to-cart-popup' ),
146 107 ),
147 - 'countdown-timer' => array(
148 - 'pro' => true,
108 + 'countdown-timer' => array(
109 + 'pro' => true,
149 110 'section' => 'convert-more',
150 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-countdown-timer' ),
151 - 'title' => esc_html__( 'Countdown Timer', 'merchant' ),
152 - 'desc' => esc_html__( 'Create a sense of urgency by displaying a countdown timer on your discounted products', 'merchant' ),
153 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-countdown-timer/',
111 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-countdown-timer' ),
154 112 ),
155 - 'stock-scarcity' => array(
156 - 'pro' => true,
113 + 'stock-scarcity' => array(
114 + 'pro' => true,
157 115 'section' => 'convert-more',
158 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-stock-scarcity' ),
159 - 'title' => esc_html__( 'Stock Scarcity', 'merchant' ),
160 - 'desc' => esc_html__( 'Let visitors know that stock is running low on products they are looking at', 'merchant' ),
161 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-stock-scarcity/',
116 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-stock-scarcity' ),
162 117 ),
163 - 'checkout' => array(
164 - 'pro' => true,
118 + 'checkout' => array(
119 + 'pro' => true,
165 120 'section' => 'convert-more',
166 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-checkout' ),
167 - 'title' => esc_html__( 'Checkouts', 'merchant' ),
168 - 'desc' => esc_html__( 'Choose from three different checkout layouts: Shopify-style, Multi-step or One-page', 'merchant' ),
169 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-checkouts/',
121 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-checkout' ),
170 122 ),
171 - 'sticky-add-to-cart' => array(
172 - 'pro' => true,
123 + 'delivery-pickup' => array(
124 + 'pro' => true,
173 125 'section' => 'convert-more',
174 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-sticky-add-to-cart' ),
175 - 'title' => esc_html__( 'Sticky Add To Cart', 'merchant' ),
176 - 'desc' => esc_html__( 'Display a sticky add to cart bar when visitors are scrolling on your product pages', 'merchant' ),
177 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-sticky-add-to-cart/',
126 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-delivery-pickup' ),
178 127 ),
179 - 'recently-viewed-products' => array(
180 - 'pro' => true,
128 + 'sticky-add-to-cart' => array(
129 + 'pro' => true,
181 130 'section' => 'convert-more',
182 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-recently-viewed-products' ),
183 - 'title' => esc_html__( 'Recently Viewed Products', 'merchant' ),
184 - 'desc' => esc_html__( 'Show recently viewed products on product pages and in the cart', 'merchant' ),
185 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-recently-viewed-products/',
131 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-sticky-add-to-cart' ),
186 132 ),
187 -
188 - // Reduce Cart Abandonment.
189 - 'buy-now' => array(
190 - 'pro' => false,
133 + 'recently-viewed-products' => array(
134 + 'pro' => true,
135 + 'section' => 'convert-more',
136 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-recently-viewed-products' ),
137 + ),
138 + 'buy-now' => array(
139 + 'pro' => false,
191 140 'section' => 'reduce-abandonment',
192 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-buy-now' ),
193 - 'title' => esc_html__( 'Buy Now', 'merchant' ),
194 - 'desc' => esc_html__( 'Send your customers directly to checkout instead of the cart with Buy Now buttons', 'merchant' ),
195 - 'tutorial_url' => 'https://docs.athemes.com/article/buy-now/',
141 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-buy-now' ),
196 142 ),
197 - 'cart-count-favicon' => array(
198 - 'pro' => false,
143 + 'cart-count-favicon' => array(
144 + 'pro' => false,
199 145 'section' => 'reduce-abandonment',
200 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-cart-count-favicon' ),
201 - 'title' => esc_html__( 'Cart Count Favicon', 'merchant' ),
202 - 'desc' => esc_html__( 'Make your browser tab stand out by showing the number of items in the cart on the favicon', 'merchant' ),
203 - 'tutorial_url' => 'https://docs.athemes.com/article/cart-count-favicon/',
146 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-cart-count-favicon' ),
204 147 ),
205 - 'inactive-tab-message' => array(
206 - 'pro' => false,
148 + 'inactive-tab-message' => array(
149 + 'pro' => false,
207 150 'section' => 'reduce-abandonment',
208 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-inactive-tab-message' ),
209 - 'title' => esc_html__( 'Inactive Tab Message', 'merchant' ),
210 - 'desc' => esc_html__( 'Modify the browser tab\'s title when the visitor navigates away from your store', 'merchant' ),
211 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-inactive-tab-message/',
151 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-inactive-tab-message' ),
212 152 ),
213 - 'cart-reserved-timer' => array(
214 - 'pro' => true,
153 + 'cart-reserved-timer' => array(
154 + 'pro' => true,
215 155 'section' => 'reduce-abandonment',
216 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-cart-reserved-timer' ),
217 - 'title' => esc_html__( 'Cart Reserved Timer', 'merchant' ),
218 - 'desc' => esc_html__( 'Create urgency by letting visitors know that the products in cart are reserved for a limited time', 'merchant' ),
219 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-cart-reserved-timer/',
156 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-cart-reserved-timer' ),
220 157 ),
221 - 'floating-mini-cart' => array(
222 - 'pro' => true,
223 - 'section' => 'reduce-abandonment',
224 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-floating-mini-cart' ),
225 - 'title' => esc_html__( 'Floating Mini Cart', 'merchant' ),
226 - 'desc' => esc_html__( 'A cart icon will always be visible and a sliding cart when the customer clicks it', 'merchant' ),
227 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-floating-mini-cart/',
228 - ),
229 - 'side-cart' => array(
230 - 'pro' => true,
158 + 'side-cart' => array(
159 + 'pro' => true,
231 160 'section' => 'reduce-abandonment',
232 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-side-cart' ),
233 - 'title' => esc_html__( 'Side Cart', 'merchant' ),
234 - 'desc' => esc_html__( 'Show a sliding cart whenever a customer adds a product to the cart', 'merchant' ),
235 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-side-cart/',
161 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-side-cart' ),
236 162 ),
237 -
238 - // Build Trust.
239 - 'payment-logos' => array(
240 - 'pro' => false,
163 + 'payment-logos' => array(
164 + 'pro' => false,
241 165 'section' => 'build-trust',
242 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-payment-logos' ),
243 - 'title' => esc_html__( 'Payment Logos', 'merchant' ),
244 - 'desc' => esc_html__( 'Display the logos of the payment methods you accept on product pages', 'merchant' ),
245 - 'tutorial_url' => 'https://docs.athemes.com/article/payment-logos/',
166 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-payment-logos' ),
246 167 ),
247 - 'trust-badges' => array(
248 - 'pro' => false,
168 + 'trust-badges' => array(
169 + 'pro' => false,
249 170 'section' => 'build-trust',
250 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-trust-badges' ),
251 - 'title' => esc_html__( 'Trust Badges', 'merchant' ),
252 - 'desc' => esc_html__( 'Reassure customers by showcasing different badge-shaped store benefits', 'merchant' ),
253 - 'tutorial_url' => 'https://docs.athemes.com/article/trust-badges/',
171 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-trust-badges' ),
254 172 ),
255 - 'advanced-reviews' => array(
256 - 'pro' => true,
173 + 'advanced-reviews' => array(
174 + 'pro' => true,
257 175 'section' => 'build-trust',
258 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-advanced-reviews' ),
259 - 'title' => esc_html__( 'Advanced Reviews', 'merchant' ),
260 - 'desc' => esc_html__( 'Enhance your customer reviews with advanced features including photo uploads and more', 'merchant' ),
261 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-advanced-reviews/',
176 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-advanced-reviews' ),
262 177 ),
263 178 'recent-sales-notifications' => array(
264 - 'pro' => true,
265 - 'section' => 'build-trust',
266 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'recent-sales-notifications' ),
267 - 'title' => esc_html__( 'Recent Sales Notifications', 'merchant' ),
268 - 'desc' => esc_html__( 'Build trust by displaying real-time notifications of purchases and other user activity on your store', 'merchant' ),
269 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-recent-sales-notifications/',
179 + 'pro' => true,
180 + 'section' => 'build-trust',
181 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'recent-sales-notifications' ),
270 182 ),
271 - 'reasons-to-buy' => array(
272 - 'pro' => true,
183 + 'reasons-to-buy' => array(
184 + 'pro' => true,
273 185 'section' => 'build-trust',
274 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-reasons-to-buy' ),
275 - 'title' => esc_html__( 'Reasons To Buy List', 'merchant' ),
276 - 'desc' => esc_html__( 'Provide customers with a summary of the key features and benefits of your products', 'merchant' ),
277 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-reasons-to-buy/',
186 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-reasons-to-buy' ),
278 187 ),
279 - 'quick-social-links' => array(
280 - 'pro' => true,
188 + 'quick-social-links' => array(
189 + 'pro' => true,
281 190 'section' => 'build-trust',
282 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-quick-social-links' ),
283 - 'title' => esc_html__( 'Quick Social Links', 'merchant' ),
284 - 'desc' => esc_html__( 'Display floating social media icons to make it easier for your customers to connect with you', 'merchant' ),
285 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-quick-social-links/',
191 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-quick-social-links' ),
286 192 ),
287 - 'product-brand-image' => array(
288 - 'pro' => true,
193 + 'product-brand-image' => array(
194 + 'pro' => true,
289 195 'section' => 'build-trust',
290 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-brand-image' ),
291 - 'title' => esc_html__( 'Product Brand Image', 'merchant' ),
292 - 'desc' => esc_html__( 'Add brand images to products to instill confidence in potential buyers', 'merchant' ),
293 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-brand-image/',
196 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-brand-image' ),
294 197 ),
295 -
296 - // Improve User Experience.
297 - 'animated-add-to-cart' => array(
298 - 'pro' => false,
198 + 'animated-add-to-cart' => array(
199 + 'pro' => false,
299 200 'section' => 'improve-experience',
300 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-animated-add-to-cart' ),
301 - 'title' => esc_html__( 'Animated Add to Cart', 'merchant' ),
302 - 'desc' => esc_html__( 'Make your Add To Cart button stand out by adding an animation on mouse over or page load', 'merchant' ),
303 - 'tutorial_url' => 'https://docs.athemes.com/article/animated-add-to-cart/',
201 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-animated-add-to-cart' ),
304 202 ),
305 - 'add-to-cart-text' => array(
306 - 'pro' => false,
203 + 'add-to-cart-text' => array(
204 + 'pro' => false,
307 205 'section' => 'improve-experience',
308 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-add-to-cart-text' ),
309 - 'title' => esc_html__( 'Add To Cart Text', 'merchant' ),
310 - 'desc' => esc_html__( 'Change your store\'s \'Add to Cart\' text for various product types, as well as individual products', 'merchant' ),
311 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-add-to-cart-text/',
206 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-add-to-cart-text' ),
312 207 ),
313 - 'auto-external-links' => array(
314 - 'pro' => false,
208 + 'auto-external-links' => array(
209 + 'pro' => false,
315 210 'section' => 'improve-experience',
316 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-auto-external-links' ),
317 - 'title' => esc_html__( 'Auto External Links', 'merchant' ),
318 - 'desc' => esc_html__( 'Keep users from navigating away from your store by opening external links in a new browser tab', 'merchant' ),
319 - 'tutorial_url' => 'https://docs.athemes.com/article/auto-external-links/',
211 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-auto-external-links' ),
320 212 ),
321 - 'real-time-search' => array(
322 - 'pro' => false,
213 + 'real-time-search' => array(
214 + 'pro' => false,
323 215 'section' => 'improve-experience',
324 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-real-time-search' ),
325 - 'title' => esc_html__( 'Real-Time Search', 'merchant' ),
326 - 'desc' => esc_html__( 'Help visitors instantly find the products they\'re looking for by using predictive search', 'merchant' ),
327 - 'tutorial_url' => 'https://docs.athemes.com/article/real-time-search/',
216 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-real-time-search' ),
328 217 ),
329 - 'scroll-to-top-button' => array(
330 - 'pro' => false,
218 + 'scroll-to-top-button' => array(
219 + 'pro' => false,
331 220 'section' => 'improve-experience',
332 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-scroll-to-top-button' ),
333 - 'title' => esc_html__( 'Scroll to Top Button', 'merchant' ),
334 - 'desc' => esc_html__( 'Help your customers get back easily to the top of the page with a single click', 'merchant' ),
335 - 'tutorial_url' => 'https://docs.athemes.com/article/scroll-to-top-button/',
221 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-scroll-to-top-button' ),
336 222 ),
337 - 'address-autocomplete' => array(
338 - 'pro' => true,
339 - 'section' => 'improve-experience',
340 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'google-autocomplete' ),
341 - 'title' => esc_html__( 'Google Address Autocomplete', 'merchant' ),
342 - 'desc' => esc_html__( 'Streamline your checkout process and reduce user errors by autocompleting the address fields', 'merchant' ),
343 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-google-address-autocomplete/',
223 + 'address-autocomplete' => array(
224 + 'pro' => true,
225 + 'section' => 'improve-experience',
226 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'google-autocomplete' ),
344 227 ),
345 - 'size-chart' => array(
346 - 'pro' => true,
228 + 'size-chart' => array(
229 + 'pro' => true,
347 230 'section' => 'improve-experience',
348 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-size-chart' ),
349 - 'title' => esc_html__( 'Size Chart', 'merchant' ),
350 - 'desc' => esc_html__( 'Reduce returns and increase sales by showing a size chart on specific products or all products', 'merchant' ),
351 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-size-chart/',
231 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-size-chart' ),
352 232 ),
353 - 'product-swatches' => array(
354 - 'pro' => true,
233 + 'product-swatches' => array(
234 + 'pro' => true,
355 235 'section' => 'improve-experience',
356 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-swatches' ),
357 - 'title' => esc_html__( 'Variation Swatches', 'merchant' ),
358 - 'desc' => esc_html__( 'Display variable product options as customizable color/image icons, buttons, or dropdowns', 'merchant' ),
359 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-variation-swatches/',
236 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-swatches' ),
360 237 ),
361 - 'wishlist' => array(
362 - 'pro' => true,
238 + 'wishlist' => array(
239 + 'pro' => true,
363 240 'section' => 'improve-experience',
364 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-wishlist' ),
365 - 'title' => esc_html__( 'Wishlist', 'merchant' ),
366 - 'desc' => esc_html__( 'Allow customers to easily save products they are interested in for later', 'merchant' ),
367 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-wishlist/',
241 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-wishlist' ),
368 242 ),
369 - 'product-navigation-links' => array(
370 - 'pro' => true,
243 + 'product-navigation-links' => array(
244 + 'pro' => true,
371 245 'section' => 'improve-experience',
372 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-navigation-links' ),
373 - 'title' => esc_html__( 'Product Navigation Links', 'merchant' ),
374 - 'desc' => esc_html__( 'Enable easy navigation from one product to the next with next/previous links', 'merchant' ),
375 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-navigation-links/',
246 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-navigation-links' ),
376 247 ),
377 - 'product-video' => array(
378 - 'pro' => true,
248 + 'product-video' => array(
249 + 'pro' => true,
379 250 'section' => 'improve-experience',
380 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-video' ),
381 - 'title' => esc_html__( 'Product Video', 'merchant' ),
382 - 'desc' => esc_html__( 'Upload video to be viewed in product galleries and on archive pages', 'merchant' ),
383 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-video/',
251 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-video' ),
384 252 ),
385 - 'product-audio' => array(
386 - 'pro' => true,
253 + 'product-audio' => array(
254 + 'pro' => true,
387 255 'section' => 'improve-experience',
388 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-audio' ),
389 - 'title' => esc_html__( 'Product Audio', 'merchant' ),
390 - 'desc' => esc_html__( 'Upload audio to be listened to in product galleries and on archive pages', 'merchant' ),
391 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-audio/',
256 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-product-audio' ),
392 257 ),
393 - 'login-popup' => array(
394 - 'pro' => true,
258 + 'login-popup' => array(
259 + 'pro' => true,
395 260 'section' => 'improve-experience',
396 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-login-popup' ),
397 - 'title' => esc_html__( 'Login Popup', 'merchant' ),
398 - 'desc' => esc_html__( 'Allow users to log in with a simple pop up without navigating to a new page', 'merchant' ),
399 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-login-popup/',
261 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-login-popup' ),
400 262 ),
401 - 'clear-cart' => array(
402 - 'pro' => false,
403 - 'section' => 'improve-experience',
404 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-clear-cart' ),
405 - 'title' => esc_html__( 'Clear Cart', 'merchant' ),
406 - 'desc' => esc_html__( 'Display a clear cart button to let customers empty their carts and start fresh', 'merchant' ),
407 - 'tutorial_url' => 'https://docs.athemes.com/article/merchant-clear-cart/',
263 + 'clear-cart' => array(
264 + 'pro' => false,
265 + 'section' => 'improve-experience',
266 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-clear-cart' ),
408 267 ),
409 -
410 - // Protect Your Store.
411 - 'agree-to-terms-checkbox' => array(
412 - 'pro' => false,
268 + 'agree-to-terms-checkbox' => array(
269 + 'pro' => false,
413 270 'section' => 'protect-your-store',
414 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-agree-to-terms-checkbox' ),
415 - 'title' => esc_html__( 'Agree to Terms Checkbox', 'merchant' ),
416 - 'desc' => esc_html__( 'Get customers to agree to your Terms & Conditions as part of the checkout process', 'merchant' ),
417 - 'tutorial_url' => 'https://docs.athemes.com/article/agree-to-terms-checkbox/',
271 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-agree-to-terms-checkbox' ),
418 272 ),
419 - 'cookie-banner' => array(
420 - 'pro' => false,
273 + 'cookie-banner' => array(
274 + 'pro' => false,
421 275 'section' => 'protect-your-store',
422 - 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-cookie-banner' ),
423 - 'title' => esc_html__( 'Cookie Banner', 'merchant' ),
424 - 'desc' => esc_html__( 'Inform your visitors that the site uses cookies via a dismissable banner', 'merchant' ),
425 - 'tutorial_url' => 'https://docs.athemes.com/article/cookie-banner/',
276 + 'icon' => Merchant_SVG_Icons::get_svg_icon( 'module-cookie-banner' ),
426 277 ),
427 278 );
428 279 }
429 280
@@ -470,26 +321,76 @@
470 321 * Hook: merchant_modules
471 322 *
472 323 * @since 1.0
473 324 */
474 - $modules = apply_filters( 'merchant_modules', $modules );
325 + $modules = apply_filters( 'merchant_modules', $modules, self::modules_translation_data() );
475 326
327 + // Populate modules with data and translations
328 + foreach ( self::$modules_data as $module_id => $module_data ) {
329 + if ( isset( self::modules_translation_data()[ $module_id ] ) ) {
330 + $modules[ $module_data['section'] ]['modules'][ $module_id ] = array_merge(
331 + $module_data,
332 + array(
333 + 'title' => self::modules_translation_data()[ $module_id ]['title'],
334 + 'desc' => self::modules_translation_data()[ $module_id ]['desc'],
335 + 'tutorial_url' => self::modules_translation_data()[ $module_id ]['tutorial_url'],
336 + 'ai_examples' => self::get_module_ai_examples( $module_id ),
337 + )
338 + );
339 + }
340 + }
341 +
476 342 return $modules;
477 343 }
478 344
479 345 /**
346 + * Get a module's AI prompt examples.
347 + *
348 + * Prefers the module's own class (see Merchant_Add_Module::get_ai_examples())
349 + * and falls back to modules_translation_data() for modules that don't yet
350 + * define their own.
351 + *
352 + * @param string $module_id The module identifier.
353 + *
354 + * @return array Array with 'blurb' and 'prompts' keys, or an empty array.
355 + */
356 + private static function get_module_ai_examples( $module ) {
357 + $module_instance = Merchant_Modules::get_module( $module );
358 +
359 + if ( $module_instance && ! empty( $module_instance->get_ai_examples() ) ) {
360 + return $module_instance->get_ai_examples();
361 + }
362 +
363 + return self::modules_translation_data()[ $module ]['ai_examples'] ?? array();
364 + }
365 +
366 + /**
480 367 * Get upsell modules.
481 - *
482 368 */
483 369 public static function get_upsell_modules() {
484 - return array_filter( self::$modules_data, static function( $module ){
485 - return isset( $module[ 'pro' ] ) && $module[ 'pro' ] ? $module : false;
370 + $upsell_modules = array_filter( self::$modules_data, static function ( $module ) {
371 + return isset( $module['pro'] ) && $module['pro'] ? $module : false;
486 372 } );
373 +
374 + // Add translations to upsell modules
375 + foreach ( $upsell_modules as $module_id => $module_data ) {
376 + if ( isset( self::modules_translation_data()[ $module_id ] ) ) {
377 + $upsell_modules[ $module_id ] = array_merge(
378 + $module_data,
379 + array(
380 + 'title' => self::modules_translation_data()[ $module_id ]['title'],
381 + 'desc' => self::modules_translation_data()[ $module_id ]['desc'],
382 + 'tutorial_url' => self::modules_translation_data()[ $module_id ]['tutorial_url'],
383 + )
384 + );
385 + }
386 + }
387 +
388 + return $upsell_modules;
487 389 }
488 390
489 391 /**
490 392 * Add upsell to modules.
491 - *
492 393 */
493 394 public static function add_upsell_modules( $modules ) {
494 395 if ( defined( 'MERCHANT_PRO_VERSION' ) ) {
495 396 return $modules;
@@ -495,9 +396,9 @@
495 396 return $modules;
496 397 }
497 398
498 399 foreach ( self::get_upsell_modules() as $module_id => $module_data ) {
499 - $modules[ $module_data[ 'section' ] ][ 'modules' ][ $module_id ] = $module_data;
400 + $modules[ $module_data['section'] ]['modules'][ $module_id ] = $module_data;
500 401 }
501 402
502 403 return $modules;
503 404 }
@@ -505,11 +406,23 @@
505 406 /**
506 407 * Get module info.
507 408 */
508 409 public static function get_module_info( $module ) {
410 + // Check if module exists in modules_data
411 + if ( isset( self::$modules_data[ $module ] ) && isset( self::modules_translation_data()[ $module ] ) ) {
412 + return array_merge(
413 + self::$modules_data[ $module ],
414 + array(
415 + 'title' => self::modules_translation_data()[ $module ]['title'],
416 + 'desc' => self::modules_translation_data()[ $module ]['desc'],
417 + 'tutorial_url' => self::modules_translation_data()[ $module ]['tutorial_url'],
418 + 'ai_examples' => self::get_module_ai_examples( $module ),
419 + )
420 + );
421 + }
509 422
510 - $modules = self::get_modules();
511 -
423 + // Fallback to checking get_modules
424 + $modules = self::get_modules();
512 425 $maybe_found = array_column( array_column( $modules, 'modules' ), $module );
513 426
514 427 if ( ! empty( $maybe_found ) && ! empty( $maybe_found[0] ) ) {
515 428 return $maybe_found[0];
@@ -516,9 +429,266 @@
516 429 }
517 430
518 431 return false;
519 432 }
433 +
434 + /**
435 + * Supply modules translatable title and descriptions to modules data.
436 + *
437 + * @return array Array of modules data.
438 + */
439 + private static function modules_translation_data() {
440 + /**
441 + * Hook: merchant_modules_translation_data
442 + * Allow translating module data later when needed.
443 + *
444 + * @param array $modules_data Array of modules data.
445 + *
446 + * @since 2.1.0
447 + */
448 + return apply_filters( 'merchant_modules_translation_data', array(
449 + 'pre-orders' => array(
450 + 'title' => esc_html__( 'Pre-Orders', 'merchant' ),
451 + 'desc' => esc_html__( 'Allow visitors to pre-order products that are either out of stock or not yet released', 'merchant' ),
452 + 'tutorial_url' => 'https://docs.athemes.com/article/pre-orders/',
453 + ),
454 + 'wait-list' => array(
455 + 'title' => esc_html__( 'Waitlist', 'merchant' ),
456 + 'desc' => esc_html__( 'Build waitlists for sold-out items and auto-notify potential customers when items are restocked', 'merchant' ),
457 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-waitlist/',
458 + ),
459 + 'product-bundles' => array(
460 + 'title' => esc_html__( 'Product Bundles', 'merchant' ),
461 + 'desc' => esc_html__( 'Create bundles of products to be sold together and boost your average order value', 'merchant' ),
462 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-bundles/',
463 + ),
464 + 'frequently-bought-together' => array(
465 + 'title' => esc_html__( 'Frequently Bought Together', 'merchant' ),
466 + 'desc' => esc_html__( 'Create bundles of related products that customers can add to their cart with just one click', 'merchant' ),
467 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-frequently-bought-together/',
468 + ),
469 + 'buy-x-get-y' => array(
470 + 'title' => esc_html__( 'Buy X, Get Y', 'merchant' ),
471 + 'desc' => esc_html__( 'Create offers where purchasing a specific quantity of Product X triggers a discount on Product Y', 'merchant' ),
472 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-buy-x-get-y/',
473 + ),
474 + 'complementary-products' => array(
475 + 'title' => esc_html__( 'Complementary Products', 'merchant' ),
476 + 'desc' => esc_html__( 'Offer complementary products to help increase average order value', 'merchant' ),
477 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-complementary-products/',
478 + ),
479 + 'volume-discounts' => array(
480 + 'title' => esc_html__( 'Bulk Discounts', 'merchant' ),
481 + 'desc' => esc_html__( 'Offer discounts on larger quantity purchases to drive up average order value', 'merchant' ),
482 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-bulk-discounts/',
483 + ),
484 + 'storewide-sale' => array(
485 + 'title' => esc_html__( 'Storewide Sale', 'merchant' ),
486 + 'desc' => esc_html__( 'Create discount campaigns for all your products, specific categories, or specific products', 'merchant' ),
487 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-storewide-sale/',
488 + ),
489 + 'spending-goal' => array(
490 + 'title' => esc_html__( 'Spending Discount Goal', 'merchant' ),
491 + 'desc' => esc_html__( 'Motivate higher order values by offering customers discounts for reaching spending goals', 'merchant' ),
492 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-spending-goal/',
493 + ),
494 + 'free-gifts' => array(
495 + 'title' => esc_html__( 'Free Gifts', 'merchant' ),
496 + 'desc' => esc_html__( 'Reward shoppers with a gift if they hit a specified spending target or apply a coupon', 'merchant' ),
497 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-gift-card/',
498 + ),
499 + 'free-shipping-progress-bar' => array(
500 + 'title' => esc_html__( 'Free Shipping Bar', 'merchant' ),
501 + 'desc' => esc_html__( 'Encourage customers to spend more by displaying the amount left needed for free shipping', 'merchant' ),
502 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-free-shipping-progress-bar/',
503 + ),
504 + 'product-labels' => array(
505 + 'title' => esc_html__( 'Product Labels', 'merchant' ),
506 + 'desc' => esc_html__( 'Create customizable product labels with display conditions and color settings', 'merchant' ),
507 + 'tutorial_url' => 'https://docs.athemes.com/article/product-labels/',
508 + ),
509 + 'quick-view' => array(
510 + 'title' => esc_html__( 'Quick View', 'merchant' ),
511 + 'desc' => esc_html__( 'Allows users to quickly view product details without leaving the current page', 'merchant' ),
512 + 'tutorial_url' => 'https://docs.athemes.com/article/quick-view/',
513 + ),
514 + 'added-to-cart-popup' => array(
515 + 'title' => esc_html__( 'Added To Cart Popup', 'merchant' ),
516 + 'desc' => esc_html__( 'Display a dynamic popup with product suggestions when items are added to the cart', 'merchant' ),
517 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-added-to-cart-popup/',
518 + ),
519 + 'countdown-timer' => array(
520 + 'title' => esc_html__( 'Countdown Timer', 'merchant' ),
521 + 'desc' => esc_html__( 'Create a sense of urgency by displaying a countdown timer on your discounted products', 'merchant' ),
522 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-countdown-timer/',
523 + ),
524 + 'stock-scarcity' => array(
525 + 'title' => esc_html__( 'Stock Scarcity', 'merchant' ),
526 + 'desc' => esc_html__( 'Let visitors know that stock is running low on products they are looking at', 'merchant' ),
527 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-stock-scarcity/',
528 + ),
529 + 'checkout' => array(
530 + 'title' => esc_html__( 'Checkouts', 'merchant' ),
531 + 'desc' => esc_html__( 'Choose from three different checkout layouts: Shopify-style, Multi-step or One-page', 'merchant' ),
532 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-checkouts/',
533 + ),
534 + 'delivery-pickup' => array(
535 + 'title' => esc_html__( 'Delivery & Pickup', 'merchant' ),
536 + 'desc' => esc_html__( 'Let customers choose a delivery date, a time slot or a shop to collect from, and charge for the slots you want', 'merchant' ),
537 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-delivery-pickup/',
538 + ),
539 + 'sticky-add-to-cart' => array(
540 + 'title' => esc_html__( 'Sticky Add To Cart', 'merchant' ),
541 + 'desc' => esc_html__( 'Display a sticky add to cart bar when visitors are scrolling on your product pages', 'merchant' ),
542 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-sticky-add-to-cart/',
543 + ),
544 + 'recently-viewed-products' => array(
545 + 'title' => esc_html__( 'Recently Viewed Products', 'merchant' ),
546 + 'desc' => esc_html__( 'Show recently viewed products on product pages and in the cart', 'merchant' ),
547 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-recently-viewed-products/',
548 + ),
549 + 'buy-now' => array(
550 + 'title' => esc_html__( 'Buy Now', 'merchant' ),
551 + 'desc' => esc_html__( 'Send your customers directly to checkout instead of the cart with Buy Now buttons', 'merchant' ),
552 + 'tutorial_url' => 'https://docs.athemes.com/article/buy-now/',
553 + ),
554 + 'cart-count-favicon' => array(
555 + 'title' => esc_html__( 'Cart Count Favicon', 'merchant' ),
556 + 'desc' => esc_html__( 'Make your browser tab stand out by showing the number of items in the cart on the favicon', 'merchant' ),
557 + 'tutorial_url' => 'https://docs.athemes.com/article/cart-count-favicon/',
558 + ),
559 + 'inactive-tab-message' => array(
560 + 'title' => esc_html__( 'Inactive Tab Message', 'merchant' ),
561 + 'desc' => esc_html__( 'Modify the browser tab\'s title when the visitor navigates away from your store', 'merchant' ),
562 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-inactive-tab-message/',
563 + ),
564 + 'cart-reserved-timer' => array(
565 + 'title' => esc_html__( 'Cart Reserved Timer', 'merchant' ),
566 + 'desc' => esc_html__( 'Create urgency by letting visitors know that the products in cart are reserved for a limited time', 'merchant' ),
567 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-cart-reserved-timer/',
568 + ),
569 + 'side-cart' => array(
570 + 'title' => esc_html__( 'Side Cart', 'merchant' ),
571 + 'desc' => esc_html__( 'Show a sliding cart whenever a customer adds a product to the cart', 'merchant' ),
572 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-side-cart/',
573 + ),
574 + 'payment-logos' => array(
575 + 'title' => esc_html__( 'Payment Logos', 'merchant' ),
576 + 'desc' => esc_html__( 'Display the logos of the payment methods you accept on product pages', 'merchant' ),
577 + 'tutorial_url' => 'https://docs.athemes.com/article/payment-logos/',
578 + ),
579 + 'trust-badges' => array(
580 + 'title' => esc_html__( 'Trust Badges', 'merchant' ),
581 + 'desc' => esc_html__( 'Reassure customers by showcasing different badge-shaped store benefits', 'merchant' ),
582 + 'tutorial_url' => 'https://docs.athemes.com/article/trust-badges/',
583 + ),
584 + 'advanced-reviews' => array(
585 + 'title' => esc_html__( 'Advanced Reviews', 'merchant' ),
586 + 'desc' => esc_html__( 'Enhance your customer reviews with advanced features including photo uploads and more', 'merchant' ),
587 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-advanced-reviews/',
588 + ),
589 + 'recent-sales-notifications' => array(
590 + 'title' => esc_html__( 'Recent Sales Notifications', 'merchant' ),
591 + 'desc' => esc_html__( 'Build trust by displaying real-time notifications of purchases and other user activity on your store', 'merchant' ),
592 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-recent-sales-notifications/',
593 + ),
594 + 'reasons-to-buy' => array(
595 + 'title' => esc_html__( 'Reasons To Buy List', 'merchant' ),
596 + 'desc' => esc_html__( 'Provide customers with a summary of the key features and benefits of your products', 'merchant' ),
597 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-reasons-to-buy/',
598 + ),
599 + 'quick-social-links' => array(
600 + 'title' => esc_html__( 'Quick Social Links', 'merchant' ),
601 + 'desc' => esc_html__( 'Display floating social media icons to make it easier for your customers to connect with you', 'merchant' ),
602 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-quick-social-links/',
603 + ),
604 + 'product-brand-image' => array(
605 + 'title' => esc_html__( 'Product Brand Image', 'merchant' ),
606 + 'desc' => esc_html__( 'Add brand images to products to instill confidence in potential buyers', 'merchant' ),
607 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-brand-image/',
608 + ),
609 + 'animated-add-to-cart' => array(
610 + 'title' => esc_html__( 'Animated Add to Cart', 'merchant' ),
611 + 'desc' => esc_html__( 'Make your Add To Cart button stand out by adding an animation on mouse over or page load', 'merchant' ),
612 + 'tutorial_url' => 'https://docs.athemes.com/article/animated-add-to-cart/',
613 + ),
614 + 'add-to-cart-text' => array(
615 + 'title' => esc_html__( 'Add To Cart Text', 'merchant' ),
616 + 'desc' => esc_html__( 'Change your store\'s \'Add to Cart\' text for various product types, as well as individual products', 'merchant' ),
617 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-add-to-cart-text/',
618 + ),
619 + 'auto-external-links' => array(
620 + 'title' => esc_html__( 'Auto External Links', 'merchant' ),
621 + 'desc' => esc_html__( 'Keep users from navigating away from your store by opening external links in a new browser tab', 'merchant' ),
622 + 'tutorial_url' => 'https://docs.athemes.com/article/auto-external-links/',
623 + ),
624 + 'real-time-search' => array(
625 + 'title' => esc_html__( 'Real-Time Search', 'merchant' ),
626 + 'desc' => esc_html__( 'Help visitors instantly find the products they\'re looking for by using predictive search', 'merchant' ),
627 + 'tutorial_url' => 'https://docs.athemes.com/article/real-time-search/',
628 + ),
629 + 'scroll-to-top-button' => array(
630 + 'title' => esc_html__( 'Scroll to Top Button', 'merchant' ),
631 + 'desc' => esc_html__( 'Help your customers get back easily to the top of the page with a single click', 'merchant' ),
632 + 'tutorial_url' => 'https://docs.athemes.com/article/scroll-to-top-button/',
633 + ),
634 + 'address-autocomplete' => array(
635 + 'title' => esc_html__( 'Google Address Autocomplete', 'merchant' ),
636 + 'desc' => esc_html__( 'Streamline your checkout process and reduce user errors by autocompleting the address fields', 'merchant' ),
637 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-google-address-autocomplete/',
638 + ),
639 + 'size-chart' => array(
640 + 'title' => esc_html__( 'Size Chart', 'merchant' ),
641 + 'desc' => esc_html__( 'Reduce returns and increase sales by showing a size chart on specific products or all products', 'merchant' ),
642 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-size-chart/',
643 + ),
644 + 'product-swatches' => array(
645 + 'title' => esc_html__( 'Variation Swatches', 'merchant' ),
646 + 'desc' => esc_html__( 'Display variable product options as customizable color/image icons, buttons, or dropdowns', 'merchant' ),
647 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-variation-swatches/',
648 + ),
649 + 'wishlist' => array(
650 + 'title' => esc_html__( 'Wishlist', 'merchant' ),
651 + 'desc' => esc_html__( 'Allow customers to easily save products they are interested in for later', 'merchant' ),
652 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-wishlist/',
653 + ),
654 + 'product-navigation-links' => array(
655 + 'title' => esc_html__( 'Product Navigation Links', 'merchant' ),
656 + 'desc' => esc_html__( 'Enable easy navigation from one product to the next with next/previous links', 'merchant' ),
657 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-navigation-links/',
658 + ),
659 + 'product-video' => array(
660 + 'title' => esc_html__( 'Product Video', 'merchant' ),
661 + 'desc' => esc_html__( 'Upload video to be viewed in product galleries and on archive pages', 'merchant' ),
662 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-video/',
663 + ),
664 + 'product-audio' => array(
665 + 'title' => esc_html__( 'Product Audio', 'merchant' ),
666 + 'desc' => esc_html__( 'Upload audio to be listened to in product galleries and on archive pages', 'merchant' ),
667 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-product-audio/',
668 + ),
669 + 'login-popup' => array(
670 + 'title' => esc_html__( 'Login Popup', 'merchant' ),
671 + 'desc' => esc_html__( 'Allow users to log in with a simple pop up without navigating to a new page', 'merchant' ),
672 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-login-popup/',
673 + ),
674 + 'clear-cart' => array(
675 + 'title' => esc_html__( 'Clear Cart', 'merchant' ),
676 + 'desc' => esc_html__( 'Display a clear cart button to let customers empty their carts and start fresh', 'merchant' ),
677 + 'tutorial_url' => 'https://docs.athemes.com/article/merchant-clear-cart/',
678 + ),
679 + 'agree-to-terms-checkbox' => array(
680 + 'title' => esc_html__( 'Agree to Terms Checkbox', 'merchant' ),
681 + 'desc' => esc_html__( 'Get customers to agree to your Terms & Conditions as part of the checkout process', 'merchant' ),
682 + 'tutorial_url' => 'https://docs.athemes.com/article/agree-to-terms-checkbox/',
683 + ),
684 + 'cookie-banner' => array(
685 + 'title' => esc_html__( 'Cookie Banner', 'merchant' ),
686 + 'desc' => esc_html__( 'Inform your visitors that the site uses cookies via a dismissable banner', 'merchant' ),
687 + 'tutorial_url' => 'https://docs.athemes.com/article/cookie-banner/',
688 + ),
689 + ) );
690 + }
520 691 }
521 692
522 693 Merchant_Admin_Modules::instance();
523 -
524 -}
694 +}