{"id":349878,"date":"2026-09-24T06:58:48","date_gmt":"2026-09-24T06:58:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ez-toolkit\/"},"modified":"2026-10-23T13:22:53","modified_gmt":"2026-10-23T13:22:53","slug":"ezdigi-tool","status":"publish","type":"plugin","link":"https:\/\/ne.wordpress.org\/plugins\/ezdigi-tool\/","author":23481372,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.8","stable_tag":"1.4.8","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"EZDIGI Tool","header_author":"VAHOVA.net","header_description":"All-in-one management toolkit for WordPress: site security, bot blocker, crawler, image optimizer, variation fixer, affiliate manager, live streaming schedule, and Gmail SMTP.","assets_banners_color":"0f2847","last_updated":"2026-10-23 13:22:53","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ezdigi.net\/","header_plugin_uri":"https:\/\/ezdigi.net\/","header_author_uri":"https:\/\/vahova.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":678,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"hitz2330","date":"2026-09-24 07:06:13","revision":3710707},"1.0.6":{"tag":"1.0.6","author":"hitz2330","date":"2026-09-24 09:43:29","revision":3710987},"1.2.4":{"tag":"1.2.4","author":"hitz2330","date":"2026-09-30 07:57:16","revision":3720597},"1.2.5":{"tag":"1.2.5","author":"hitz2330","date":"2026-09-30 09:08:20","revision":3720779},"1.2.6":{"tag":"1.2.6","author":"hitz2330","date":"2026-09-30 09:33:28","revision":3720818},"1.2.7":{"tag":"1.2.7","author":"hitz2330","date":"2026-09-30 09:47:55","revision":3720859},"1.2.8":{"tag":"1.2.8","author":"hitz2330","date":"2026-09-30 09:57:26","revision":3720889},"1.2.9":{"tag":"1.2.9","author":"hitz2330","date":"2026-09-30 10:09:10","revision":3720939},"1.3.0":{"tag":"1.3.0","author":"hitz2330","date":"2026-09-30 10:12:37","revision":3720942},"1.3.1":{"tag":"1.3.1","author":"hitz2330","date":"2026-09-30 11:17:16","revision":3721072},"1.3.2":{"tag":"1.3.2","author":"hitz2330","date":"2026-09-30 11:22:01","revision":3721090},"1.3.3":{"tag":"1.3.3","author":"hitz2330","date":"2026-09-30 11:32:29","revision":3721109},"1.3.4":{"tag":"1.3.4","author":"hitz2330","date":"2026-09-30 11:49:09","revision":3721136},"1.3.5":{"tag":"1.3.5","author":"hitz2330","date":"2026-09-30 12:18:19","revision":3721186},"1.3.6":{"tag":"1.3.6","author":"hitz2330","date":"2026-09-30 16:13:29","revision":3721658},"1.3.7":{"tag":"1.3.7","author":"hitz2330","date":"2026-10-06 02:58:19","revision":3729922},"1.3.8":{"tag":"1.3.8","author":"hitz2330","date":"2026-10-06 03:08:42","revision":3729930},"1.3.9":{"tag":"1.3.9","author":"hitz2330","date":"2026-10-06 03:12:39","revision":3729935},"1.4.0":{"tag":"1.4.0","author":"hitz2330","date":"2026-10-15 03:39:22","revision":3747554},"1.4.1":{"tag":"1.4.1","author":"hitz2330","date":"2026-10-15 03:57:00","revision":3747566},"1.4.2":{"tag":"1.4.2","author":"hitz2330","date":"2026-10-15 04:03:22","revision":3747569},"1.4.3":{"tag":"1.4.3","author":"hitz2330","date":"2026-10-19 09:46:55","revision":3754427},"1.4.4":{"tag":"1.4.4","author":"hitz2330","date":"2026-10-19 09:54:06","revision":3754438},"1.4.5":{"tag":"1.4.5","author":"hitz2330","date":"2026-10-19 10:06:36","revision":3754465},"1.4.6":{"tag":"1.4.6","author":"hitz2330","date":"2026-10-19 10:15:27","revision":3754484},"1.4.7":{"tag":"1.4.7","author":"hitz2330","date":"2026-10-20 04:54:37","revision":3755904},"1.4.8":{"tag":"1.4.8","author":"hitz2330","date":"2026-10-23 13:22:53","revision":3761745}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3710690,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3710690,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3710707,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3710707,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5","1.0.6","1.2.4","1.2.5","1.2.6","1.2.7","1.2.8","1.2.9","1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.8","1.3.9","1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5","1.4.6","1.4.7","1.4.8"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Main EZ Toolkit central management dashboard.","2":"EZ Security &amp; Spam configuration module.","3":"EZ Voucher management interface."}},"plugin_section":[],"plugin_tags":[9837,600,6696,582,11238],"plugin_category":[41,50,54],"plugin_contributors":[282413,282412],"plugin_business_model":[],"class_list":["post-349878","plugin","type-plugin","status-publish","hentry","plugin_tags-crawler","plugin_tags-security","plugin_tags-smtp","plugin_tags-streaming","plugin_tags-toolkit","plugin_category-communication","plugin_category-media","plugin_category-security-and-spam-protection","plugin_contributors-ezio","plugin_contributors-hitz2330","plugin_committers-hitz2330"],"banners":{"banner":"https:\/\/ps.w.org\/ezdigi-tool\/assets\/banner-772x250.png?rev=3710707","banner_2x":"https:\/\/ps.w.org\/ezdigi-tool\/assets\/banner-1544x500.png?rev=3710707","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ezdigi-tool\/assets\/icon-128x128.png?rev=3710690","icon_2x":"https:\/\/ps.w.org\/ezdigi-tool\/assets\/icon-256x256.png?rev=3710690","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>EZDIGI Site Management Toolkit is a modular suite of tools designed to optimize performance, enhance security, streamline management, and improve user experience for WordPress websites.<\/p>\n\n<h3>Key Features:<\/h3>\n\n<ul>\n<li><strong>EZ Security &amp; Spam:<\/strong> Enhances site security, prevents password reset email flooding &amp; brute force, blocks user enumeration scans, stops automated spam bot registrations, disables spam comments, and cleans junk data.<\/li>\n<li><strong>EZ Crawler:<\/strong> Automated data collection and content management utility.<\/li>\n<li><strong>EZ Image Optimizer:<\/strong> Automatically optimizes uploaded images to conserve bandwidth and storage space.<\/li>\n<li><strong>EZ Variation Fixer:<\/strong> Resolves display glitches for WooCommerce product variations and optimizes variation selections.<\/li>\n<li><strong>EZ Voucher:<\/strong> Promotional voucher issue and management system for WooCommerce stores.<\/li>\n<li><strong>EZ Extra Demo:<\/strong> Live theme and product demo preview switcher bar.<\/li>\n<li><strong>EZ SMTP:<\/strong> Gmail SMTP mailer integration for reliable notification email delivery.<\/li>\n<li><strong>EZ Affiliater:<\/strong> Automatic affiliate link conversion, link cloaking, and affiliate campaign management.<\/li>\n<li><strong>EZ Streaming:<\/strong> Live stream scheduler, video replay organizer, and stream showcase.<\/li>\n<li><strong>EZ Admin Bar:<\/strong> Customizes and cleans up the WordPress admin toolbar to remove clutter.<\/li>\n<li><strong>EZ Contact Buttons:<\/strong> Fast contact buttons (Zalo &amp; Facebook Messenger) for WooCommerce product pages with full toggle switches and customizable details.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to external services to provide specific administrative features:<\/p>\n\n<ol>\n<li><p><strong>Shopee Affiliate API (Shopee)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> EZ Affiliater connects to Shopee's GraphQL API to search products, fetch live pricing, and convert item URLs into affiliate tracking links when requested by an administrator in the admin dashboard.<\/li>\n<li><strong>What data is sent and when:<\/strong> Product URLs and search keyword strings are transmitted only when an administrator triggers product queries or link conversions.<\/li>\n<li><strong>Service Links:<\/strong> <a href=\"https:\/\/help.shopee.vn\/portal\/article\/77242\">Terms of Service<\/a> | <a href=\"https:\/\/help.shopee.vn\/portal\/article\/77244\">Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>YouTube Data API (Google LLC)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> Used by EZ Affiliater and EZ Streaming to query video metadata, channel details, and subscriber\/view counters when YouTube URLs or channel handles are configured.<\/li>\n<li><strong>What data is sent and when:<\/strong> Public video IDs, channel handles, or search keywords when fetching metadata. No personal user data is transmitted.<\/li>\n<li><strong>Service Links:<\/strong> <a href=\"https:\/\/www.youtube.com\/t\/terms\">YouTube Terms of Service<\/a> | <a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>TikTok oEmbed (TikTok Inc.)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> Used by EZ Affiliater to fetch public video titles, author names, and embed preview players for TikTok URLs.<\/li>\n<li><strong>What data is sent and when:<\/strong> Public TikTok video URLs when generating video preview cards. No personal user data is sent.<\/li>\n<li><strong>Service Links:<\/strong> <a href=\"https:\/\/www.tiktok.com\/legal\/page\/row\/terms-of-service\/en\">TikTok Terms of Service<\/a> | <a href=\"https:\/\/www.tiktok.com\/legal\/page\/row\/privacy-policy\/en\">TikTok Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Steam Store API (Valve Corporation)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> Used by EZ Streaming to search game titles and fetch game store metadata and public store cover images for live stream schedules.<\/li>\n<li><strong>What data is sent and when:<\/strong> Game title search terms and public Steam App IDs when an administrator searches or adds games.<\/li>\n<li><strong>Service Links:<\/strong> <a href=\"https:\/\/store.steampowered.com\/subscriber_agreement\/\">Steam Subscriber Agreement<\/a> | <a href=\"https:\/\/store.steampowered.com\/privacy_agreement\/\">Steam Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Facebook Graph API (Meta Platforms, Inc.)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> Used by EZ Affiliater to publish product updates to a connected Facebook Page or retrieve public page photo metadata.<\/li>\n<li><strong>What data is sent and when:<\/strong> Configured post title, message, and affiliate link when an administrator clicks the Facebook share button.<\/li>\n<li><strong>Service Links:<\/strong> <a href=\"https:\/\/www.facebook.com\/terms.php\">Facebook Terms of Service<\/a> | <a href=\"https:\/\/www.facebook.com\/privacy\/policy\">Meta Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Startpage Search (Startpage B.V.)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> Used by the EZ Crawler module to search for product image suggestions when requested by an administrator in the admin dashboard.<\/li>\n<li><strong>What data is sent and when:<\/strong> Product search query keywords entered by an administrator during image search.<\/li>\n<li><strong>Service Links:<\/strong> <a href=\"https:\/\/www.startpage.com\/en\/terms-of-service\/\">Startpage Terms of Service<\/a> | <a href=\"https:\/\/www.startpage.com\/en\/privacy-policy\/\">Startpage Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Bing Image Search (Microsoft Corporation)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> Used by the EZ Crawler module as an alternative image search provider when searching for product image thumbnails.<\/li>\n<li><strong>What data is sent and when:<\/strong> Search query keywords when searching for missing product images.<\/li>\n<li><strong>Service Links:<\/strong> <a href=\"https:\/\/www.microsoft.com\/servicesagreement\">Microsoft Services Agreement<\/a> | <a href=\"https:\/\/privacy.microsoft.com\/privacystatement\">Microsoft Privacy Statement<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Make.com Webhook (Celonis Inc.)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> Used by EZ Affiliater to send product details to an administrator-configured automation webhook on Make.com.<\/li>\n<li><strong>What data is sent and when:<\/strong> Product title, link, price, and thumbnail URL only when an administrator triggers the \"Send to Make\" action.<\/li>\n<li><strong>Service Links:<\/strong> <a href=\"https:\/\/www.make.com\/en\/terms-and-conditions\">Make Terms and Conditions<\/a> | <a href=\"https:\/\/www.make.com\/en\/privacy-notice\">Make Privacy Notice<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Zalo (VNG Corporation)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> Used to generate customer support chat links (<code>zalo.me<\/code>) configured in the admin dashboard.<\/li>\n<li><strong>What data is sent and when:<\/strong> Configured support phone number in the link URL.<\/li>\n<li><strong>Service Links:<\/strong> <a href=\"https:\/\/zalo.me\/terms-of-service\">Zalo Terms of Service<\/a> | <a href=\"https:\/\/zalo.me\/privacy-policy\">Zalo Privacy Policy<\/a><\/li>\n<\/ul><\/li>\n<li><p><strong>Target Crawled Websites (User-specified Web Scraping Targets)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is and what it is used for:<\/strong> Used by the EZ Crawler module to retrieve product HTML, specifications, and images from external websites explicitly configured by the website administrator for content migration or indexing.<\/li>\n<li><strong>What data is sent and when:<\/strong> Standard HTTP GET requests with custom User-Agent headers are sent to target URLs only when an administrator explicitly initiates a crawl batch or image refill task.<\/li>\n<li><strong>Service Links:<\/strong> Terms of Service and Privacy Policies are governed individually by the specific third-party domain(s) input by the administrator.<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ez-toolkit<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly via the WordPress Admin (<strong>Plugins -&gt; Add New -&gt; Upload Plugin<\/strong>).<\/li>\n<li>Activate <strong>EZDIGI Site Management Toolkit<\/strong> through the 'Plugins' menu in WordPress.<\/li>\n<li>Navigate to the <strong>EZ Toolkit<\/strong> admin menu to toggle modules and configure settings as needed.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20plugin%20free%3F\"><h3>Is this plugin free?<\/h3><\/dt>\n<dd><p>Yes, EZDIGI Site Management Toolkit is free, open-source software released under the GPLv2 license.<\/p><\/dd>\n<dt id=\"can%20i%20activate%20or%20deactivate%20individual%20modules%3F\"><h3>Can I activate or deactivate individual modules?<\/h3><\/dt>\n<dd><p>Yes. From the main EZ Toolkit dashboard in the WordPress admin panel, you can enable or disable each module independently based on your site requirements.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.8<\/h4>\n\n<ul>\n<li>Feature(affiliate): Ra m\u1eaft t\u00ednh n\u0103ng Modal Popup \u0110\u00e1nh gi\u00e1 th\u1ef1c t\u1ebf (Product Review Sheet) phong c\u00e1ch Dark Glassmorphism cao c\u1ea5p, t\u1ef1 \u0111\u1ed9ng hi\u1ec3n th\u1ecb video review v\u00e0 b\u00e0i vi\u1ebft \u0111\u00e1nh gi\u00e1 chi ti\u1ebft khi click v\u00e0o s\u1ea3n ph\u1ea9m.<\/li>\n<li>UI\/UX(affiliate): Gi\u1ea5u li\u00ean k\u1ebft mua h\u00e0ng Shopee\/Affiliate v\u00e0o cu\u1ed1i b\u00e0i \u0111\u00e1nh gi\u00e1 th\u00f4ng qua n\u00fat k\u00eau g\u1ecdi h\u00e0nh \u0111\u1ed9ng (CTA) t\u1ed1i \u01b0u chuy\u1ec3n \u0111\u1ed5i, \u0111\u1ea3m b\u1ea3o tu\u00e2n th\u1ee7 nghi\u00eam ng\u1eb7t ch\u00ednh s\u00e1ch ti\u1ebfp th\u1ecb li\u00ean k\u1ebft.<\/li>\n<li>Responsive(affiliate): T\u1ed1i \u01b0u hi\u1ec3n th\u1ecb responsive \u0111a thi\u1ebft b\u1ecb: l\u01b0\u1edbi 4 c\u1ed9t tr\u00ean desktop, 3 c\u1ed9t tr\u00ean tablet (768px-1024px) v\u00e0 2 c\u1ed9t tr\u00ean di \u0111\u1ed9ng (&lt;768px). B\u1ed1 c\u1ee5c th\u1ebb trong modal t\u1ef1 \u0111\u1ed9ng chuy\u1ec3n sang \u1ea3nh tr\u00ean - ch\u1eef d\u01b0\u1edbi c\u00e2n \u0111\u1ed1i tr\u00ean m\u00e0n h\u00ecnh \u0111i\u1ec7n tho\u1ea1i.<\/li>\n<li>UX(affiliate): Kh\u00f3a s\u1ef1 ki\u1ec7n \u0111\u00f3ng modal khi b\u1ea5m ra ngo\u00e0i background \u0111\u1ec3 ch\u1ed1ng ng\u01b0\u1eddi d\u00f9ng click nh\u1ea7m khi \u0111ang \u0111\u1ecdc b\u00e0i review, b\u1eaft bu\u1ed9c b\u1ea5m n\u00fat \u0111\u00f3ng [X] ho\u1eb7c ph\u00edm ESC.<\/li>\n<li>UI(affiliate): Tinh ch\u1ec9nh font ch\u1eef v\u00e0 ch\u1ed1ng r\u1edbt ch\u1eef l\u1ebb (orphan words) tr\u00ean n\u00fat b\u1ea5m CTA Shopee v\u00e0 ti\u00eau \u0111\u1ec1 \u0110\u00c1NH GI\u00c1 TH\u1ef0C T\u1ebe.<\/li>\n<\/ul>\n\n<p><h4>1.4.7<\/h4><\/p>\n\n<ul>\n<li>Feature(contact-buttons): Ra m\u1eaft module EZ Contact Buttons cho ph\u00e9p b\u1eadt\/t\u1eaft \u0111\u1ed9c l\u1eadp n\u00fat Li\u00ean h\u1ec7 Zalo v\u00e0 Li\u00ean h\u1ec7 Messenger ngay c\u1ea1nh n\u00fat Mua H\u00e0ng tr\u00ean trang chi ti\u1ebft s\u1ea3n ph\u1ea9m WooCommerce.<\/li>\n<li>Feature(contact-buttons): B\u1ed5 sung giao di\u1ec7n qu\u1ea3n tr\u1ecb tr\u1ef1c quan trong EZ Toolkit Dashboard, h\u1ed7 tr\u1ee3 t\u00f9y bi\u1ebfn s\u1ed1 \u0111i\u1ec7n tho\u1ea1i\/link Zalo, link Messenger (Fanpage\/m.me), ti\u00eau \u0111\u1ec1 n\u00fat, ch\u1ebf \u0111\u1ed9 m\u1edf tab m\u1edbi v\u00e0 b\u1ea3n xem tr\u01b0\u1edbc Live Preview.<\/li>\n<li>Fix(contact-buttons): Lo\u1ea1i b\u1ecf ho\u00e0n to\u00e0n m\u00e3 Zalo t\u0129nh c\u1ed1 \u0111\u1ecbnh tr\u01b0\u1edbc \u0111\u00e2y, chuy\u1ec3n giao quy\u1ec1n ki\u1ec3m so\u00e1t b\u1eadt\/t\u1eaft v\u00e0 c\u1ea5u h\u00ecnh s\u1ed1 \u0111i\u1ec7n tho\u1ea1i ho\u00e0n to\u00e0n v\u1ec1 tay qu\u1ea3n tr\u1ecb vi\u00ean.<\/li>\n<\/ul>\n\n<h4>1.4.6<\/h4>\n\n<ul>\n<li>Fix(smtp): \u0110\u01b0a \u00f4 nh\u1eadp email nh\u1eadn th\u01b0 th\u1eed nghi\u1ec7m (Test Email) v\u1ec1 tr\u1ea1ng th\u00e1i tr\u1ed1ng ho\u00e0n to\u00e0n theo \u0111\u00fang m\u1eb7c \u0111\u1ecbnh, kh\u00f4ng t\u1ef1 \u0111\u1ed9ng \u0111i\u1ec1n s\u1eb5n email ng\u01b0\u1eddi d\u00f9ng.<\/li>\n<\/ul>\n\n<h4>1.4.5<\/h4>\n\n<ul>\n<li>UI\/UX(smtp): Chu\u1ea9n h\u00f3a giao di\u1ec7n EZ SMTP ph\u1ee5c v\u1ee5 song song c\u1ea3 Email theo t\u00ean mi\u1ec1n ri\u00eang (cPanel \/ Hosting) v\u00e0 Gmail m\u1ed9t c\u00e1ch tr\u1ef1c quan, \u0111\u1ea7y \u0111\u1ee7 c\u00e1c tr\u01b0\u1eddng Host, Port, Lo\u1ea1i m\u00e3 h\u00f3a, T\u00e0i kho\u1ea3n, M\u1eadt kh\u1ea9u.<\/li>\n<\/ul>\n\n<h4>1.4.4<\/h4>\n\n<ul>\n<li>UI(smtp): Kh\u00f4i ph\u1ee5c 100% nguy\u00ean v\u1eb9n kh\u1ed1i H\u01b0\u1edbng d\u1eabn t\u1ea1o M\u1eadt kh\u1ea9u \u1ee9ng d\u1ee5ng (App Password) Gmail 6 b\u01b0\u1edbc chu\u1ea9n m\u1ef1c ban \u0111\u1ea7u.<\/li>\n<li>Feature(smtp): Tinh ch\u1ec9nh giao di\u1ec7n g\u1ecdn g\u00e0ng, \u01b0u ti\u00ean m\u1eb7c \u0111\u1ecbnh lu\u1ed3ng Gmail SMTP si\u00eau t\u1ed1c v\u00e0 \u0111\u01b0a m\u1ee5c t\u00f9y ch\u1ec9nh m\u00e1y ch\u1ee7 v\u00e0o khu v\u1ef1c t\u00f9y ch\u1ecdn g\u1ecdn \u0111\u1eb9p.<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Feature(smtp): N\u00e2ng c\u1ea5p to\u00e0n di\u1ec7n module EZ SMTP h\u1ed7 tr\u1ee3 linh ho\u1ea1t Custom SMTP Host &amp; Port (t\u01b0\u01a1ng th\u00edch t\u1ed1i \u01b0u h\u00f2m th\u01b0 m\u00e1y ch\u1ee7 cPanel, DirectAdmin, Brevo, SendGrid, Amazon SES b\u00ean c\u1ea1nh Gmail m\u1eb7c \u0111\u1ecbnh). Cho ph\u00e9p t\u00f9y bi\u1ebfn c\u1ed5ng (Port 465 SSL, 587 TLS, 25) v\u00e0 c\u00e1c ch\u1ebf \u0111\u1ed9 m\u00e3 h\u00f3a.<\/li>\n<li>Feature(smtp): Kh\u00f4i ph\u1ee5c v\u00e0 n\u00e2ng c\u1ea5p c\u00f4ng c\u1ee5 G\u1eedi Test Email tr\u1ef1c ti\u1ebfp trong trang qu\u1ea3n tr\u1ecb EZ Toolkit v\u1edbi c\u01a1 ch\u1ebf ki\u1ec3m tra l\u1ed7i k\u1ebft n\u1ed1i chi ti\u1ebft v\u00e0 th\u00f4ng b\u00e1o ph\u1ea3n h\u1ed3i t\u1ee9c th\u00ec.<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Fix(affiliate): Lo\u1ea1i b\u1ecf hi\u1ec7n t\u01b0\u1ee3ng l\u1eb7p \u0111\u00f4i icon c\u1ea3nh b\u00e1o (hai bi\u1ec3u t\u01b0\u1ee3ng li\u00ean ti\u1ebfp) v\u00e0 ch\u1ed1ng hi\u1ec3n th\u1ecb tr\u00f9ng l\u1eb7p nhi\u1ec1u banner th\u00f4ng b\u00e1o c\u00f9ng l\u00fac (Toast deduplication). T\u1ed1i \u01b0u c\u01a1 ch\u1ebf b\u1eaft s\u1ef1 ki\u1ec7n d\u00e1n link \u0111\u1ec3 ch\u1ec9 hi\u1ec3n th\u1ecb \u0111\u00fang 1 th\u00f4ng b\u00e1o duy nh\u1ea5t v\u00e0 t\u1ef1 \u0111\u1ed9ng g\u1ee1 b\u1ecf bi\u1ec3u t\u01b0\u1ee3ng d\u01b0 th\u1eeba.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>UX(affiliate): N\u00e2ng c\u1ea5p lu\u1ed3ng \u0110\u0103ng nhanh (Quick Add Modal) cho ph\u00e9p nh\u1eadp li\u00ean t\u1ee5c nhi\u1ec1u s\u1ea3n ph\u1ea9m m\u00e0 kh\u00f4ng b\u1ecb t\u1ef1 \u0111\u00f3ng modal hay t\u1ea3i l\u1ea1i trang; t\u1ef1 \u0111\u1ed9ng x\u00f3a tr\u1eafng \u00f4 link \u0111\u1ec3 d\u00e1n ngay link k\u1ebf ti\u1ebfp, gi\u1eef nguy\u00ean c\u00e1c danh m\u1ee5c \u0111\u00e3 ch\u1ecdn v\u00e0 t\u1ef1 \u0111\u1ed9ng \u0111\u01b0a con tr\u1ecf chu\u1ed9t v\u1ec1 \u00f4 nh\u1eadp link.<\/li>\n<li>Security(affiliate): B\u1ed5 sung c\u01a1 ch\u1ebf ph\u00e1t hi\u1ec7n v\u00e0 c\u1ea3nh b\u00e1o ngay khi ng\u01b0\u1eddi d\u00f9ng v\u00f4 t\u00ecnh d\u00e1n ho\u1eb7c nh\u1eadp l\u1ea1i link tr\u00f9ng \u0111\u00e3 \u0111\u0103ng (c\u1ea3 tr\u00ean phi\u00ean l\u00e0m vi\u1ec7c hi\u1ec7n t\u1ea1i v\u00e0 \u0111\u1ed1i so\u00e1t to\u00e0n di\u1ec7n trong c\u01a1 s\u1edf d\u1eef li\u1ec7u), ch\u1eb7n tuy\u1ec7t \u0111\u1ed1i t\u00ecnh tr\u1ea1ng t\u1ea1o b\u00e0i tr\u00f9ng l\u1eb7p.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Fix(affiliate): Kh\u1eafc ph\u1ee5c l\u1ed7i c\u00e0o th\u00f4ng tin s\u1ea3n ph\u1ea9m t\u1eeb link Shopee r\u00fat g\u1ecdn (s.shopee.vn, shope.ee, vn.shp.ee, shp.ee) v\u00e0 link Accesstrade (shorten.asia). Ng\u0103n ch\u1eb7n vi\u1ec7c redirect sang trang React SPA tr\u1ed1ng d\u1eef li\u1ec7u, b\u1ea3o l\u01b0u link r\u00fat g\u1ecdn \u0111\u1ec3 tr\u00edch xu\u1ea5t \u0111\u1ea7y \u0111\u1ee7 ti\u00eau \u0111\u1ec1 OpenGraph v\u00e0 \u1ea3nh ch\u1ea5t l\u01b0\u1ee3ng cao.<\/li>\n<li>UI\/UX(affiliate): N\u00e2ng z-index c\u1ee7a khung th\u00f4ng b\u00e1o n\u1ed5i (Toast Notification) l\u00ean tr\u00ean to\u00e0n b\u1ed9 c\u00e1c c\u1eeda s\u1ed5 pop-up (Modal Overlay), gi\u00fap ng\u01b0\u1eddi d\u00f9ng xem ngay th\u00f4ng b\u00e1o v\u00e0 k\u1ebft qu\u1ea3 th\u00eam s\u1ea3n ph\u1ea9m m\u00e0 kh\u00f4ng b\u1ecb che khu\u1ea5t \u0111\u1eb1ng sau modal.<\/li>\n<\/ul>\n\n<h4>1.3.9<\/h4>\n\n<ul>\n<li>Fix: T\u00e1ch bi\u1ec7t th\u00f4ng b\u00e1o c\u1eadp nh\u1eadt WordPress (Admin Notices) xu\u1ed1ng d\u01b0\u1edbi thanh ti\u00eau \u0111\u1ec1, tr\u00e1nh d\u00ednh v\u00e0o ti\u00eau \u0111\u1ec1 trang qu\u1ea3n tr\u1ecb.<\/li>\n<\/ul>\n\n<h4>1.3.8<\/h4>\n\n<ul>\n<li>Fix: C\u0103n ch\u1ec9nh ho\u00e0n h\u1ea3o icon n\u00fat qu\u00e9t d\u1ecdn s\u1ea3n ph\u1ea9m tr\u00f9ng l\u1eb7p trong trang qu\u1ea3n tr\u1ecb.<\/li>\n<\/ul>\n\n<h4>1.3.7<\/h4>\n\n<ul>\n<li>Feat(affiliate): Th\u00eam t\u00ednh n\u0103ng Tr\u1ed9n s\u1ea3n ph\u1ea9m \u0111\u1ecbnh k\u1ef3 (Shuffle Products): h\u1ed7 tr\u1ee3 x\u00e1o tr\u1ed9n th\u1ee9 t\u1ef1 s\u1ea3n ph\u1ea9m t\u1ef1 \u0111\u1ed9ng theo ng\u00e0y, theo tu\u1ea7n, theo th\u00e1ng ho\u1eb7c m\u1ed7i l\u1ea7n t\u1ea3i trang (lu\u00f4n ng\u1eabu nhi\u00ean). Gi\u00fap kh\u00e1ch h\u00e0ng quay l\u1ea1i lu\u00f4n c\u00f3 c\u1ea3m gi\u00e1c website \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt s\u1ea3n ph\u1ea9m m\u1edbi li\u00ean t\u1ee5c.<\/li>\n<li>Feat(affiliate): Khi T\u1eaft tr\u1ed9n (M\u1eb7c \u0111\u1ecbnh), to\u00e0n b\u1ed9 s\u1ea3n ph\u1ea9m m\u1edbi \u0111\u0103ng nh\u1ea5t lu\u00f4n \u0111\u01b0\u1ee3c \u01b0u ti\u00ean x\u1ebfp tr\u00ean c\u00f9ng theo chu\u1ea9n ng\u00e0y \u0111\u0103ng m\u1edbi nh\u1ea5t.<\/li>\n<li>Feat(affiliate): H\u1ed7 tr\u1ee3 tham s\u1ed1 shortcode linh ho\u1ea1t: [ez_affiliates shuffle=\"daily\"], [ez_affiliates shuffle=\"weekly\"], [ez_affiliates shuffle=\"monthly\"], [ez_affiliates shuffle=\"always\"] ho\u1eb7c [ez_affiliates shuffle=\"none\"].<\/li>\n<li>Feat(affiliate): Thu\u1eadt to\u00e1n x\u00e1o tr\u1ed9n Fisher-Yates d\u1ef1a tr\u00ean m\u00e3 seed ng\u00e0y\/tu\u1ea7n\/th\u00e1ng \u0111\u1ea3m b\u1ea3o \u0111\u1ed3ng b\u1ed9 ho\u00e0n h\u1ea3o gi\u1eefa trang \u0111\u1ea7u v\u00e0 t\u00ednh n\u0103ng cu\u1ed9n t\u1ea3i th\u00eam (Load More) kh\u00f4ng bao gi\u1edd b\u1ecb tr\u00f9ng l\u1eb7p s\u1ea3n ph\u1ea9m.<\/li>\n<\/ul>\n\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>Feat(affiliate): N\u00e2ng c\u1ea5p to\u00e0n di\u1ec7n c\u00f4ng c\u1ee5 Feed TikTok Shop sang chu\u1ea9n Accesstrade API V2: tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 t\u00ecm ki\u1ebfm phong ph\u00fa, \u0111\u1ea7y \u0111\u1ee7 h\u00e0ng tr\u0103m s\u1ea3n ph\u1ea9m t\u01b0\u01a1ng \u0111\u01b0\u01a1ng 100% giao di\u1ec7n ch\u00ednh th\u1ee9c c\u1ee7a Accesstrade.<\/li>\n<li>Feat(affiliate): B\u1ed5 sung b\u1ed9 \u0111i\u1ec1u h\u01b0\u1edbng ph\u00e2n trang m\u01b0\u1ee3t m\u00e0 (Trang tr\u01b0\u1edbc \/ Trang ti\u1ebfp theo) chu\u1ea9n phong c\u00e1ch Accesstrade, cho ph\u00e9p duy\u1ec7t h\u00e0ng tr\u0103m s\u1ea3n ph\u1ea9m li\u00ean t\u1ee5c theo trang m\u00e0 kh\u00f4ng c\u1ea7n g\u00f5 t\u1eeb kh\u00f3a qu\u00e9t l\u1ea1i t\u1eeb \u0111\u1ea7u.<\/li>\n<li>UI\/UX(affiliate): T\u1ed1i \u01b0u b\u1ea3ng danh s\u00e1ch b\u00e0i vi\u1ebft trong WordPress Admin: thu g\u1ecdn chi\u1ec1u r\u1ed9ng c\u1ed9t Click (75px) v\u00e0 canh gi\u1eefa s\u1ed1 li\u1ec7u g\u1ecdn g\u00e0ng, chuy\u00ean nghi\u1ec7p.<\/li>\n<li>UI\/UX(affiliate): L\u00e0m s\u1ea1ch giao di\u1ec7n t\u00ecm ki\u1ebfm Feed TikTok Shop, \u0111\u01b0a v\u1ec1 khung nh\u1eadp li\u1ec7u trung t\u00ednh t\u01b0\u01a1ng th\u00edch v\u1edbi m\u1ecdi lo\u1ea1i website (c\u00f4ng ngh\u1ec7, gia d\u1ee5ng, th\u1eddi trang...).<\/li>\n<li>Fix(affiliate): S\u1eeda l\u1ed7i hi\u1ec3n th\u1ecb l\u1eb7p l\u1ea1i icon danh m\u1ee5c trong c\u1eeda s\u1ed5 n\u1ea1p s\u1ea3n ph\u1ea9m.<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Feat(affiliate): N\u00e2ng c\u1ea5p \u0110\u0103ng Nhanh S\u1ea3n Ph\u1ea9m (Quick Add) h\u1ed7 tr\u1ee3 to\u00e0n di\u1ec7n link r\u00fat g\u1ecdn Accesstrade (shorten.asia) v\u00e0 TikTok Shop: t\u1ef1 \u0111\u1ed9ng gi\u1ea3i m\u00e3 \u0111a t\u1ea7ng redirect \/ meta-refresh \u0111\u1ec3 tr\u00edch xu\u1ea5t d\u1eef li\u1ec7u s\u1ea3n ph\u1ea9m, h\u00ecnh \u1ea3nh \u0111\u1ea1i di\u1ec7n, gi\u00e1 b\u00e1n v\u00e0 t\u1ea1o b\u00e0i vi\u1ebft t\u1ee9c th\u00ec.<\/li>\n<li>Feat(affiliate): T\u1ef1 \u0111\u1ed9ng b\u1ea3o l\u01b0u li\u00ean k\u1ebft affiliate c\u00e1 nh\u00e2n (shorten.asia) ho\u1eb7c chuy\u1ec3n \u0111\u1ed5i link g\u1ed1c TikTok Shop th\u00e0nh affiliate link th\u00f4ng qua Accesstrade API.<\/li>\n<li>Feat(affiliate): M\u1edf r\u1ed9ng c\u01a1 ch\u1ebf ch\u1ed1ng tr\u00f9ng l\u1eb7p theo TikTok Product ID v\u00e0 nh\u1eadn di\u1ec7n b\u0103m \u1ea3nh \u0111\u1ea1i di\u1ec7n trong lu\u1ed3ng \u0110\u0103ng Nhanh.<\/li>\n<li>Feat(affiliate): T\u00edch h\u1ee3p s\u1eb5n Accesstrade API Access Key m\u1eb7c \u0111\u1ecbnh cho h\u1ec7 th\u1ed1ng ezdigi.net v\u00e0 vahova.net.<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Feat(affiliate): Ra m\u1eaft C\u1eeda s\u1ed5 Ch\u1ecdn Danh M\u1ee5c N\u1ea1p \u0110a N\u0103ng (Multi-Category Selector Modal): khi b\u1ea5m N\u1ea1p t\u1eebng m\u00f3n ho\u1eb7c Nh\u1eadp h\u00e0ng lo\u1ea1t, h\u1ec7 th\u1ed1ng s\u1ebd m\u1edf pop-up tr\u1ef1c quan cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng t\u1ef1 do t\u00edch ch\u1ecdn c\u00f9ng l\u00fac m\u1ed9t ho\u1eb7c nhi\u1ec1u danh m\u1ee5c hi\u1ec3n th\u1ecb (v\u00ed d\u1ee5: v\u1eeba g\u00e1n v\u00e0o G\u1ee2I C\u1ea2M v\u1eeba g\u00e1n v\u00e0o COSPLAY).<\/li>\n<li>Feat(affiliate): Trang b\u1ecb Khi\u00ean Ch\u1ed1ng Tr\u00f9ng L\u1eb7p 5 L\u1edbp (5-Layer AI Shield) t\u00edch h\u1ee3p \u0111\u1ed9ng c\u01a1 b\u0103m \u1ea3nh \u0111\u1ea1i di\u1ec7n ch\u00ednh (Main Image Hash Deduplication Engine): t\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n v\u00e0 lo\u1ea1i b\u1ecf 100% c\u00e1c s\u1ea3n ph\u1ea9m b\u1ecb tr\u00f9ng h\u00ecnh \u0111\u1ea1i di\u1ec7n trong k\u1ebft qu\u1ea3 qu\u00e9t t\u00ecm ki\u1ebfm c\u0169ng nh\u01b0 \u0111\u1ed1i chi\u1ebfu ch\u1ed1ng tr\u00f9ng v\u1edbi to\u00e0n b\u1ed9 b\u00e0i vi\u1ebft \u0111\u00e3 c\u00f3 tr\u00ean website.<\/li>\n<li>Perf(affiliate): N\u00e2ng h\u1ea1n m\u1ee9c ph\u00e2n trang s\u00e2u l\u00ean \u0111\u1ebfn 6 trang (120 s\u1ea3n ph\u1ea9m) khi qu\u00e9t TikTok Shop \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o lu\u00f4n l\u1ea5p \u0111\u1ea7y \u0111\u1ee7 s\u1ed1 l\u01b0\u1ee3ng s\u1ea3n ph\u1ea9m \u0111\u1ed9c b\u1ea3n, kh\u00f4ng tr\u00f9ng l\u1eb7p theo y\u00eau c\u1ea7u.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Fix(affiliate): N\u00e2ng c\u1ea5p to\u00e0n di\u1ec7n c\u01a1 ch\u1ebf \u0111o l\u01b0\u1ee3t click (Click Tracking Engine): h\u1ed7 tr\u1ee3 \u0111o ch\u00ednh x\u00e1c 100% khi ng\u01b0\u1eddi d\u00f9ng click v\u00e0o \u1ea3nh \u0111\u1ea1i di\u1ec7n, ti\u00eau \u0111\u1ec1 s\u1ea3n ph\u1ea9m ho\u1eb7c to\u00e0n b\u1ed9 th\u1ebb card (\u0111\u1eb7c bi\u1ec7t khi \u0111ang b\u1eadt ch\u1ebf \u0111\u1ed9 \u1ea9n n\u00fat Xem ngay).<\/li>\n<li>Perf(affiliate): S\u1eed d\u1ee5ng fetch keepalive v\u1edbi chu\u1ea9n application\/x-www-form-urlencoded gi\u00fap s\u1ef1 ki\u1ec7n click ghi nh\u1eadn t\u1ee9c th\u00ec v\u00e0o database m\u00e0 kh\u00f4ng ph\u1ee5 thu\u1ed9c v\u00e0o chu k\u1ef3 t\u1ea3i trang.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fix(affiliate): Kh\u1eafc ph\u1ee5c l\u1ed7i cURL error 28 timeout khi g\u1ecdi Accesstrade API b\u1eb1ng b\u1ed9 k\u1ebft n\u1ed1i th\u00f4ng minh (Resilient API Client): t\u1ef1 \u0111\u1ed9ng \u00e9p ph\u00e2n gi\u1ea3i IPv4 (ch\u1ed1ng ngh\u1ebdn \u0111\u1ecbnh tuy\u1ebfn xuy\u00ean bi\u1ec3n US-VN), t\u0103ng th\u1eddi gian ch\u1edd l\u00ean 40s v\u00e0 t\u1ef1 \u0111\u1ed9ng retry khi g\u1eb7p bi\u1ebfn \u0111\u1ed9ng m\u1ea1ng.<\/li>\n<li>Perf(affiliate): T\u1ed1i \u01b0u h\u00f3a chu k\u1ef3 qu\u00e9t ph\u00e2n trang (Smart Early Break), t\u1ef1 \u0111\u1ed9ng ng\u1eaft k\u1ebft n\u1ed1i ngay khi \u0111\u00e3 n\u1ea1p \u0111\u1ee7 s\u1ed1 l\u01b0\u1ee3ng s\u1ea3n ph\u1ea9m h\u1ee3p l\u1ec7, gi\u1ea3m 70% s\u1ed1 l\u01b0\u1ee3ng request th\u1eeba.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>UI(affiliate): Chu\u1ea9n h\u00f3a c\u0103n gi\u1eefa d\u1ecdc tuy\u1ec7t \u0111\u1ed1i (100% perfect vertical centering) cho to\u00e0n b\u1ed9 c\u00e1c \u00f4 nh\u1eadp li\u1ec7u, dropdown ch\u1ecdn danh m\u1ee5c v\u00e0 menu l\u1ef1a ch\u1ecdn tr\u00ean trang Feed TikTok Shop.<\/li>\n<li>UI(affiliate): Thi\u1ebft k\u1ebf l\u1ea1i icon m\u0169i t\u00ean dropdown SVG hi\u1ec7n \u0111\u1ea1i, c\u0103n gi\u1eefa \u0111\u1ed3ng b\u1ed9 v\u00e0 t\u0103ng c\u01b0\u1eddng kh\u1ea3 n\u0103ng t\u01b0\u01a1ng th\u00edch hi\u1ec3n th\u1ecb tr\u00ean macOS, Chrome v\u00e0 Safari.<\/li>\n<\/ul>\n\n<h4>1.2.9<\/h4>\n\n<ul>\n<li>Fix(affiliate): Kh\u1eafc ph\u1ee5c l\u1ed7i c\u00fa ph\u00e1p scope JavaScript trong admin-affiliater.js khi\u1ebfn n\u00fat Qu\u00e9t TikTok Shop v\u00e0 c\u00e1c n\u00fat t\u01b0\u01a1ng t\u00e1c h\u00e0ng lo\u1ea1t tr\u00ean trang Feed kh\u00f4ng nh\u1eadn s\u1ef1 ki\u1ec7n click.<\/li>\n<li>UI(affiliate): B\u1ecf bi\u1ec3u t\u01b0\u1ee3ng ng\u1ecdn l\u1eeda \u1edf ti\u00eau \u0111\u1ec1 menu con Feed TikTok Shop.<\/li>\n<\/ul>\n\n<h4>1.2.8<\/h4>\n\n<ul>\n<li>Fix(affiliate): T\u1ed1i \u01b0u h\u00f3a b\u1ed9 ph\u00e2n t\u00edch t\u1eeb kh\u00f3a t\u00ecm ki\u1ebfm (Smart Keyword Normalizer) cho Accesstrade TikTok Shop API; x\u1eed l\u00fd tri\u1ec7t \u0111\u1ec3 t\u00ecnh tr\u1ea1ng t\u1eeb kh\u00f3a gh\u00e9p (nh\u01b0 \"\u0111\u1ed3 l\u00f3t sexy\") b\u1ecb thu\u1eadt to\u00e1n Accesstrade t\u00e1ch th\u00e0nh t\u1eeb r\u00e1c \"\u0111\u1ed3\" v\u00e0 \"l\u00f3t\" khi\u1ebfn k\u1ebft qu\u1ea3 t\u00ecm ki\u1ebfm th\u1ee7 c\u00f4ng b\u1ecb tr\u1ed1ng.<\/li>\n<li>Feat(affiliate): N\u00e2ng c\u1ea5p c\u01a1 ch\u1ebf qu\u00e9t nhi\u1ec1u trang t\u1ef1 \u0111\u1ed9ng (Auto Multi-Page Scanning) l\u00ean \u0111\u1ebfn 4 trang (80 s\u1ea3n ph\u1ea9m) \u0111\u1ec3 lu\u00f4n \u0111\u1ea3m b\u1ea3o \u0111\u1ee7 s\u1ed1 l\u01b0\u1ee3ng s\u1ea3n ph\u1ea9m chu\u1ea9n y\u00eau c\u1ea7u c\u1ea3 \u1edf ch\u1ebf \u0111\u1ed9 B\u00e1n ch\u1ea1y nh\u1ea5t v\u00e0 Hoa h\u1ed3ng cao nh\u1ea5t.<\/li>\n<li>Fix(affiliate): T\u1ef1 \u0111\u1ed9ng lo\u1ea1i b\u1ecf c\u00e1c s\u1ea3n ph\u1ea9m r\u00e1c b\u1eb1ng ti\u1ebfng n\u01b0\u1edbc ngo\u00e0i (ti\u1ebfng T\u00e2y Ban Nha c\u1ee7a dropshipper xuy\u00ean bi\u00ean gi\u1edbi).<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Feat(affiliate): B\u1ed5 sung c\u1ed9t ph\u00e2n lo\u1ea1i ngu\u1ed3n s\u00e0n \"\ud83d\udecd\ufe0f Ngu\u1ed3n\" (TikTok Shop, Shopee, Lazada, Tiki, Kh\u00e1c) v\u1edbi badge m\u00e0u s\u1eafc chuy\u00ean nghi\u1ec7p, tr\u1ef1c quan v\u00e0 li\u00ean k\u1ebft tr\u1ef1c ti\u1ebfp \u0111\u1ebfn trang s\u1ea3n ph\u1ea9m g\u1ed1c tr\u00ean t\u1eebng s\u00e0n.<\/li>\n<li>Feat(affiliate): B\u1ed5 sung b\u1ed9 l\u1ecdc dropdown theo Ngu\u1ed3n S\u00e0n (T\u1ea5t c\u1ea3 ngu\u1ed3n, TikTok Shop, Shopee, Lazada, Tiki, Kh\u00e1c) gi\u00fap l\u1ecdc nhanh danh s\u00e1ch s\u1ea3n ph\u1ea9m theo t\u1eebng s\u00e0n affiliate.<\/li>\n<li>Feat(affiliate): H\u1ed7 tr\u1ee3 s\u1eafp x\u1ebfp c\u1ed9t theo Ngu\u1ed3n S\u00e0n tr\u1ef1c ti\u1ebfp tr\u00ean b\u1ea3ng s\u1ea3n ph\u1ea9m admin.<\/li>\n<li>Feat(affiliate): N\u00e2ng c\u1ea5p thanh c\u00f4ng c\u1ee5 \"Th\u00eam nhanh\" tr\u00ean \u0111\u1ea7u b\u1ea3ng h\u1ed7 tr\u1ee3 link TikTok Shop song song c\u00f9ng Shopee v\u00e0 Lazada.<\/li>\n<li>Feat(affiliate): T\u1ef1 \u0111\u1ed9ng \u0111\u1ed3ng b\u1ed9 v\u00e0 l\u01b0u tr\u1eef metadata <code>_ez_aff_source_platform<\/code> cho to\u00e0n b\u1ed9 danh m\u1ee5c s\u1ea3n ph\u1ea9m hi\u1ec7n c\u00f3 v\u00e0 s\u1ea3n ph\u1ea9m m\u1edbi th\u00eam.<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Fix(affiliate): Kh\u1eafc ph\u1ee5c tri\u1ec7t \u0111\u1ec3 l\u1ed7i \u0111\u1ecbnh d\u1ea1ng gi\u00e1 ti\u1ec1n d\u00ednh li\u1ec1n khi\u1ebfn kho\u1ea3ng gi\u00e1 hi\u1ec3n th\u1ecb th\u00e0nh h\u00e0ng tr\u0103m t\u1ef7 (vd 30.000.200.000 \u0111 -&gt; 30.000 \u20ab - 200.000 \u20ab).<\/li>\n<li>Feat(affiliate): T\u00edch h\u1ee3p B\u1ed9 L\u1ecdc Nghi\u00eam Ng\u1eb7t \u0110\u1ed3 L\u00f3t &amp; V\u00e1y Ng\u1ee7 Sexy (Strict Sexy Filter) b\u1eaft bu\u1ed9c kh\u1edbp t\u1eeb kh\u00f3a g\u1ee3i c\u1ea3m\/quy\u1ebfn r\u0169\/xuy\u00ean th\u1ea5u v\u00e0 t\u1ef1 \u0111\u1ed9ng lo\u1ea1i b\u1ecf 100% \u0111\u1ed3 nam, \u0111\u1ed3 l\u00f3t th\u01b0\u1eddng ng\u00e0y, \u00e1o thun, croptop, n\u01b0\u1edbc hoa, \u0111\u1ed3 \u0103n v\u1eb7t.<\/li>\n<li>Feat(affiliate): B\u1ed5 sung c\u01a1 ch\u1ebf ph\u00e2n trang t\u1ef1 \u0111\u1ed9ng (multi-page batching) cho TikTok Shop feeds \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o \u0111\u1ee7 s\u1ed1 l\u01b0\u1ee3ng s\u1ea3n ph\u1ea9m chu\u1ea9n y\u00eau c\u1ea7u.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Feat(affiliate): Ra m\u1eaft t\u00ednh n\u0103ng Auto-Feed Cron \u0111\u1ecbnh k\u1ef3 t\u1ef1 \u0111\u1ed9ng h\u00f3a qu\u00e9t s\u1ea3n ph\u1ea9m TikTok Shop theo t\u1eeb kh\u00f3a (m\u1eb7c \u0111\u1ecbnh \u0111\u1ed3 l\u00f3t sexy) qua Accesstrade API.<\/li>\n<li>Feat(affiliate): T\u00edch h\u1ee3p Khi\u00ean Ch\u1ed1ng Tr\u00f9ng L\u1eb7p 4 L\u1edbp (AI Shield) ng\u0103n ch\u1eb7n 100% vi\u1ec7c nh\u1eadp tr\u00f9ng l\u1eb7p: \u0111\u1ed1i chi\u1ebfu TikTok ID, Source URL\/Pattern, Exact Title, v\u00e0 Smart Fuzzy Normalized Similarity &gt;= 85%.<\/li>\n<li>Feat(affiliate): B\u1ed5 sung console log tr\u1ef1c ti\u1ebfp v\u00e0 n\u00fat k\u00edch ho\u1ea1t ch\u1ea1y ngay l\u1eadp t\u1ee9c trong b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n admin.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Feat(affiliate): T\u00edch h\u1ee3p t\u00ednh n\u0103ng t\u1ef1 \u0111\u1ed9ng Feed s\u1ea3n ph\u1ea9m TikTok Shop qua Accesstrade API v2.<\/li>\n<li>Feat(affiliate): H\u1ed7 tr\u1ee3 qu\u00e9t s\u1ea3n ph\u1ea9m theo t\u1eeb kh\u00f3a, s\u1eafp x\u1ebfp b\u00e1n ch\u1ea1y nh\u1ea5t, hoa h\u1ed3ng cao v\u00e0 t\u1ef1 sinh link shorten.asia.<\/li>\n<li>Feat(affiliate): B\u1ed5 sung giao di\u1ec7n Feed TikTok Shop h\u00e0ng lo\u1ea1t v\u00e0 t\u00ecm ki\u1ebfm tr\u1ef1c ti\u1ebfp trong metabox b\u00e0i vi\u1ebft.<\/li>\n<\/ul>\n\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Added product price display toggle (with automatic price extraction from Shopee\/Lazada and manual price entry).<\/li>\n<li>Added toggle to show\/hide \"Xem ngay\" button (when hidden, clicking product image or title opens the affiliate link directly).<\/li>\n<li>Added flexible grid layout setting (3 or 4 columns) to allow larger product image presentation.<\/li>\n<li>Maintained independent layout for short video reviews without interference.<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Fixed Admin Bar \"\u0110\u0103ng nhanh\" shortcut link and modal activation across all frontend and admin pages.<\/li>\n<li>Added delegated event listeners, fallback inline display styling, and Escape key closing for Quick Add and YouTube Finder modals.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Expanded video card product title to 2 lines and styled 'Xem ngay' button to full-width centered layout.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added 'Xem ngay' call-to-action button under product title in video review cards.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Fixed short video attached product styling: strict 1:1 left-crop for Shopee promotional images, hiding external promo banner overlays and displaying clean product title side-by-side.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Redesigned infinite scroll load-more indicator with a sleek, centered pill-shaped design, smooth rotating spinner, and full-width layout.<\/li>\n<li>Enhanced scroll intersection threshold for seamless automatic product loading on scroll.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Added frontend tab deep-linking and URL synchronization for advertising campaigns (supports query parameters e.g. <code>?can-ran-khong-mua<\/code>, <code>?gear-cua-minh<\/code>, <code>?sp-da-review<\/code>, <code>?video-ngan<\/code>, as well as URL hashes).<\/li>\n<li>Added automatic smooth scrolling and seamless integration with Elementor Nested Tabs and native EZ tab widgets.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Restored seamless backward compatibility for legacy shortcodes ([ez_affiliates], [ez_video_reviews], [ez_streaming], [ez_youtube_counter], [ez_message_box], [ez_portfolio_demo], [ez_voucher_portal]).<\/li>\n<li>Added transparent content and widget filters to ensure all legacy page builder elements continue rendering properly.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Resolved PHP syntax error in Crawler module.<\/li>\n<li>Unified all function names, classes, defines, nonces, shortcodes, and options under unique <code>ezdigi_tool_<\/code> \/ <code>ezdigi_<\/code> prefix.<\/li>\n<li>Fixed drag-and-drop schedule planner script parameter references.<\/li>\n<li>Cleaned up legacy settings group registrations and obsolete shortcode fallbacks.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Removed remote asset dependencies and sideloaded external media locally via WordPress Core media APIs.<\/li>\n<li>Replaced all short and generic prefixes (&lt; 4 characters) across all functions, hooks, nonces, CPTs, and options with unique prefixes.<\/li>\n<li>Enforced strict late escaping on all dynamic outputs (absint, esc_html, esc_attr, esc_url, wp_kses_post).<\/li>\n<li>Fully documented all 10 third-party external services and APIs in readme.txt.<\/li>\n<li>Maintained full backward compatibility for existing installations.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Converted all inline scripts and styles to standard WordPress enqueues (<code>wp_enqueue_script<\/code>, <code>wp_enqueue_style<\/code>, <code>wp_localize_script<\/code>).<\/li>\n<li>Strict late-escaping applied to all echoed variables, attributes, options, and HTML output (<code>esc_html<\/code>, <code>esc_attr<\/code>, <code>esc_url<\/code>, <code>wp_kses_post<\/code>, <code>absint<\/code>).<\/li>\n<li>Prevented arbitrary HTML\/script injection in Crawler find-and-replace rules and applied post content sanitization.<\/li>\n<li>Localized admin icon assets to remove remote asset dependencies.<\/li>\n<li>Upgraded prefixing across all functions, hooks, constants, options, transients, and CPTs to unique prefixes (&gt;= 4 chars).<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Enhanced security capability checks across all admin submenus (<code>manage_options<\/code> &amp; <code>delete_users<\/code>).<\/li>\n<li>Removed external HTML proxy relay in Extra Demo module to comply with WordPress.org guidelines.<\/li>\n<li>Fixed raw password preservation in EZ SMTP settings sanitization callback.<\/li>\n<li>Added nonce protection for employee deletion in EZ Voucher.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Security enhancements, Anti-spam Rate Limiting, and User Enumeration protection.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial official release for WordPress.org directory submission.<\/li>\n<\/ul>","raw_excerpt":"All-in-one management toolkit for WordPress: site security, bot blocker, crawler, image optimizer, variation fixer, affiliate manager, live streaming  \u2026","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/349878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=349878"}],"author":[{"embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hitz2330"}],"wp:attachment":[{"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=349878"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=349878"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=349878"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=349878"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=349878"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=349878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}