{"id":272333,"date":"2026-01-07T16:18:28","date_gmt":"2026-01-07T16:18:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/arik-sahaj-checkout\/"},"modified":"2026-05-12T05:19:25","modified_gmt":"2026-05-12T05:19:25","slug":"arik-sahaj-checkout","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/arik-sahaj-checkout\/","author":18024400,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"1.0.4","tested":"6.7.5","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Arik Sahaj Checkout","header_author":"wcblogs87","header_description":"Create WooCommerce orders and send details via WhatsApp with inventory protection.","assets_banners_color":"b6d4bd","last_updated":"2026-05-12 05:19:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/arik-sahaj-checkout\/","header_author_uri":"https:\/\/profiles.wordpress.org\/wcblogs87\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":390,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.4":{"tag":"1.0.4","author":"wcblogs87","date":"2026-05-12 05:19:25"}},"upgrade_notice":{"1.0.4":"<p>Major update. Fixes fatal error on activation caused by PHP 8.x-only syntax. Adds popup-blocker bypass, honeypot anti-spam, multisite uninstall, block theme support, and full accessibility compliance. Upgrade immediately.<\/p>","1.0.2":"<p>Critical update. Fixes fatal AJAX errors on servers with PHP mail() disabled and button style settings not applying.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3434498,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3434498,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3434498,"resolution":"1","location":"assets","locale":"","width":1261,"height":562},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3434498,"resolution":"2","location":"assets","locale":"","width":1181,"height":573},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3434498,"resolution":"3","location":"assets","locale":"","width":1243,"height":557},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3434498,"resolution":"4","location":"assets","locale":"","width":1215,"height":596},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3434587,"resolution":"5","location":"assets","locale":"","width":884,"height":636}},"screenshots":{"1":"screenshot-1.png","2":"screenshot-2.png","3":"screenshot-3.png","4":"screenshot-4.png","5":"screenshot-5.png"}},"plugin_section":[],"plugin_tags":[262621,3160,241786,176324,286],"plugin_category":[45],"plugin_contributors":[246811],"plugin_business_model":[],"class_list":["post-272333","plugin","type-plugin","status-publish","hentry","plugin_tags-order-on-whatsapp","plugin_tags-whatsapp","plugin_tags-whatsapp-checkout","plugin_tags-whatsapp-order","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-wcblogs87","plugin_committers-wcblogs87"],"banners":{"banner":"https:\/\/ps.w.org\/arik-sahaj-checkout\/assets\/banner-772x250.png?rev=3434498","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/arik-sahaj-checkout\/assets\/icon-256x256.png?rev=3434498","icon_2x":"https:\/\/ps.w.org\/arik-sahaj-checkout\/assets\/icon-256x256.png?rev=3434498","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/arik-sahaj-checkout\/assets\/screenshot-1.png?rev=3434498","caption":"screenshot-1.png"},{"src":"https:\/\/ps.w.org\/arik-sahaj-checkout\/assets\/screenshot-2.png?rev=3434498","caption":"screenshot-2.png"},{"src":"https:\/\/ps.w.org\/arik-sahaj-checkout\/assets\/screenshot-3.png?rev=3434498","caption":"screenshot-3.png"},{"src":"https:\/\/ps.w.org\/arik-sahaj-checkout\/assets\/screenshot-4.png?rev=3434498","caption":"screenshot-4.png"},{"src":"https:\/\/ps.w.org\/arik-sahaj-checkout\/assets\/screenshot-5.png?rev=3434587","caption":"screenshot-5.png"}],"raw_content":"<!--section=description-->\n<p><strong>Arik Sahaj Checkout<\/strong> turns WhatsApp into a real WooCommerce checkout flow. Unlike basic \"click-to-chat\" plugins, this plugin creates a real WooCommerce order (a <em>shadow order<\/em>) the moment a customer clicks the WhatsApp button protecting your inventory from overselling while the customer completes the conversation on WhatsApp.<\/p>\n\n<h4>Why a \"Shadow Order\"?<\/h4>\n\n<p>When a customer clicks the WhatsApp button, the plugin:<\/p>\n\n<ol>\n<li>Creates a real WooCommerce order with the selected product, quantity, and variations<\/li>\n<li>Reduces stock immediately (atomic no race conditions)<\/li>\n<li>Opens WhatsApp with a pre-filled message including the Order ID<\/li>\n<li>Suppresses transactional emails so admin and customer aren't notified prematurely<\/li>\n<\/ol>\n\n<p>The result: your inventory is protected, your dashboard has a clean record of every WhatsApp inquiry, and you never oversell.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Real WooCommerce Orders<\/strong>: Every click creates a trackable WooCommerce order<\/li>\n<li><strong>Atomic Inventory Protection<\/strong>: Stock reduced via <code>wc_reduce_stock_levels()<\/code> \u2014 safe under concurrent load<\/li>\n<li><strong>Variable Product Support<\/strong>: Captures size, color, and other variation selections<\/li>\n<li><strong>High-Performance Order Storage (HPOS) compatible<\/strong>: Full support for WooCommerce HPOS<\/li>\n<li><strong>Cart &amp; Checkout Blocks compatible<\/strong>: Works alongside the WooCommerce Blocks experience<\/li>\n<li><strong>Popup-Blocker Safe<\/strong>: Opens WhatsApp tab synchronously on click; never blocked<\/li>\n<li><strong>Honeypot Anti-Spam<\/strong>: Built-in bot protection without CAPTCHA<\/li>\n<li><strong>Rate Limiting<\/strong>: Per-IP and per-user, configurable, with HTTP 429 responses<\/li>\n<li><strong>Customizable Message Templates<\/strong>: Use placeholders for product name, order ID, total, variations, date<\/li>\n<li><strong>Flexible Button Positioning<\/strong>: Before, after, or replace the Add to Cart button<\/li>\n<li><strong>Configurable Order Status<\/strong>: Choose any valid WooCommerce status for shadow orders<\/li>\n<li><strong>Email Suppression<\/strong>: Shadow orders never trigger admin\/customer emails<\/li>\n<li><strong>Block Theme Support<\/strong>: Compatible with Twenty Twenty-Four and other block themes<\/li>\n<li><strong>Translation Ready<\/strong>: Full i18n\/l10n support<\/li>\n<li><strong>Multisite Compatible<\/strong>: Network activation with per-site settings<\/li>\n<li><strong>Accessibility-First<\/strong>: ARIA attributes, keyboard navigation, <code>prefers-reduced-motion<\/code>, high-contrast mode<\/li>\n<li><strong>RTL Support<\/strong>: Right-to-left languages fully supported<\/li>\n<li><strong>WP-CLI Compatible<\/strong>: Plugin activation via <code>wp plugin activate<\/code> works correctly<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Customer browses your shop and selects a product<\/li>\n<li>Clicks \"Order via WhatsApp\"<\/li>\n<li>Plugin creates a real WooCommerce order with status of your choice (default: On Hold)<\/li>\n<li>Stock is reduced automatically<\/li>\n<li>WhatsApp opens in a new tab with a pre-filled message including the Order ID<\/li>\n<li>Customer messages you on WhatsApp you reference the Order ID in your WooCommerce dashboard<\/li>\n<\/ol>\n\n<h4>Perfect For<\/h4>\n\n<ul>\n<li>Stores that primarily take orders via WhatsApp (common in South Asia, MENA, Latin America)<\/li>\n<li>Businesses with limited online checkout (no payment gateway, no shipping calculator)<\/li>\n<li>Shops wanting inventory protection without complex multi-step checkout<\/li>\n<li>Stores selling variable products via WhatsApp<\/li>\n<li>Brick-and-mortar businesses using WordPress as a catalog<\/li>\n<\/ul>\n\n<h4>Theme Compatibility<\/h4>\n\n<p>Tested with the following themes (single product page and shop archive):<\/p>\n\n<ul>\n<li>Storefront<\/li>\n<li>Astra<\/li>\n<li>OceanWP<\/li>\n<li>Divi<\/li>\n<li>The7<\/li>\n<li>Flatsome<\/li>\n<li>Avada<\/li>\n<li>GeneratePress<\/li>\n<li>Kadence<\/li>\n<li>Blocksy<\/li>\n<li>Twenty Twenty-Four (block theme)<\/li>\n<\/ul>\n\n<p>The plugin uses high-specificity CSS selectors and CSS custom properties to override aggressive <code>!important<\/code> button rules from popular themes without breaking other site styles.<\/p>\n\n<h4>Technical Highlights<\/h4>\n\n<ul>\n<li>Object-oriented PHP architecture with singletons<\/li>\n<li>PHP 7.4+ compatible (no PHP 8.x-only syntax)<\/li>\n<li>Follows WordPress Coding Standards (WPCS)<\/li>\n<li>Security-first: nonce verification, capability checks, input sanitization, output escaping<\/li>\n<li>WooCommerce email hooks safely wrapped in try\/finally<\/li>\n<li>Cryptographically secure token generation via <code>random_bytes()<\/code><\/li>\n<li>Atomic stock reduction (no race conditions)<\/li>\n<li>HPOS-aware uninstall (cleans both <code>wc_orders_meta<\/code> and <code>postmeta<\/code>)<\/li>\n<li>Multisite-aware uninstall (loops all sites in network)<\/li>\n<li>No <code>wp_cache_flush()<\/code> abuse \u2014 targeted cache invalidation only<\/li>\n<li><code>wc_get_logger()<\/code> integration for production debugging<\/li>\n<li>Defensive class\/function existence checks throughout<\/li>\n<\/ul>\n\n<h3>Additional Information<\/h3>\n\n<h4>Support &amp; Connect<\/h4>\n\n<ul>\n<li><strong>Email Support:<\/strong> helpwcblog@gmail.com<\/li>\n<li><strong>Website:<\/strong> <strong><a href=\"https:\/\/gernx.com\/\">https:\/\/gernx.com\/<\/a><\/strong> <\/li>\n<li><strong>Support Forum:<\/strong> <a href=\"https:\/\/wordpress.org\/support\/plugin\/arik-sahaj-checkout\/\">WordPress.org Support<\/a><\/li>\n<li><strong>LinkedIn:<\/strong> <a href=\"https:\/\/www.linkedin.com\/in\/is-tanmoy\/\">Tanmoy Biswas<\/a><\/li>\n<\/ul>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin does not collect or transmit any personal data to external services. All order data is stored locally in your WordPress\/WooCommerce database, which you control.<\/p>\n\n<p>The plugin stores the following data on each shadow order:<\/p>\n\n<ul>\n<li>Customer IP address (standard WooCommerce field for fraud prevention)<\/li>\n<li>Customer user agent (standard WooCommerce field for fraud prevention)<\/li>\n<li>Product ID, variation ID, quantity, and variation attributes selected<\/li>\n<li>Order timestamp<\/li>\n<\/ul>\n\n<p>For logged-in customers, the order is attached to their WordPress user account. Anonymous customers have no personally identifying data stored beyond IP\/user agent (which WooCommerce stores for all orders, not just shadow orders).<\/p>\n\n<p>No data is sent to any third-party service. The WhatsApp deep link (<code>wa.me<\/code>) opens on the customer's device using only the destination number and message text you configure the plugin does not contact WhatsApp's servers itself.<\/p>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>WooCommerce 7.0 or higher (tested up to 9.5)<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>MySQL 5.6 or higher \/ MariaDB 10.1 or higher<\/li>\n<li>JSON and Multibyte String PHP extensions<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong><\/li>\n<li>Search for \"Arik Sahaj Checkout\"<\/li>\n<li>Click <strong>Install Now<\/strong><\/li>\n<li>Click <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Choose the downloaded file and click <strong>Install Now<\/strong><\/li>\n<li>Click <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Initial Configuration<\/h4>\n\n<ol>\n<li>Go to <strong>WooCommerce \u2192 WhatsApp Checkout<\/strong><\/li>\n<li>Enter your WhatsApp number with country code (e.g., <code>+8801719937625<\/code>)<\/li>\n<li>Customize the message template using available placeholders<\/li>\n<li>Configure the button text, position, and style<\/li>\n<li>Save settings the button appears on product pages immediately<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20the%20whatsapp%20business%20api%3F\"><h3>Do I need the WhatsApp Business API?<\/h3><\/dt>\n<dd><p>No. The plugin uses the free <code>wa.me<\/code> deep-link protocol. No API keys, no business verification, no per-message fees.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20stock%20when%20someone%20clicks%20the%20whatsapp%20button%3F\"><h3>What happens to stock when someone clicks the WhatsApp button?<\/h3><\/dt>\n<dd><p>A real WooCommerce order is created and stock is reduced via WooCommerce's built-in <code>wc_reduce_stock_levels()<\/code>. This is atomic and safe under concurrent customer load.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20variable%20products%3F\"><h3>Does it work with variable products?<\/h3><\/dt>\n<dd><p>Yes. On shop archive pages, variable products redirect the customer to the single product page so they can select size, color, etc. On single product pages, the WhatsApp button is only enabled once a valid variation is selected.<\/p><\/dd>\n<dt id=\"what%20if%20the%20customer%20doesn%27t%20actually%20message%20me%20on%20whatsapp%3F\"><h3>What if the customer doesn't actually message me on WhatsApp?<\/h3><\/dt>\n<dd><p>The shadow order remains in your WooCommerce dashboard with the status you configured (default: On Hold). You can follow up with the customer or cancel the order \u2014 cancelling automatically restores stock.<\/p><\/dd>\n<dt id=\"will%20shadow%20orders%20send%20email%20notifications%3F\"><h3>Will shadow orders send email notifications?<\/h3><\/dt>\n<dd><p>No. The plugin suppresses all WooCommerce transactional emails during shadow order creation. The customer and admin only receive emails when an order is processed through the normal checkout flow.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20servers%20where%20php%20%60mail%28%29%60%20is%20disabled%3F\"><h3>Does it work on servers where PHP `mail()` is disabled?<\/h3><\/dt>\n<dd><p>Yes. Because the plugin suppresses all email hooks during shadow order creation, <code>mail()<\/code> is never called. No PHPMailer errors regardless of server configuration.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Does it work with WooCommerce HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares HPOS compatibility and uses only HPOS-safe APIs (no direct postmeta access on orders).<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20new%20cart%20%26%20checkout%20blocks%3F\"><h3>Does it work with the new Cart &amp; Checkout Blocks?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares <code>cart_checkout_blocks<\/code> compatibility and doesn't interfere with the Block-based checkout flow.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20whatsapp%20message%3F\"><h3>Can I customize the WhatsApp message?<\/h3><\/dt>\n<dd><p>Yes. Use placeholders like <code>{product_name}<\/code>, <code>{order_id}<\/code>, <code>{quantity}<\/code>, <code>{total}<\/code>, <code>{variations}<\/code>, and <code>{date}<\/code> in the message template setting.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20button%20color%20and%20style%3F\"><h3>Can I change the button color and style?<\/h3><\/dt>\n<dd><p>Yes. The plugin includes a Button Style section with color pickers, padding, border radius, font size, icon size, and a custom icon uploader.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%3F\"><h3>Is the plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. The plugin is fully internationalized and ready for translation via WordPress.org's Translate platform or <code>.po<\/code>\/<code>.mo<\/code> files in <code>\/languages<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multisite%3F\"><h3>Does it support multisite?<\/h3><\/dt>\n<dd><p>Yes. Activation, deactivation, and uninstall all handle multisite correctly. Each site has its own settings.<\/p><\/dd>\n<dt id=\"is%20it%20accessible%3F\"><h3>Is it accessible?<\/h3><\/dt>\n<dd><p>Yes. The plugin supports keyboard navigation, ARIA attributes (<code>aria-busy<\/code>, <code>aria-label<\/code>, <code>role=\"alert\"<\/code>), <code>prefers-reduced-motion<\/code>, and Windows High Contrast Mode.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20collect%20personal%20data%3F\"><h3>Does the plugin collect personal data?<\/h3><\/dt>\n<dd><p>No external data is transmitted. The plugin only stores order data locally in your WooCommerce database, which you control. Customer IP address and user agent are stored on the order for fraud prevention (a standard WooCommerce practice).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<p>Release Date: May 12, 2026<\/p>\n\n<p><strong>Critical Bug Fixes<\/strong><\/p>\n\n<ul>\n<li>Fixed fatal error on activation caused by PHP 8.0+ syntax used without proper version requirement. Removed <code>match<\/code> expressions, <code>mixed<\/code> type hint, <code>int|WP_Error<\/code> union return types, <code>: never<\/code> return type, <code>str_contains()<\/code>, and <code>declare(strict_types=1)<\/code> from all files. Plugin now requires PHP 7.4+ which matches the declared header.<\/li>\n<li>Fixed <code>is_product_archive()<\/code> fatal error \u2014 this function does not exist in WooCommerce. Replaced with <code>is_woocommerce()<\/code> plus standard archive checks.<\/li>\n<li>Fixed <code>'replace_add_to_cart'<\/code> button position breaking variable products by removing the entire add-to-cart template (including variation dropdowns). Now uses CSS-based hiding that preserves variation selection.<\/li>\n<li>Fixed <code>woocommerce_is_sold_individually<\/code> filter being applied globally, affecting all products on the site. Removed entirely.<\/li>\n<li>Fixed race condition where stock could be oversold between the stock check and stock reduction. Stock reduction now runs before status change to close the window.<\/li>\n<li>Fixed email suppression filters leaking if <code>update_status()<\/code> threw an exception. Wrapped in try\/finally to guarantee filter restoration.<\/li>\n<\/ul>\n\n<p><strong>Security Hardening<\/strong><\/p>\n\n<ul>\n<li>Added HTTP method enforcement on AJAX endpoint (POST-only).<\/li>\n<li>Added honeypot anti-spam field with <code>ariksac_honeypot_field<\/code> and <code>ariksac_ajax_pre_check<\/code> filters for reCAPTCHA\/hCaptcha integration.<\/li>\n<li>Added per-user rate limiting in addition to per-IP rate limiting (CDN\/proxy-safe).<\/li>\n<li>Added <code>ariksac_trust_proxy_headers<\/code> filter (default false) \u2014 <code>REMOTE_ADDR<\/code> is now the authoritative IP source. Prevents <code>X-Forwarded-For<\/code> spoofing of rate limits and order IP records.<\/li>\n<li>Added strict sanitization callbacks for button position, yes\/no settings, and order status (whitelisted against <code>wc_get_order_statuses()<\/code>).<\/li>\n<li>Changed message template sanitizer from <code>wp_kses_post<\/code> to <code>sanitize_textarea_field<\/code> \u2014 WhatsApp messages should be plain text.<\/li>\n<li>Added phone number validation with inline admin error feedback.<\/li>\n<li>Replaced <code>wp_die(-1)<\/code> from <code>check_ajax_referer<\/code> with proper JSON 403 response.<\/li>\n<\/ul>\n\n<p><strong>User Experience<\/strong><\/p>\n\n<ul>\n<li>Fixed popup blocker preventing WhatsApp from opening \u2014 window now opens synchronously on click and is navigated after AJAX response.<\/li>\n<li>Added HTTP 429 rate-limit detection with dedicated error message.<\/li>\n<li>Added HTML entity decoding for server-returned error messages.<\/li>\n<li>Added <code>aria-busy<\/code> toggle during loading state for screen reader accessibility.<\/li>\n<li>Added smooth fallback notice container for block themes without <code>.woocommerce-notices-wrapper<\/code>.<\/li>\n<li>Added 30-second AJAX timeout to prevent indefinite hangs.<\/li>\n<li>Added double-click prevention via <code>aria-busy<\/code> state check.<\/li>\n<li>Added WC logger integration \u2014 errors viewable at WooCommerce \u2192 Status \u2192 Logs.<\/li>\n<\/ul>\n\n<p><strong>Theme Compatibility<\/strong><\/p>\n\n<ul>\n<li>Added Twenty Twenty-Four and block theme compatibility selectors.<\/li>\n<li>Added Flatsome, Avada, GeneratePress, Kadence, Blocksy compatibility patterns.<\/li>\n<li>Added <code>box-sizing: border-box<\/code> to prevent padding overflow in strict themes.<\/li>\n<\/ul>\n\n<p><strong>Accessibility<\/strong><\/p>\n\n<ul>\n<li>Added <code>prefers-reduced-motion<\/code> media query for spinner animation.<\/li>\n<li>Added Windows High Contrast Mode (<code>forced-colors: active<\/code>) support.<\/li>\n<li>Added <code>aria-live<\/code> regions for notices.<\/li>\n<li>Added print stylesheet (hides WhatsApp UI from printed pages).<\/li>\n<li>Added focus-visible states throughout admin and frontend.<\/li>\n<\/ul>\n\n<p><strong>Internationalization<\/strong><\/p>\n\n<ul>\n<li>Added RTL stylesheet rules for Arabic, Hebrew, Urdu, and other RTL languages.<\/li>\n<li>Removed translated strings from default database storage \u2014 translation now happens at output time, language-switch safe.<\/li>\n<\/ul>\n\n<p><strong>Order Quality<\/strong><\/p>\n\n<ul>\n<li>Logged-in customers now have orders attached to their WordPress account.<\/li>\n<li>Pre-fills billing email and name from user profile when available.<\/li>\n<li>Added <code>_ariksac_order_source = 'whatsapp'<\/code> meta for filtering in admin.<\/li>\n<li>Added <code>{date}<\/code> placeholder for message templates.<\/li>\n<li>Added <code>ariksac_message_placeholders<\/code> filter for custom placeholders.<\/li>\n<li>Improved <code>wc_price()<\/code> output cleaning \u2014 currency symbols and <code>&amp;nbsp;<\/code> now display correctly in WhatsApp messages.<\/li>\n<li>User agent truncated to 200 characters for DB column safety.<\/li>\n<\/ul>\n\n<p><strong>Uninstall &amp; Cleanup<\/strong><\/p>\n\n<ul>\n<li>Multisite-aware uninstall loops through all sites in network.<\/li>\n<li>Cleans both HPOS <code>wc_orders_meta<\/code> and legacy <code>postmeta<\/code> regardless of current mode.<\/li>\n<li>Cleans rate-limit transients with proper prefix-based queries.<\/li>\n<li>Cleans cron events, user meta, and custom capabilities.<\/li>\n<li>Replaced <code>wp_cache_flush()<\/code> with targeted <code>wp_cache_delete()<\/code> \u2014 no longer impacts other plugins' Redis\/Memcached cache.<\/li>\n<\/ul>\n\n<p><strong>Other<\/strong><\/p>\n\n<ul>\n<li>Bumped minimum WordPress version requirement to 6.0.<\/li>\n<li>Bumped tested WooCommerce version to 9.5.<\/li>\n<li>Added <code>wp_color_picker<\/code> palette support in admin.<\/li>\n<li>Added Help &amp; Documentation tab with placeholder reference and system requirements check.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<p>Release Date: March 13, 2026<\/p>\n\n<ul>\n<li>Fixed fatal error caused by WooCommerce email notifications firing during shadow order creation on servers with PHP mail() disabled.<\/li>\n<li>Fixed <code>update_meta_data()<\/code> warning on <code>_customer_ip_address<\/code> and <code>_customer_user_agent<\/code>. Replaced with proper WC setter methods.<\/li>\n<li>Fixed button style settings not applying due to CSS specificity wars with theme <code>!important<\/code> rules. Added high-specificity selector list.<\/li>\n<li>Fixed CSS notice selectors mismatched with JS-applied classes.<\/li>\n<li>Fixed debug data exposed in production AJAX error responses.<\/li>\n<li>Added button style result caching for performance on archive pages.<\/li>\n<li>Added The7 theme compatibility.<\/li>\n<li>Added dark mode support for notice styles.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<p>Release Date: January 2026<\/p>\n\n<ul>\n<li>Initial release<\/li>\n<li>Shadow order system with WhatsApp integration<\/li>\n<li>Variable product support<\/li>\n<li>HPOS compatibility<\/li>\n<li>Security features (nonce, rate limiting, input sanitization)<\/li>\n<li>Customizable message templates<\/li>\n<li>Flexible button positioning<\/li>\n<\/ul>","raw_excerpt":"Create real WooCommerce orders and send order details via WhatsApp with automatic inventory protection.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/272333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=272333"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wcblogs87"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=272333"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=272333"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=272333"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=272333"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=272333"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=272333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}