' . esc_html__('Two copies of Rayachat are active: the one downloaded from Rayachat and Raya AI from WordPress.org. Only one of them runs. Deactivate one; the other keeps the same settings and connection, and the deactivated copy can then be deleted.', 'raya-ai') . '

'; } }); return; } define('RAYACHAT_VERSION', '1.8.1'); define('RAYACHAT_FILE', __FILE__); define('RAYACHAT_OPTION', 'rayachat_settings'); // Minutes a product change waits before it is sent (Rayachat in the admin menu). define('RAYACHAT_DEFAULT_DELAY', 10); // Overridable from wp-config.php so a staging or local build of the widget can be tested. if (!defined('RAYACHAT_ORIGIN')) { define('RAYACHAT_ORIGIN', 'https://rayachat.net'); } require_once __DIR__ . '/includes/core.php'; require_once __DIR__ . '/includes/translation.php'; require_once __DIR__ . '/includes/frontend.php'; if (is_admin()) { require_once __DIR__ . '/includes/admin.php'; require_once __DIR__ . '/includes/connect.php'; require_once __DIR__ . '/includes/inbox.php'; require_once __DIR__ . '/includes/inbox-page.php'; require_once __DIR__ . '/includes/dashboard-widget.php'; } // Product sync exists only where WooCommerce does; WooCommerce loads // after this file, so the check waits for every plugin to be in. add_action('plugins_loaded', 'rayachat_load_woocommerce'); // Orders are touched only through WooCommerce's own order objects (a meta // value on an order placed after a chat, includes/sales.php), which work the // same on its own order tables (HPOS). add_action('before_woocommerce_init', 'rayachat_declare_hpos'); register_deactivation_hook(__FILE__, 'rayachat_deactivate');