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 | inc/functions.php +217 -1 1.10.22.3.2 View file →
@@ -224,9 +224,223 @@
224 224 }
225 225 }
226 226
227 227 /**
228 - * Check if any shortcode starts with merchant.
228 + * Check if Ohio theme is installed and active.
229 + *
230 + * @return bool
231 + */
232 +if ( ! function_exists( 'merchant_is_ohio_active' ) ) {
233 + function merchant_is_ohio_active() {
234 + return function_exists( 'ohio_setup' );
235 + }
236 +}
237 +
238 +if ( ! function_exists( 'merchant_supply_defaults' ) ) {
239 + /**
240 + * Recursively merge two arrays, preserving distinct values.
241 + *
242 + * Merges the provided arguments into the defaults recursively. If a key exists in both arrays
243 + * and both values are arrays, they are merged recursively. Otherwise, the value from the
244 + * arguments array overrides the default value.
245 + *
246 + * @param array $defaults The default array containing base values.
247 + * @param array $args The arguments array containing values to override or supplement defaults.
248 + *
249 + * @return array The merged array with defaults supplemented or overridden by arguments.
250 + */
251 + function merchant_supply_defaults( array $defaults, array $args ) {
252 + $merged = $defaults;
253 + foreach ( $args as $key => $value ) {
254 + if ( is_array( $value ) && isset( $merged[ $key ] ) && is_array( $merged[ $key ] ) ) {
255 + $merged[ $key ] = merchant_supply_defaults( $merged[ $key ], $value );
256 + } else {
257 + $merged[ $key ] = $value;
258 + }
259 + }
260 +
261 + return $merged;
262 + }
263 +}
264 +
265 +if ( ! function_exists( 'merchant_admin_upgrade_link' ) ) {
266 + /**
267 + * Get the Merchant Pro upgrade link.
268 + *
269 + * @param string $url The base URL for the upgrade link.
270 + * @param array $args The arguments for the upgrade link. (Key-value pairs)
271 + * @param string $type The type of upgrade link.
272 + *
273 + * @return string The upgrade link.
274 + */
275 + function merchant_admin_upgrade_link( $url, $args = array(), $type = 'plugins-page-upgrade-link' ) {
276 + if ( ! empty( $args ) ) {
277 + $url = add_query_arg( $args, $url );
278 + }
279 +
280 + /**
281 + * Modify upgrade link.
282 + *
283 + * @param string $url The upgrade link URL.
284 + * @param string $type The type of upgrade link.
285 + *
286 + * @since 2.1.5
287 + *
288 + */
289 + return apply_filters( 'merchant_upgrade_link', $url, $type );
290 + }
291 +}
292 +
293 +if ( ! function_exists( 'merchant_pro_is_active' ) ) {
294 + /**
295 + * Check if Merchant Pro is active.
296 + *
297 + * @return bool
298 + */
299 + function merchant_pro_is_active() {
300 + return defined( 'MERCHANT_PRO_VERSION' );
301 + }
302 +}
303 +
304 +if ( ! function_exists( 'merchant_pro_license_exists' ) ) {
305 + /**
306 + * Check if Merchant Pro license exists.
307 + *
308 + * @return bool
309 + */
310 + function merchant_pro_license_exists() {
311 + return ! empty( get_option( 'merchant_pro_license_key' ) );
312 + }
313 +}
314 +
315 +if ( ! function_exists( 'merchant_white_label_get_settings' ) ) {
316 + /**
317 + * Read the White Label settings stored by the aThemes White Label plugin.
318 + *
319 + * That option is the single source of truth, so values stay shared whether
320 + * they were saved from Merchant's settings or from the aThemes White Label plugin.
321 + *
322 + * @return array
323 + */
324 + function merchant_white_label_get_settings() {
325 + $settings = get_option( 'athemes_white_label_settings', array() );
326 +
327 + return is_array( $settings ) ? $settings : array();
328 + }
329 +}
330 +
331 +if ( ! function_exists( 'merchant_white_label_is_available' ) ) {
332 + /**
333 + * Whether this site is entitled to White Label.
334 + *
335 + * False in the free plugin alone. Merchant Pro answers the filter with its
336 + * Agency-tier check, so the free plugin never calls into Pro.
337 + *
338 + * @return bool
339 + */
340 + function merchant_white_label_is_available() {
341 + /**
342 + * Filter White Label entitlement.
343 + *
344 + * @param bool $available Whether the site is entitled.
345 + *
346 + * @since 2.3.1
347 + */
348 + return (bool) apply_filters( 'merchant_white_label_available', false );
349 + }
350 +}
351 +
352 +if ( ! function_exists( 'merchant_white_label_switch_key' ) ) {
353 + /**
354 + * The key Merchant's own White Label switch is stored under.
355 + *
356 + * @return string
357 + */
358 + function merchant_white_label_switch_key() {
359 + return 'merchant_activate_white_label';
360 + }
361 +}
362 +
363 +if ( ! function_exists( 'merchant_white_label_is_switched_on' ) ) {
364 + /**
365 + * Whether Merchant's own White Label switch is on.
366 + *
367 + * @return bool
368 + */
369 + function merchant_white_label_is_switched_on() {
370 + $options = get_option( 'merchant', array() );
371 +
372 + if ( ! is_array( $options ) || empty( $options['white-label'] ) || ! is_array( $options['white-label'] ) ) {
373 + return false;
374 + }
375 +
376 + return ! empty( $options['white-label'][ merchant_white_label_switch_key() ] );
377 + }
378 +}
379 +
380 +if ( ! function_exists( 'merchant_white_label_plugin_is_switched_on' ) ) {
381 + /**
382 + * Whether the aThemes White Label plugin's own switch is on.
383 + *
384 + * Every aThemes product shares this key, so it only speaks for Merchant while
385 + * the aThemes White Label plugin is the one in charge.
386 + *
387 + * @return bool
388 + */
389 + function merchant_white_label_plugin_is_switched_on() {
390 + $settings = merchant_white_label_get_settings();
391 +
392 + return ! empty( $settings['activate_white_label'] );
393 + }
394 +}
395 +
396 +if ( ! function_exists( 'merchant_white_label_plugin_is_applying' ) ) {
397 + /**
398 + * Whether the aThemes White Label plugin is the one white-labelling this site.
399 + *
400 + * Installed is not enough: the plugin has to be switched on, and the shared
401 + * key alone proves nothing, since Botiga Pro writes it too.
402 + *
403 + * @return bool
404 + */
405 + function merchant_white_label_plugin_is_applying() {
406 + return merchant_white_label_plugin_available() && merchant_white_label_plugin_is_switched_on();
407 + }
408 +}
409 +
410 +if ( ! function_exists( 'merchant_white_label_is_applied' ) ) {
411 + /**
412 + * Whether White Label is in effect for Merchant.
413 + *
414 + * Either switch is enough. The plugin's own switch forces it on whatever our
415 + * tier says, the way it always has; Merchant's switch answers for the rest,
416 + * entitlement included — so a site with the plugin merely installed and
417 + * switched off still gets to use the feature from here.
418 + *
419 + * @return bool
420 + */
421 + function merchant_white_label_is_applied() {
422 + if ( merchant_white_label_plugin_is_applying() ) {
423 + return true;
424 + }
425 +
426 + return merchant_white_label_is_switched_on() && merchant_white_label_is_available();
427 + }
428 +}
429 +
430 +if ( ! function_exists( 'merchant_white_label_plugin_available' ) ) {
431 + /**
432 + * Whether the aThemes White Label plugin is installed.
433 + *
434 + * @return bool
435 + */
436 + function merchant_white_label_plugin_available() {
437 + return class_exists( 'aThemes_White_Label' );
438 + }
439 +}
440 +
441 +/**
442 + * Check if any shortcode starts with merchant doesn't exist.
229 443 * If the shortcode is not registered, register it with return null to guarantee it exists.
230 444 */
231 445 if ( ! function_exists( 'merchant_modules_shortcode_exists' ) ) {
232 446 function merchant_modules_shortcode_exists() {
@@ -265,8 +479,10 @@
265 479 'merchant_module_free_shipping_progress_bar_cart_page',
266 480 'merchant_module_free_shipping_progress_bar_checkout_page',
267 481 'merchant_module_quick_view',
268 482 'merchant_module_real_time_search',
483 + 'merchant_reviews_carousel',
484 + 'merchant_module_complementary_products',
269 485 )
270 486 );
271 487
272 488 // Loop through the shortcodes and register them if they don't exist.