{"id":274427,"date":"2026-01-13T21:12:28","date_gmt":"2026-01-13T21:12:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/store-manager-tools\/"},"modified":"2026-03-28T17:22:44","modified_gmt":"2026-03-28T17:22:44","slug":"smt-toolkit","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/smt-toolkit\/","author":14521254,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.0","stable_tag":"trunk","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"SMT Toolkit for WooCommerce","header_author":"limchik","header_description":"Modular toolkit for store automation: imports, discounts, transliteration and cron-based workflows.","assets_banners_color":"545a6b","last_updated":"2026-03-28 17:22:44","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ko-fi.com\/J3J41RU9NJ","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":247,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":[],"upgrade_notice":{"1.1.0":"<p>New Role-Based Pricing module. Internal data layer and caching rewritten for better performance. Several bug fixes \u2014 upgrade recommended.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3439002,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3439002,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3439002,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3439002,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3439002,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3439002,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3439002,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3439002,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3439002,"resolution":"5","location":"assets","locale":""}},"screenshots":{"1":"Modules management screen","2":"Google Drive Importer profiles","3":"Import progress and logs","4":"Discount profiles and rules","5":"Transliteration tools"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[21157,6744,17785,146114,286],"plugin_category":[45],"plugin_contributors":[253936],"plugin_business_model":[],"class_list":["post-274427","plugin","type-plugin","status-publish","hentry","plugin_tags-csv-import","plugin_tags-discounts","plugin_tags-google-drive","plugin_tags-role-pricing","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-limchik","plugin_committers-limchik"],"banners":{"banner":"https:\/\/ps.w.org\/smt-toolkit\/assets\/banner-772x250.png?rev=3439002","banner_2x":"https:\/\/ps.w.org\/smt-toolkit\/assets\/banner-1544x500.png?rev=3439002","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smt-toolkit\/assets\/icon-128x128.png?rev=3439002","icon_2x":"https:\/\/ps.w.org\/smt-toolkit\/assets\/icon-256x256.png?rev=3439002","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/smt-toolkit\/assets\/screenshot-1.png?rev=3439002","caption":"Modules management screen"},{"src":"https:\/\/ps.w.org\/smt-toolkit\/assets\/screenshot-2.png?rev=3439002","caption":"Google Drive Importer profiles"},{"src":"https:\/\/ps.w.org\/smt-toolkit\/assets\/screenshot-3.png?rev=3439002","caption":"Import progress and logs"},{"src":"https:\/\/ps.w.org\/smt-toolkit\/assets\/screenshot-4.png?rev=3439002","caption":"Discount profiles and rules"},{"src":"https:\/\/ps.w.org\/smt-toolkit\/assets\/screenshot-5.png?rev=3439002","caption":"Transliteration tools"}],"raw_content":"<!--section=description-->\n<p><strong>SMT Toolkit for WooCommerce<\/strong> is a modular automation and management toolkit designed for WooCommerce-based stores.<\/p>\n\n<p>The plugin provides a collection of independent modules that can be enabled or disabled as needed, allowing store owners to build flexible workflows without unnecessary features or performance overhead.<\/p>\n\n<p>SMT Toolkit focuses on automation, data consistency, and repeatable processes \u2014 especially for stores that rely on bulk imports, scheduled updates, and advanced pricing logic.<\/p>\n\n<h3>Available Modules<\/h3>\n\n<h4>Google Drive Importer<\/h4>\n\n<p>Import products, images, and updates directly from Google Drive using CSV files.<\/p>\n\n<p>Features:\n- Import products and images from Google Drive folders\n- Batch processing with progress tracking\n- Detailed logs and safety checks\n- Update rules for existing products\n- Optional cron-based automation<\/p>\n\n<p><strong>Setup note:<\/strong>\nTo use this module, you must create a Google API project and obtain OAuth credentials.<\/p>\n\n<p>Official documentation:\nhttps:\/\/developers.google.com\/drive\/api\/guides\/enable-drive-api<\/p>\n\n<p><strong>Automation:<\/strong>\nFor scheduled or unattended imports, a WordPress cron task is required.<\/p>\n\n\n\n<h4>CSV File Structure<\/h4>\n\n<p>The importer uses CSV files to create or update products.<\/p>\n\n<p><strong>Required fields:<\/strong>\n- <code>id<\/code> <strong>or<\/strong> <code>sku<\/code> (at least one is required)<\/p>\n\n<p><strong>Optional fields:<\/strong>\n- <code>type<\/code>\n- <code>barcode<\/code>\n- <code>short_description<\/code>\n- <code>description<\/code>\n- <code>sale_start<\/code>\n- <code>sale_end<\/code>\n- <code>in_stock<\/code>\n- <code>price<\/code>\n- <code>sale_price<\/code>\n- <code>categories<\/code>\n- <code>tags<\/code>\n- custom meta fields (any column name will be treated as a meta key)\n- <code>image<\/code>\n- <code>alt_text<\/code>\nCustom meta fields are stored as product meta keys without overwriting protected WooCommerce core fields.<\/p>\n\n<p>The CSV structure is flexible. Only the required identifier field must be present.\nAll other fields are optional and processed only if provided.<\/p>\n\n\n\n<h4>Discount Engine<\/h4>\n\n<p>Create flexible discount profiles with conditions, priorities, schedules, and visual indicators.<\/p>\n\n<p>Features:\n- Rule-based discount profiles\n- Support for scheduled discounts\n- Priority handling and conflict resolution\n- Customizable discount badges\n- Cron-based recalculation support<\/p>\n\n<p><strong>Automation:<\/strong>\nA cron task is required to automatically apply, update, or expire scheduled discounts.<\/p>\n\n<p><strong>Theme compatibility note:<\/strong>\nTo replace the default sale badge, the theme must include a <code>span.onsale<\/code> element (the wrapper does not matter, but the <code>onsale<\/code> class must be present).<\/p>\n\n\n\n<h4>Transliteration<\/h4>\n\n<p>Automatically transliterate non-Latin product URLs and filenames.<\/p>\n\n<p>Features:\n- URL and filename transliteration\n- Custom rule editor\n- Testing and preview tools\n- Bulk conversion and rollback support<\/p>\n\n<p><strong>Language support:<\/strong>\nPredefined rules are included for:\n- Ukrainian\n- Russian\n- Bulgarian<\/p>\n\n<p>For other languages, custom transliteration rules can be added manually.<\/p>\n\n<p>This module does not require cron configuration.<\/p>\n\n\n\n<h4>Store Settings<\/h4>\n\n<p>The Store Settings module centralizes WooCommerce configuration in one place \u2014 no need to edit theme files or functions.php.<\/p>\n\n<p>It allows you to safely manage store behavior, performance tweaks, product badges, and Classic checkout fields through a clean admin interface.<\/p>\n\n<p><strong>Key Features<\/strong>\n- Disable unused frontend scripts and styles\n- Add context-based inline CSS and JavaScript\n- Clean up unnecessary WordPress and WooCommerce head output\n- Configure product badges (Sale, New, Sold Out, Featured, Best Seller)\n- Customize Classic WooCommerce checkout fields\n- Define custom product fields with tab display support<\/p>\n\n<p>Checkout customization works with Classic WooCommerce checkout (shortcode).\nBlocks checkout is automatically detected.<\/p>\n\n\n\n<h4>Ajax Archive Engine<\/h4>\n\n<p>AJAX-powered WooCommerce archive system with:\n- AJAX pagination\n- AJAX sorting\n- Lazy-loaded filters sidebar\n- Clean URL handling\n- History (back\/forward) state support\n- Mobile-first optimized behavior<\/p>\n\n\n\n<h4>Centralized SVG Registry<\/h4>\n\n<p>Secure SVG management module:\n- Centralized SVG storage\n- Sanitized SVG processing\n- Automatic CSS generation\n- Base64 background rendering\n- Hash-based file versioning\n- Automatic cleanup of old files\n- Security-hardened SVG sanitizer<\/p>\n\n\n\n<h4>Role-Based Pricing<\/h4>\n\n<p>Assign custom prices or percentage discounts based on the customer's WordPress user role.<\/p>\n\n<p>Features:\n- Per-role price overrides (fixed price or percentage discount)\n- Works with simple and variable products\n- Role-specific prices visible only to the matching role\n- Per-product manual price override via product edit screen\n- Fully integrated with WooCommerce cart and checkout totals\n- Compatible with WooCommerce price display hooks<\/p>\n\n<p><strong>Setup note:<\/strong>\nRole configurations are managed globally from the plugin settings.\nPer-product price overrides are set directly on each product's edit screen.<\/p>\n\n\n\n<h3>Modular Architecture<\/h3>\n\n<p>Each module operates independently and can be enabled or disabled at any time.\nThis allows you to use only the functionality you need while keeping the system lightweight and predictable.<\/p>\n\n<h3>Planned Modules<\/h3>\n\n<p>The following modules are planned for future releases:\n- BOGO (Buy One Get One) pricing rules\n- Quick View for WooCommerce products<\/p>\n\n<p>These modules will follow the same modular design and automation principles.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to external services to provide its functionality.<\/p>\n\n<h4>Google Drive API<\/h4>\n\n<p>The Google Drive Importer module connects to the Google Drive API to allow users to import files and images from their own Google Drive accounts into WooCommerce.<\/p>\n\n<p>What data is sent:\n- Google Drive file IDs\n- OAuth access tokens provided by the user<\/p>\n\n<p>When data is sent:\n- Only when the user explicitly initiates an import action from the plugin interface<\/p>\n\n<p>Why data is sent:\n- To retrieve selected files and images from the user's Google Drive account<\/p>\n\n<p>Service provider:\n- Google LLC<\/p>\n\n<p>Terms of Service:\nhttps:\/\/policies.google.com\/terms<\/p>\n\n<p>Privacy Policy:\nhttps:\/\/policies.google.com\/privacy<\/p>\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. All features are fully available without restrictions. If you find it useful and want to support further development, you can do so via the donation link.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20unused%20modules%3F\"><h3>Can I disable unused modules?<\/h3><\/dt>\n<dd><p>Yes. Each module can be enabled or disabled independently.<\/p><\/dd>\n<dt id=\"does%20it%20work%20only%20with%20woocommerce%3F\"><h3>Does it work only with WooCommerce?<\/h3><\/dt>\n<dd><p>Currently optimized for WooCommerce stores, but the architecture allows future expansion.<\/p><\/dd>\n<dt id=\"is%20it%20safe%20to%20run%20imports%20automatically%3F\"><h3>Is it safe to run imports automatically?<\/h3><\/dt>\n<dd><p>Yes. Imports use batch processing, logging, and safety checks.<\/p><\/dd>\n<dt id=\"where%20can%20i%20find%20google%20api%20setup%20instructions%3F\"><h3>Where can I find Google API setup instructions?<\/h3><\/dt>\n<dd><p>Official Google Drive API documentation is available at:\nhttps:\/\/developers.google.com\/drive\/api\/guides\/enable-drive-api<\/p><\/dd>\n<dt id=\"do%20i%20need%20cron%20to%20use%20this%20plugin%3F\"><h3>Do I need cron to use this plugin?<\/h3><\/dt>\n<dd><p>Cron is required only for automated imports and scheduled discounts.\nManual operations work without cron.<\/p><\/dd>\n<dt id=\"does%20role-based%20pricing%20work%20with%20variable%20products%3F\"><h3>Does Role-Based Pricing work with variable products?<\/h3><\/dt>\n<dd><p>Yes. Role-based prices apply to both simple and variable products. Per-product manual overrides are also supported on the product edit screen.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>NEW: Role-Based Pricing module (per-role fixed price or percentage discount, per-product overrides)<\/li>\n<li>NEW: Unified data layer \u2014 SMT_Data_Provider centralizes all option reads and writes<\/li>\n<li>NEW: SMT_Cache \u2014 three-tier caching (in-memory, WP object cache, transients) with a unified API<\/li>\n<li>IMPROVED: Lazy module initialization \u2014 Admin\/Frontend\/Ajax classes load only in the context where they are needed<\/li>\n<li>IMPROVED: Active discount profiles query cached per request (reduces DB load during cron runs)<\/li>\n<li>IMPROVED: Inline context detection cached per request (was computed three times per page)<\/li>\n<li>FIX: Discount badge always fell back to woocommerce_sale_flash due to incorrect module status check<\/li>\n<li>FIX: get_profile() and get_rules_for_profile() now use the table name helpers consistently<\/li>\n<li>FIX: Admin page classes were not loaded when render_admin() was called after lazy init<\/li>\n<li>FIX: Transient cleanup in uninstall.php now uses wpdb::prepare()<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>NEW: Ajax Archive Engine module<\/li>\n<li>NEW: Centralized SVG Registry module<\/li>\n<li>NEW: SVG background support for Discounts and Store Settings badges<\/li>\n<li>IMPROVED: Badge rendering performance<\/li>\n<li>IMPROVED: Centralized SVG CSS compilation system<\/li>\n<li>IMPROVED: 10% faster initial page load (SVG optimization)<\/li>\n<li>SECURITY: Improved JSON input sanitization<\/li>\n<li>FIX: Nonce verification improvements<\/li>\n<li>FIX: Plugin Check warnings resolved<\/li>\n<li>REMOVED: inline SVG<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed missing store-settings module in release package<\/li>\n<li>Minor stability improvements<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed undefined variable in Discounts cron handler<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added Store Settings module (assets control, cleanup, inline CSS\/JS, checkout fields)<\/li>\n<li>Checkout customization refactored (Classic checkout only, Block checkout detection added)<\/li>\n<li>Fixed WooCommerce checkout field re-rendering (wc-checkout handling)<\/li>\n<li>Improved checkout field diff-based saving (no translation overwrite)<\/li>\n<li>Added reset option for checkout fields<\/li>\n<li>Enhanced badge system (heavy SVG handling, template injection, mutation observer)<\/li>\n<li>Optimized best-seller query with transient caching<\/li>\n<li>Improved security sanitization (wp_unslash handling, SVG hardening)<\/li>\n<li>Added advanced cleanup options (WooCommerce blocks, cart fragments, brands)<\/li>\n<li>Performance improvements and codebase stabilization<\/li>\n<li>Multiple security and Plugin Check compliance fixes<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>Google Drive Importer module<\/li>\n<li>Discount Engine module<\/li>\n<li>Transliteration module<\/li>\n<li>Modular system and cron support<\/li>\n<\/ul>","raw_excerpt":"Lightweight modular toolkit for WooCommerce: Ajax filters, discount engine, SVG registry, role-based pricing and performance tools.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/274427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=274427"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/limchik"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=274427"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=274427"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=274427"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=274427"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=274427"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=274427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}