{"id":332348,"date":"2026-07-11T10:54:46","date_gmt":"2026-07-11T10:54:46","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/prom-xml-importer\/"},"modified":"2026-10-17T21:40:49","modified_gmt":"2026-10-17T21:40:49","slug":"factorial2000-catalog-sync","status":"publish","type":"plugin","link":"https:\/\/ory.wordpress.org\/plugins\/factorial2000-catalog-sync\/","author":23523522,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.7.0","stable_tag":"0.7.0","tested":"7.0.7","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Factorial2000 Catalog Sync for Prom.ua","header_author":"KMax (Maxim Kliakhin)","header_description":"\u041f\u043b\u0430\u0433\u0456\u043d \u0434\u043b\u044f \u0456\u043c\u043f\u043e\u0440\u0442\u0443 XML \u0434\u0430\u043d\u0438\u0445 \u0442\u0430 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0437\u0430\u043f\u0430\u0441\u0456\u0432 \u0456\u0437 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0438 Prom.ua.","assets_banners_color":"c6c9db","last_updated":"2026-10-17 21:40:49","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/send.monobank.ua\/jar\/8CiFBAfJKK","header_plugin_uri":"","header_author_uri":"https:\/\/github.com\/maximus2526","rating":5,"author_block_rating":0,"active_installs":0,"downloads":877,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3":{"tag":"0.3","author":"factorial2000","date":"2026-07-11 10:54:34","revision":3603850},"0.4":{"tag":"0.4","author":"factorial2000","date":"2026-07-30 17:57:15","revision":3628995},"0.6.12":{"tag":"0.6.12","author":"factorial2000","date":"2026-08-30 18:34:38","revision":3673003},"0.6.14":{"tag":"0.6.14","author":"factorial2000","date":"2026-10-05 18:55:08","revision":3729521},"0.6.5":{"tag":"0.6.5","author":"factorial2000","date":"2026-08-08 12:06:57","revision":3638684},"0.6.6":{"tag":"0.6.6","author":"factorial2000","date":"2026-08-13 18:09:49","revision":3645982},"0.6.7":{"tag":"0.6.7","author":"factorial2000","date":"2026-08-13 18:59:01","revision":3646044},"0.6.8":{"tag":"0.6.8","author":"factorial2000","date":"2026-08-13 19:10:13","revision":3646065},"0.6.9":{"tag":"0.6.9","author":"factorial2000","date":"2026-08-18 17:47:45","revision":3653341},"0.7.0":{"tag":"0.7.0","author":"factorial2000","date":"2026-10-17 21:40:49","revision":3752382}},"upgrade_notice":{"0.7.0":"<p>Pro features moved to a separate Pro build. If you use a Pro license, stock quantity updates or the marketplace feed, install the Pro version from your Freemius account before updating. Price adjustment now works in the Free version too.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3752091,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3752091,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3752091,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3752091,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3","0.4","0.6.12","0.6.14","0.6.5","0.6.6","0.6.7","0.6.8","0.6.9","0.7.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3752091,"resolution":"1","location":"assets","locale":"","width":3200,"height":2600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3752091,"resolution":"2","location":"assets","locale":"","width":3200,"height":2900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3752091,"resolution":"3","location":"assets","locale":"","width":3200,"height":2000},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3752091,"resolution":"4","location":"assets","locale":"","width":3200,"height":2200}},"screenshots":{"1":"Stock update settings: supplier XML URLs, SKU prefix, price adjustment, cron interval and Telegram notifications.","2":"XML import page with simple and variable product modes and image handling options.","3":"Marketplaces (Pro): the Prom.ua feed at a permanent link, rebuilt on a schedule or after every stock sync.","4":"Built-in documentation with sticky sidebar navigation."}},"plugin_section":[],"plugin_tags":[8379,257937,171167,286,5098],"plugin_category":[45,59],"plugin_contributors":[271049],"plugin_business_model":[],"class_list":["post-332348","plugin","type-plugin","status-publish","hentry","plugin_tags-marketplace","plugin_tags-prom-ua","plugin_tags-stock-sync","plugin_tags-woocommerce","plugin_tags-xml-import","plugin_category-ecommerce","plugin_category-utilities-and-tools","plugin_contributors-factorial2000","plugin_committers-factorial2000"],"banners":{"banner":"https:\/\/ps.w.org\/factorial2000-catalog-sync\/assets\/banner-772x250.png?rev=3752091","banner_2x":"https:\/\/ps.w.org\/factorial2000-catalog-sync\/assets\/banner-1544x500.png?rev=3752091","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/factorial2000-catalog-sync\/assets\/icon-128x128.png?rev=3752091","icon_2x":"https:\/\/ps.w.org\/factorial2000-catalog-sync\/assets\/icon-256x256.png?rev=3752091","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/factorial2000-catalog-sync\/assets\/screenshot-1.png?rev=3752091","caption":"Stock update settings: supplier XML URLs, SKU prefix, price adjustment, cron interval and Telegram notifications."},{"src":"https:\/\/ps.w.org\/factorial2000-catalog-sync\/assets\/screenshot-2.png?rev=3752091","caption":"XML import page with simple and variable product modes and image handling options."},{"src":"https:\/\/ps.w.org\/factorial2000-catalog-sync\/assets\/screenshot-3.png?rev=3752091","caption":"Marketplaces (Pro): the Prom.ua feed at a permanent link, rebuilt on a schedule or after every stock sync."},{"src":"https:\/\/ps.w.org\/factorial2000-catalog-sync\/assets\/screenshot-4.png?rev=3752091","caption":"Built-in documentation with sticky sidebar navigation."}],"raw_content":"<!--section=description-->\n<p><strong>Factorial2000 Catalog Sync<\/strong> connects a WooCommerce store to the product feeds of its suppliers and to marketplaces. It is built for Ukrainian online stores, dropshippers and sellers who work with Prom.ua and YML\/XML price lists. The admin screens and the built-in documentation are in Ukrainian.<\/p>\n\n<p><strong>\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u043e\u044e:<\/strong> Factorial2000 Catalog Sync \u2014 \u043f\u043b\u0430\u0433\u0456\u043d \u0434\u043b\u044f WooCommerce: \u0456\u043c\u043f\u043e\u0440\u0442 \u0442\u043e\u0432\u0430\u0440\u0456\u0432 \u0437 Prom.ua (XML\/YML) \u0442\u0430 \u043f\u0440\u0430\u0439\u0441\u0456\u0432 \u043f\u043e\u0441\u0442\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a\u0456\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0435 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0446\u0456\u043d \u0456 \u0437\u0430\u043b\u0438\u0448\u043a\u0456\u0432 \u0437\u0430 \u0440\u043e\u0437\u043a\u043b\u0430\u0434\u043e\u043c, \u043d\u0430\u0446\u0456\u043d\u043a\u0430, \u0437\u0432\u0456\u0442\u0438 \u0432 Telegram. \u0423 Pro \u2014 \u0444\u0456\u0434 \u0434\u043b\u044f Prom.ua, \u043a\u0456\u043b\u044c\u043a\u0430 \u043f\u043e\u0441\u0442\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a\u0456\u0432 \u0456 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0432\u0456\u0434 \u043a\u043e\u0436\u043d\u0438\u0445 5 \u0445\u0432\u0438\u043b\u0438\u043d. \u0411\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u043e \u043d\u0430\u0437\u0430\u0432\u0436\u0434\u0438, Pro \u043c\u043e\u0436\u043d\u0430 \u0441\u043f\u0440\u043e\u0431\u0443\u0432\u0430\u0442\u0438 14 \u0434\u043d\u0456\u0432 \u0431\u0435\u0437 \u043a\u0430\u0440\u0442\u043a\u0438.<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=y7zDSvTM2XU<\/p>\n\n<p>It does three jobs:<\/p>\n\n<ol>\n<li><strong>Import products from a supplier feed.<\/strong> Give it an XML\/YML link (a Prom.ua export, a supplier price list, OneBox and similar) and it creates WooCommerce products: simple and variable products with names, descriptions, pictures, attributes, categories, weight, barcode and dimensions.<\/li>\n<li><strong>Keep stock and prices in sync.<\/strong> A scheduled job (WP-Cron) reads the feed again and updates availability and prices, so the shop does not sell what the supplier no longer has. A Telegram report tells you what changed.<\/li>\n<li><strong>Publish your catalog to a marketplace (Pro).<\/strong> Today that is <strong>Prom.ua<\/strong>: the plugin builds a Prom-compatible YML feed from your WooCommerce products at a permanent private link, and Prom imports it from that link. The Marketplaces page is built so that other marketplaces (for example Rozetka and Hotline) can be added later; they are planned and are not available yet.<\/li>\n<\/ol>\n\n<h4>What you get for free<\/h4>\n\n<p>Everything below is in the plugin you download from WordPress.org, with no time limit:<\/p>\n\n<ul>\n<li>Import simple and variable products from XML\/YML (<code>&lt;offer&gt;<\/code>, <code>group_id<\/code>, <code>&lt;param&gt;<\/code>, <code>&lt;picture&gt;<\/code>, categories, weight, barcode, dimensions)<\/li>\n<li>Option to import only products that are in stock<\/li>\n<li>Automatic stock status and price updates for one supplier, once a day, plus 3 manual runs a day<\/li>\n<li>SKU prefix per supplier, so the plugin only touches its own products<\/li>\n<li>Price adjustment per supplier: markup, margin or a fixed amount<\/li>\n<li>Currency conversion from the feed's <code>&lt;currencies&gt;<\/code> \/ <code>currencyId<\/code><\/li>\n<li>Products that disappear from the supplier feed are drafted (variations are set out of stock); they come back when the supplier lists them again. A broken or empty feed is never trusted: it sets that supplier's products out of stock instead of publishing wrong data<\/li>\n<li>Telegram notifications with import and sync reports<\/li>\n<li>Built-in documentation, clean uninstall<\/li>\n<\/ul>\n\n<h4>What Pro adds<\/h4>\n\n<p>Pro is a separate build of the same plugin that you install from your Freemius account. It does not unlock anything inside the plugin from WordPress.org; the Pro code is simply not part of it.<\/p>\n\n<ul>\n<li><strong>Marketplaces: Prom.ua feed.<\/strong> Publishes your WooCommerce products to Prom.ua as a YML feed at a permanent link. Simple and variable products, brands, pictures and Prom categories are supported, and catalogs of 10,000+ offers are built in the background. Rebuild on a schedule, from the command line (<code>wp f2000cs marketplace build prom<\/code>), or <strong>right after every stock sync<\/strong>, so Prom always gets current prices and stock<\/li>\n<li><strong>Prom categories picked by name.<\/strong> The Prom category list is built in: search it in a Select2 field when you map your store categories, set a default category, or choose a category for one product<\/li>\n<li><strong>A report on what was left out and why<\/strong> (no price, no picture, no category, duplicate variations), with example SKUs; protection against publishing a feed that suddenly shrank<\/li>\n<li><strong>Several suppliers<\/strong> with their own XML links, SKU prefixes and settings<\/li>\n<li><strong>Stock quantity updates<\/strong> and more frequent syncs: every 5, 10, 15 or 30 minutes, hourly, or several times a day, without the manual-run limit<\/li>\n<li><strong>XML editor and export filter:<\/strong> build a custom Prom.ua export by category or product, with price and stock filters<\/li>\n<li><strong>Fields updater:<\/strong> update chosen fields (name, description, pictures, attributes, categories, tags, vendor code) on products that are already imported<\/li>\n<li><strong>Image processing:<\/strong> convert and resize pictures to WebP, AVIF or JPG on import<\/li>\n<\/ul>\n\n<p>You can start a <strong>14-day Pro trial without a credit card<\/strong> from the plugin (Freemius account). When the trial ends, the Free features keep working.<\/p>\n\n<h4>Who it is for<\/h4>\n\n<ul>\n<li>Stores that take their catalog from one or several suppliers and want stock and prices to update by themselves<\/li>\n<li>Sellers who list the same WooCommerce products on Prom.ua and need a clean, correct feed instead of maintaining Prom by hand<\/li>\n<li>Agencies that set up product synchronization for several shops<\/li>\n<\/ul>\n\n<h4>How it works in short<\/h4>\n\n<ol>\n<li>Add the supplier XML link and a SKU prefix on <strong>\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0456\u0437\u0430\u0446\u0456\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u2192 \u041e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f XML<\/strong>.<\/li>\n<li>Run the first import on <strong>\u0406\u043c\u043f\u043e\u0440\u0442 XML<\/strong>.<\/li>\n<li>Choose how often stock and prices update.<\/li>\n<li>(Pro) Open <strong>\u041c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441\u0438<\/strong>, pick a Prom.ua preset, map your categories, and give Prom the feed link.<\/li>\n<\/ol>\n\n<p><strong>Requirements:<\/strong> WordPress 5.8+, WooCommerce 3.0+, PHP 7.4+ with the XML, SimpleXML and cURL extensions.<\/p>\n\n<p><strong>Video setup guide:<\/strong> <a href=\"https:\/\/www.youtube.com\/watch?v=tdrMy7cAWEk\">YouTube tutorial<\/a><\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to external services. All of them are optional and are used only when you configure them or opt in.<\/p>\n\n<p><strong>Supplier XML feeds (e.g. Prom.ua)<\/strong><\/p>\n\n<p>When you enter an XML feed URL in the settings, the plugin downloads that file during the initial import and during scheduled stock\/price updates. Only a request to the URL you provide is made and no personal data is sent. The feed is provided by your supplier (for example Prom.ua); please refer to that provider's own terms and privacy policy.<\/p>\n\n<p><strong>Telegram Bot API<\/strong><\/p>\n\n<p>If you enter a Telegram bot token and one or more chat IDs in the settings, the plugin sends notification messages to the Telegram Bot API (https:\/\/api.telegram.org) after an import or a stock\/price update completes. The data sent includes your bot token, the target chat ID(s) and the text of the sync report (for example counts of updated or missing products). Requests are made only when Telegram notifications are configured and an update runs.<\/p>\n\n<p>This service is provided by Telegram. Terms of Service: https:\/\/telegram.org\/tos. Privacy Policy: https:\/\/telegram.org\/privacy.<\/p>\n\n<p><strong>Freemius (licensing, trial and optional usage data)<\/strong><\/p>\n\n<p>The plugin includes the Freemius SDK, which provides the Pro trial, license activation and the account area. Nothing is sent until you opt in or start a trial or purchase from the plugin screens. After you opt in, the SDK sends the data Freemius describes: your site URL, WordPress\/PHP and plugin versions, and the admin name and email address, so that your account, trial and license can be managed. You can skip the opt-in and keep using the Free features.<\/p>\n\n<p>This service is provided by Freemius. Terms of Service: https:\/\/freemius.com\/terms\/. Privacy Policy: https:\/\/freemius.com\/privacy\/.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/factorial2000-catalog-sync<\/code> directory, or install the plugin through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Make sure WooCommerce is installed and active.<\/li>\n<li>Open <strong>\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0456\u0437\u0430\u0446\u0456\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u2192 \u041e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f XML<\/strong> in the admin menu.<\/li>\n<li>Add your supplier XML URL, SKU prefix (e.g. <code>SUP_<\/code>), and choose the update interval.<\/li>\n<li>Go to <strong>\u0406\u043c\u043f\u043e\u0440\u0442 XML<\/strong> for the initial product import from your XML file.<\/li>\n<li>Optionally configure Telegram notifications on the <strong>\u041e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f XML<\/strong> page.<\/li>\n<li>Refer to the <strong>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0456\u044f<\/strong> tab for full usage details.<\/li>\n<\/ol>\n\n<p>To use Pro features (Prom.ua feed, several suppliers, XML editor, image processing), install the Pro build from your Freemius account; the plugin shows the link when you start a trial or buy a license.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"%D0%AF%D0%BA%20%D1%96%D0%BC%D0%BF%D0%BE%D1%80%D1%82%D1%83%D0%B2%D0%B0%D1%82%D0%B8%20%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B8%20%D0%B7%20prom.ua%20%D0%B2%20woocommerce%20%D0%B1%D0%B5%D0%B7%D0%BA%D0%BE%D1%88%D1%82%D0%BE%D0%B2%D0%BD%D0%BE%3F\"><h3>\u042f\u043a \u0456\u043c\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0442\u043e\u0432\u0430\u0440\u0438 \u0437 Prom.ua \u0432 WooCommerce \u0431\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u043e?<\/h3><\/dt>\n<dd><p>\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0456\u0442\u044c \u043f\u043b\u0430\u0433\u0456\u043d, \u0432\u0456\u0434\u043a\u0440\u0438\u0439\u0442\u0435 \u00ab\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0456\u0437\u0430\u0446\u0456\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u2192 \u0406\u043c\u043f\u043e\u0440\u0442 XML\u00bb, \u0432\u0441\u0442\u0430\u0432\u0442\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 XML\/YML-\u0432\u0438\u0433\u0440\u0443\u0437\u043a\u0443 Prom.ua \u0430\u0431\u043e \u043f\u043e\u0441\u0442\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a\u0430 \u0456 \u0432\u043a\u0430\u0436\u0456\u0442\u044c SKU-\u043f\u0440\u0435\u0444\u0456\u043a\u0441. \u041f\u043b\u0430\u0433\u0456\u043d \u0441\u0442\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0456 \u0442\u0430 \u0432\u0430\u0440\u0456\u0430\u0442\u0438\u0432\u043d\u0456 \u0442\u043e\u0432\u0430\u0440\u0438 \u0437 \u0444\u043e\u0442\u043e, \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 \u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0456\u044f\u043c\u0438. \u0406\u043c\u043f\u043e\u0440\u0442 \u0431\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u0438\u0439.<\/p><\/dd>\n<dt id=\"%D0%AF%D0%BA%20%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%BD%D0%BE%20%D0%BE%D0%BD%D0%BE%D0%B2%D0%BB%D1%8E%D0%B2%D0%B0%D1%82%D0%B8%20%D1%86%D1%96%D0%BD%D0%B8%20%D1%82%D0%B0%20%D0%B7%D0%B0%D0%BB%D0%B8%D1%88%D0%BA%D0%B8%20%D0%B7%20xml%20%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%B0%3F\"><h3>\u042f\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043e\u043d\u043e\u0432\u043b\u044e\u0432\u0430\u0442\u0438 \u0446\u0456\u043d\u0438 \u0442\u0430 \u0437\u0430\u043b\u0438\u0448\u043a\u0438 \u0437 XML \u043f\u043e\u0441\u0442\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a\u0430?<\/h3><\/dt>\n<dd><p>\u041d\u0430 \u0441\u0442\u043e\u0440\u0456\u043d\u0446\u0456 \u00ab\u041e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f XML\u00bb \u0434\u043e\u0434\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0444\u0456\u0434 \u0456 \u043e\u0431\u0435\u0440\u0456\u0442\u044c \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b. \u0423 \u0431\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u0456\u0439 \u0432\u0435\u0440\u0441\u0456\u0457 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0439\u0434\u0435 \u0449\u043e\u0434\u043d\u044f, \u0443 Pro \u2014 \u0432\u0456\u0434 \u043a\u043e\u0436\u043d\u0438\u0445 5 \u0445\u0432\u0438\u043b\u0438\u043d. \u041c\u043e\u0436\u043d\u0430 \u0437\u0430\u0434\u0430\u0442\u0438 \u043d\u0430\u0446\u0456\u043d\u043a\u0443, \u043c\u0430\u0440\u0436\u0443 \u0430\u0431\u043e \u0444\u0456\u043a\u0441\u043e\u0432\u0430\u043d\u0443 \u0441\u0443\u043c\u0443 \u0442\u0430 \u043e\u0442\u0440\u0438\u043c\u0443\u0432\u0430\u0442\u0438 \u0437\u0432\u0456\u0442\u0438 \u0432 Telegram.<\/p><\/dd>\n<dt id=\"how%20is%20it%20different%20from%20general-purpose%20importers%3F\"><h3>How is it different from general-purpose importers?<\/h3><\/dt>\n<dd><p>It is built for one job: YML\/Prom.ua feeds in WooCommerce. Scheduled stock and price sync and price adjustment are free, and the Pro build adds a ready Prom.ua feed. General-purpose importers let you map any file format yourself; this plugin has no custom field mapper and reads standard YML tags.<\/p><\/dd>\n<dt id=\"how%20do%20i%20sync%20supplier%20stock%20and%20prices%20with%20woocommerce%3F\"><h3>How do I sync supplier stock and prices with WooCommerce?<\/h3><\/dt>\n<dd><p>Add the supplier's XML\/YML link and a SKU prefix on the <strong>\u041e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f XML<\/strong> page and choose an update interval. The plugin reads the feed on schedule and updates stock status and prices of the products that carry that prefix. The Free plan updates one supplier once a day; Pro supports several suppliers and intervals from every 5 minutes.<\/p><\/dd>\n<dt id=\"how%20do%20i%20import%20products%20from%20a%20prom.ua%20or%20yml%20feed%20into%20woocommerce%3F\"><h3>How do I import products from a Prom.ua or YML feed into WooCommerce?<\/h3><\/dt>\n<dd><p>Open <strong>\u0406\u043c\u043f\u043e\u0440\u0442 XML<\/strong>, paste the feed link (or choose a file), analyze it, and run the import. Simple products and variable products (offers grouped by <code>group_id<\/code>) are supported, with images, attributes and categories.<\/p><\/dd>\n<dt id=\"can%20i%20export%20my%20woocommerce%20products%20to%20prom.ua%3F\"><h3>Can I export my WooCommerce products to Prom.ua?<\/h3><\/dt>\n<dd><p>Yes, in Pro. Open <strong>\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0456\u0437\u0430\u0446\u0456\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u2192 \u041c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441\u0438<\/strong>, set up the Prom.ua feed and give Prom the feed URL shown on the page (Prom \u2192 import from a link). The feed contains published products with a price, a picture and a category; out-of-stock products are listed with <code>available=\"false\"<\/code>. It is built in the background and can be refreshed on a schedule and\/or after every stock sync. The feed URL contains a secret token; anyone who knows it can read your product data, the same as Prom does.<\/p><\/dd>\n<dt id=\"which%20marketplaces%20are%20supported%3F\"><h3>Which marketplaces are supported?<\/h3><\/dt>\n<dd><p>Prom.ua (Pro). The Marketplaces page is designed to hold more marketplaces; Rozetka and Hotline are planned and not available yet.<\/p><\/dd>\n<dt id=\"what%20is%20free%20and%20what%20is%20paid%3F\"><h3>What is free and what is paid?<\/h3><\/dt>\n<dd><p>The plugin on WordPress.org is fully working and has no locked features: import, one-supplier scheduled sync, price adjustment, currency conversion, Telegram reports. Pro is a separate build with the marketplace feed, several suppliers, quantity updates, the XML editor, the fields updater and image processing. See \"What you get for free\" and \"What Pro adds\" above.<\/p><\/dd>\n<dt id=\"is%20there%20a%20free%20pro%20trial%3F\"><h3>Is there a free Pro trial?<\/h3><\/dt>\n<dd><p>Yes: 14 days, no credit card. Install the Pro build from your Freemius account when the trial starts. After it ends, the Free plugin keeps working with its normal limits.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20require%20woocommerce%3F\"><h3>Does this plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. It is built for WooCommerce product import and synchronization.<\/p><\/dd>\n<dt id=\"which%20xml%20format%20is%20supported%3F\"><h3>Which XML format is supported?<\/h3><\/dt>\n<dd><p>YML as used by Prom.ua and many Ukrainian suppliers, including simple <code>&lt;offer&gt;<\/code> and variable products with <code>group_id<\/code>. See the built-in documentation for the field reference.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20products%20missing%20from%20the%20supplier%20feed%3F\"><h3>What happens to products missing from the supplier feed?<\/h3><\/dt>\n<dd><p>If a SKU prefix is configured, products with that prefix that are no longer in the feed are handled: simple products go to Draft, variations are set out of stock. Products you drafted yourself are not touched. If the feed is broken or empty, the plugin does not trust it and sets that supplier's products out of stock until a valid feed returns. Without a SKU prefix nothing is changed. Make sure your feed always contains the full catalog.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20shared%20hosting%20and%20with%20big%20catalogs%3F\"><h3>Does it work on shared hosting and with big catalogs?<\/h3><\/dt>\n<dd><p>Yes. Feeds are read with a streaming XML parser, so a large file does not have to fit in memory. The stock and price sync works in batches of 100 products and stops before the PHP time limit; the import runs in small portions, so one request never has to process the whole catalog. Scheduled runs use WP-Cron. For large catalogs, or if your site has little traffic, add a real server cron that calls <code>wp-cron.php<\/code> (the built-in documentation has a ready line) and use the background mode.<\/p><\/dd>\n<dt id=\"why%20is%20the%20first%20import%20with%20pictures%20slow%3F\"><h3>Why is the first import with pictures slow?<\/h3><\/dt>\n<dd><p>WordPress has to download every picture from the supplier and create its thumbnail sizes, so the first import of a catalog with many photos takes time on any hosting. It runs in portions and can be repeated: products that already exist are skipped, so you can continue where it stopped. Later stock and price syncs do not download pictures.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20map%20the%20feed%20fields%20myself%3F\"><h3>Do I have to map the feed fields myself?<\/h3><\/dt>\n<dd><p>No, and there is no custom field mapper: the plugin reads the standard YML tags used by Prom.ua and most Ukrainian suppliers (see the field reference in the built-in documentation). If a supplier uses another structure, ask for their Prom.ua\/YML export.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20rename%20or%20move%20categories%20in%20woocommerce%3F\"><h3>What happens if I rename or move categories in WooCommerce?<\/h3><\/dt>\n<dd><p>Stock and price sync never changes names, descriptions, pictures or categories of existing products. When you import new products, categories are matched by name and parent, so a category you renamed may be created again under the feed's original name. Rename it in the feed or reassign the products after the import. In Pro, the fields updater can refresh categories of imported products.<\/p><\/dd>\n<dt id=\"in%20which%20language%20are%20the%20plugin%20screens%20and%20documentation%3F\"><h3>In which language are the plugin screens and documentation?<\/h3><\/dt>\n<dd><p>Ukrainian.<\/p><\/dd>\n<dt id=\"where%20can%20i%20report%20bugs%20or%20request%20features%3F\"><h3>Where can I report bugs or request features?<\/h3><\/dt>\n<dd><p>Please use the support tab on WordPress.org.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.7.0<\/h4>\n\n<p><strong>Important:<\/strong> Pro features are now shipped only in the Pro version of the plugin. If you have a Pro license or an active trial and update from WordPress.org, you get the Free version and the Pro features stop working until you install the Pro version from your Freemius account. The plugin shows a notice with the link.<\/p>\n\n<p>New:\n* Price adjustment per supplier (markup \/ margin \/ fixed amount) is now free.\n* (Pro) Prom categories are picked by name: the Prom category list is built in, so the store-to-Prom table, the default category and the new \u00abProm.ua\u00bb box in the product editor search it and fill in the id. A category chosen on the product wins over the category rules (Prom ranks the offer's portal_category_id first); variations use their product's.\n* Import option \u00ab\u0406\u043c\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0442\u0456\u043b\u044c\u043a\u0438 \u0442\u043e\u0432\u0430\u0440\u0438 \u0432 \u043d\u0430\u044f\u0432\u043d\u043e\u0441\u0442\u0456\u00bb (import in-stock products only): out-of-stock offers are skipped, a variable product gets only its in-stock variations, and a group with nothing in stock is skipped.\n* (Pro) \u00abMarketplaces\u00bb page: publish your WooCommerce products to Prom.ua as a feed at a permanent private link. Simple and variable products, brands and Prom categories are supported, and large catalogs work too. The feed is refreshed on a schedule or from the command line: <code>wp f2000cs marketplace build prom<\/code>.\n* (Pro) Option \u00ab\u041f\u0456\u0441\u043b\u044f \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u043d\u0430\u044f\u0432\u043d\u043e\u0441\u0442\u0456\u00bb (after stock update): after every stock and price sync the Prom feed is rebuilt in the background and published at the same link, so Prom always gets current prices and stock.\n* Products that the stock sync set to Draft because they disappeared from the supplier feed are published again when they return to the feed. Products you drafted yourself are never touched, and drafted products are no longer reported on every run.\n* A notice with a link to the Freemius account when a Pro license or trial is active but the Free version is installed.<\/p>\n\n<p>Improved:\n* (Pro) Marketplaces settings are mostly one-click presets. Brand names and store-to-Prom category mapping use searchable tables instead of text fields.\n* Ukrainian translation of the Freemius screens (about 440 more strings).\n* The Import page no longer remembers the last XML URL: the URL field starts empty (the SKU prefix is still remembered).\n* (Pro) Prom categories are chosen in a searchable Select2 field (type a name or the start of an id) with a link to Prom's official category list with ids. The brand table lists the shop's brands: fill \u00abBrand in Prom\u00bb only where the name differs.\n* (Pro) The Prom feed page shows why products were left out (no price, picture, category \u2026) with example SKUs.\n* (Pro) The Prom feed follows Prom's import rules: the article (vendorCode) is cut to 25 allowed characters, the product code is sent as  (Prom reads  as an article), a name without letters is skipped, and the page warns about an unsupported currency and a file over 180 MB. It also explains that Prom takes prices and stock every 4 hours.\n* (Pro) Product descriptions sent to Prom lose shortcodes and block editor comments; line breaks of classic descriptions are kept as paragraphs. Picture URLs with Cyrillic file names are encoded.\n* (Pro) \u00abUnpublished products\u00bb now also exports draft variations and no longer exports private products.\n* A broken supplier feed no longer leaves stale stock on the site: if the XML is torn (fatal parse error) or has no offers, every product and variation with that supplier's SKU prefix is set out of stock until a valid feed returns, and the Telegram message says why the feed failed. Without a SKU prefix nothing is touched, so the whole shop can never be hit.\n* Long import and sync runs no longer flush the whole object cache \u2014 only the transients cache group is cleared \u2014 so the import session cache and other caches survive a run. Plugin temp files older than two hours are removed by a daily cron event and by an hourly admin sweep.\n* With the Factorial2000 Translator active and both Russian and Ukrainian enabled, the Prom feed sends the Russian text in \/ and the Ukrainian one in \/ (a missing Russian translation falls back to the site language); language tags never leak into the feed.<\/p>\n\n<p>Fixed:\n* After switching from Free to Pro the scheduled stock sync stopped until the next manual run. The schedule is now restored on activation and follows the real interval when a trial starts or ends.\n* A marketplace feed is no longer left frozen when Pro is not active: the published file is withdrawn once it is more than 3 days old. Deactivation stops marketplace schedules; uninstall removes marketplace settings, feed files and temporary import data.\n* <code>wp f2000cs marketplace build<\/code> now requires an active Pro license or trial.\n* Price adjustment (markup \/ margin \/ fixed amount) is now available in the Free version, so a saved rule keeps working when Pro is not installed. With a license or trial but without the Pro version installed, stock statuses of products with managed quantity are left alone when quantity updates were saved before; install the Pro version to resume them.\n* Switching between Free and Pro no longer starts a full stock sync right away, and saving the settings on the Free version no longer overwrites the saved update interval.\n* The \u00abPro version missing\u00bb notice is shown on every admin screen and also when Pro settings are saved without a license.\n* (Pro) A Prom feed that suddenly has less than half the products of the last published one is held back (a broken supplier feed can no longer empty the catalog on Prom); a button publishes it when the shrink is expected.\n* (Pro) If the built Prom feed cannot replace the published file, the job now reports an error instead of \u00abdone\u00bb, and the previous feed stays at the same link.\n* (Pro) A stock sync during a long feed build no longer restarts it; one more build runs when it finishes. Products drafted during a build are no longer skipped, and two builds can no longer run at once.\n* (Pro) Prom category rules match the start of the category path: \u00ab\u041e\u0434\u044f\u0433\u00bb no longer catches \u00ab\u0414\u0438\u0442\u044f\u0447\u0438\u0439 \u043e\u0434\u044f\u0433\u00bb.\n* (Pro) A variation without a size is no longer given a guessed size unless only one size is left for it.\n* Products that 0.6.x set to Draft are not published again automatically: only products drafted by 0.7.0 or later are.\n* A trial started on the Free version no longer shows a \u00abfull Pro access\u00bb countdown; it explains that the Pro version has to be installed.\n* Activating Free and Pro versions together no longer mixes up which copy is premium.\n* A URL import could leave hundreds of leftover files in the system temp folder: the feed cache lived in a transient that the plugin's own cache cleanup dropped mid-import, so every batch request downloaded the feed into a new temp file. The cached download now uses a deterministic per-session file and is reused while it exists; uninstall removes these files too.<\/p>\n\n<p>Security:\n* Attribute names and server messages from a supplier feed are shown as plain text on the import analysis screen.<\/p>\n\n<p>For developers:\n* A free-vs-Pro build simulation now runs in CI so that Pro code can never leak into the Free build.\n* Import session keys are lowercase, consistent with how they are read.<\/p>\n\n<h4>0.6.14<\/h4>\n\n<ul>\n<li>Added: Pro option on the Import page \u2014 \u00abImport stock quantity from XML\u00bb. Reads <code>&lt;quantity&gt;<\/code>, <code>&lt;stock_quantity&gt;<\/code> or <code>&lt;qty_stock&gt;<\/code> (decimal values such as <code>1.000<\/code> are supported) and enables stock management for simple products and variations. Off by default.<\/li>\n<li>Added: <code>&lt;qty_stock&gt;<\/code> (OneBox) is now recognized by the scheduled stock sync and the fields updater, not only by import.<\/li>\n<li>Fixed: offers with an empty <code>available=\"\"<\/code> attribute (OneBox) were treated as in stock \u2014 they are now out of stock. If the attribute is missing entirely, the quantity decides (above 0 = in stock), otherwise the offer stays in stock.<\/li>\n<li>Fixed: variations that share the parent's first picture no longer download the same image again for every size (faster imports, no duplicate media files).<\/li>\n<li>Changed: stock quantity is no longer imported unconditionally (0.6.11 behavior) \u2014 it follows the new import option.<\/li>\n<li>Improved: documentation updated for qty_stock, available handling, quantity import, \u00ab\u041d\u043e\u0432\u0438\u043d\u043a\u0438\u00bb subcategories and the new update intervals; the XML editor treats <code>available=\"y\"<\/code> as in stock.<\/li>\n<\/ul>\n\n<h4>0.6.13<\/h4>\n\n<ul>\n<li>Added: option to add product categories from the XML feed as subcategories under \"\u041d\u043e\u0432\u0438\u043d\u043a\u0438\" (instead of creating separate category trees) \u2014 improves organization for feeds with many categories.<\/li>\n<li>Improved: import checkpoint now includes the new <code>new_category_subcats<\/code> option for seamless resume of imports with category nesting enabled.<\/li>\n<\/ul>\n\n<h4>0.6.12<\/h4>\n\n<ul>\n<li>Fixed: the XML editor (Pro) failed to list any products after selecting a category \u2014 the session token generated on load could contain uppercase letters, which was silently lowercased on every later request, breaking the lookup on case-sensitive (Linux) hosting.<\/li>\n<\/ul>\n\n<h4>0.6.11<\/h4>\n\n<ul>\n<li>Added: three new update intervals for Pro \u2014 4, 6 and 8 times a day.<\/li>\n<li>Fixed: stock quantity from XML (<code>&lt;quantity&gt;<\/code> or <code>&lt;stock_quantity&gt;<\/code>) is now properly extracted and imported during product import (both simple and variable products\/variations).<\/li>\n<li>Fixed: <code>_manage_stock<\/code> is now automatically enabled when quantity is available from XML during import (previously always set to 'no').<\/li>\n<li>Improved: stock quantity handling is now consistent across import, field updates, and scheduled stock sync operations.<\/li>\n<\/ul>\n\n<h4>0.6.10<\/h4>\n\n<ul>\n<li>Fixed: the Freemius setup wizard now appears after activation, so new users can opt in and start the 14-day Pro trial (SDK was initialized too late to register its activation hook).<\/li>\n<li>Improved: compatibility verified with WordPress 7.0.4.<\/li>\n<\/ul>\n\n<h4>0.6.9<\/h4>\n\n<ul>\n<li>Fixed: a resumed import can now be stopped \u2014 the stop button stays active during resume and shows \u00abstopped\u00bb instead of a fake 100% completion.<\/li>\n<li>Fixed: generated XML download links could die with \u00ablink expired\u00bb \u2014 downloads now use a server-side token instead of a nonce, and the button label no longer repeats the long filename.<\/li>\n<li>Fixed: stock quantity updates no longer revert stock status and prices written by the same sync run (Pro).<\/li>\n<li>Fixed: batch processing now respects the raised execution-time limit, so large catalogs keep making progress on shared hosting.<\/li>\n<li>Fixed: aggressive transient cleanup no longer deletes transients belonging to other plugins.<\/li>\n<li>Fixed: temporary currency files are removed on all exit paths (no temp-file leaks).<\/li>\n<li>Fixed: per-product update failures are now logged instead of being silently swallowed (capped at 10 lines per run to protect the log).<\/li>\n<li>Fixed: field updates (title, description, short description) now report and log failures instead of silently claiming success.<\/li>\n<li>Fixed: leftover temporary files are removed after image conversion, and the export page now checks admin capabilities explicitly.<\/li>\n<li>Improved: image processing settings default to \u00ab\u041d\u0435 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0443\u0432\u0430\u0442\u0438\u00bb and their tooltips explain that processing loads the server and can slow the import down.<\/li>\n<li>Security: SSL\/TLS certificate verification is now enabled for feed and image downloads by default; a new \u00abWeak SSL certificates\u00bb setting (Update page) lets you opt out for suppliers with self-signed or expired certificates, as does the <code>f2000cs_ssl_verify<\/code> filter.<\/li>\n<li>Security: XML feeds are parsed with network entity loading disabled (XXE hardening) and feed content (titles\/descriptions) is sanitized before it is stored.<\/li>\n<\/ul>\n\n<h4>0.6.8<\/h4>\n\n<ul>\n<li>Fixed: GIF and BMP are not converted or re-encoded on import (GIF animation preserved). Conversion applies to PNG, JPG, WebP, and AVIF only.<\/li>\n<\/ul>\n\n<h4>0.6.7<\/h4>\n\n<ul>\n<li>Added: image conversion now covers ALL source formats (PNG, JPG, WebP, AVIF, GIF) \u2014 not just PNG \u2014 with same-format and SVG passthrough. UI label shortened to \u00ab\u0424\u043e\u0440\u043c\u0430\u0442 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044c\u00bb.<\/li>\n<li>Added: Free plan now allows 3 manual stock updates per day (was 1).<\/li>\n<li>Fixed: the scheduled cron no longer consumes or is blocked by the Free manual-update quota.<\/li>\n<li>Fixed: Freemius <code>is_premium<\/code> flag set to false for the wp.org build so the 14-day trial offer works on manual installs.<\/li>\n<\/ul>\n\n<h4>0.6.6<\/h4>\n\n<ul>\n<li>Added: PNG \u2192 AVIF conversion on import (Pro), with host capability check.<\/li>\n<li>Improved: the Import page remembers the last XML URL and SKU prefix per admin.<\/li>\n<li>Fixed: Freemius 14-day Pro trial starts without a credit card.<\/li>\n<\/ul>\n\n<h4>0.6.5<\/h4>\n\n<ul>\n<li>Improved: wordpress.org short description trimmed to the 150-character limit.<\/li>\n<\/ul>\n\n<h4>0.6.4<\/h4>\n\n<ul>\n<li>Improved: Freemius free license activation UX and Ukrainian opt-in strings.<\/li>\n<\/ul>\n\n<h4>0.6.3<\/h4>\n\n<ul>\n<li>Fixed: Freemius plugin-scope API paths (avoid duplicated \/plugins\/{id}\/ prefix).<\/li>\n<\/ul>\n\n<h4>0.6.2<\/h4>\n\n<ul>\n<li>Fixed: Freemius deploy uses plugin-scope API keys (Product \u2192 Settings \u2192 Keys).<\/li>\n<\/ul>\n\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>Fixed: Freemius GitHub deploy now fails loudly on API errors (custom deploy script).<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Added: Freemius freemium packaging with GitHub Actions deploy on <code>v*<\/code> tags.<\/li>\n<li>Fixed: removed <code>uninstall.php<\/code> \u2014 cleanup runs on Freemius <code>after_uninstall<\/code>.<\/li>\n<li>Improved: import progress UI and admin assets cache-busting.<\/li>\n<\/ul>\n\n<h4>0.5.9<\/h4>\n\n<ul>\n<li>Fixed: removed <code>uninstall.php<\/code> for Freemius deployment \u2014 cleanup now runs on Freemius <code>after_uninstall<\/code>.<\/li>\n<\/ul>\n\n<h4>0.5.8<\/h4>\n\n<ul>\n<li>Fixed: import progress panel styles now load after CSS updates (asset version bump + reliable show\/hide without stale browser cache).<\/li>\n<li>Improved: progress panel visibility is driven by <code>.is-active<\/code> and fully clears the HTML <code>hidden<\/code> attribute.<\/li>\n<\/ul>\n\n<h4>0.5.7<\/h4>\n\n<ul>\n<li>Fixed: XML export filter now reads the SKU prefix from the correct slot-1 option (<code>f2000cs_sku_prefix_1<\/code>) instead of the legacy key.<\/li>\n<li>Fixed: XML Editor and export filter parse XML elements and attributes case-insensitively (<code>categoryId<\/code>\/<code>CATEGORYID<\/code>\/<code>parentID<\/code> etc.).<\/li>\n<li>Fixed: numeric XML category\/offer IDs round-trip as strings so the JS tree and product selection work correctly.<\/li>\n<li>Fixed: export page shows the correct product count and pre-fills the right prefix.<\/li>\n<li>Fixed: <code>&lt;offer available&gt;<\/code> now correctly handles values <code>1<\/code>, <code>yes<\/code>, <code>y<\/code>, <code>True<\/code>, <code>TRUE<\/code> in addition to <code>true<\/code> (YML spec compliance).<\/li>\n<li>Fixed: <code>&lt;currencyId&gt;<\/code> and <code>&lt;currencies&gt;<\/code> are now parsed \u2014 offer prices are converted using the currency rate when the offer currency differs from the store's default.<\/li>\n<li>Fixed: <code>&lt;price&gt;<\/code> with European comma-as-decimal formatting (e.g. \"1.999,00\") is now parsed correctly.<\/li>\n<li>Fixed: multiple <code>&lt;categoryId&gt;<\/code> elements per offer are now supported (comma-joined).<\/li>\n<li>Fixed: <code>&lt;param&gt;<\/code> elements with the same <code>name<\/code> are now concatenated with \"; \" instead of overwriting.<\/li>\n<li>Fixed: <code>&lt;param unit=\"kg\"&gt;<\/code> is now appended to the attribute value (e.g. \"5 \u043a\u0433\").<\/li>\n<li>Fixed: <code>download_url()<\/code> calls now disable SSL verification, allowing image downloads from servers with self-signed certificates.<\/li>\n<li>Fixed: <code>wc_product_meta_lookup<\/code> price columns are now synced after stock update price changes (HPOS compatibility).<\/li>\n<li>Added: <code>&lt;weight&gt;<\/code>, <code>&lt;barcode&gt;<\/code>, <code>&lt;dimensions&gt;<\/code> are now imported as product meta (<code>_weight<\/code>, <code>_barcode<\/code>, <code>_dimensions<\/code>).<\/li>\n<li>Added: cron intervals <code>10_minute<\/code>, <code>15_minute<\/code>, <code>30_minute<\/code> for finer scheduling granularity (Pro).<\/li>\n<li>Added: Documentation admin page with sticky sidebar navigation covering the full plugin functionality.<\/li>\n<li>Added: unit test harness with WP-function stubs (200+ tests, runs offline without WordPress\/WooCommerce).<\/li>\n<li>Added: Gulp build system \u2014 interactive menu, SVN-ready release packaging, version bumping across all files, phpcs\/phpunit runs.<\/li>\n<li>Added: PHPCS ruleset (WordPress standard) with project-specific cosmetic-sniff disables.<\/li>\n<\/ul>\n\n<h4>0.5<\/h4>\n\n<ul>\n<li>Added: <strong>XML Editor<\/strong> \u2014 build a filtered export by selecting categories and\/or individual offers, with conditions (only in stock, min\/max price, keep oldprice) and live product thumbnails. Accessible from <strong>\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0432\u0438\u0433\u0440\u0443\u0437\u043a\u0438<\/strong>.<\/li>\n<li>Added: <strong>Image processing (Pro)<\/strong> \u2014 convert PNG to WebP\/JPG, optimize, and resize product images on import.<\/li>\n<li>Added: <strong>Fields Updater<\/strong> \u2014 update selected fields (name, description, price, images, etc.) of products that are already on the site, matched by SKU.<\/li>\n<li>Added: case-insensitive parsing of XML feeds that use non-standard element casing.<\/li>\n<li>Added: modular admin pages split from the monolithic settings page.<\/li>\n<li>Improved: admin UI with collapsible category tree, search, and clearer supplier management.<\/li>\n<li>Improved: background sync event handling and transient cleanup.<\/li>\n<\/ul>\n\n<h4>0.4<\/h4>\n\n<ul>\n<li>Replaced the simple per-supplier margin (%) field with a price adjustment switcher: choose between \u041c\u0430\u0440\u0436\u0430 (margin, always added, 0-99%), \u041d\u0430\u0446\u0456\u043d\u043a\u0430 (markup %, can be added or subtracted) or \u0424\u0456\u043a\u0441\u043e\u0432\u0430\u043d\u0430 \u0441\u0443\u043c\u0430 (a flat currency amount, can be added or subtracted). Available when price updates are allowed for that supplier.<\/li>\n<\/ul>\n\n<h4>0.3<\/h4>\n\n<ul>\n<li>First release on WordPress.org.<\/li>\n<li>Renamed functions, options, hooks, and assets to the f2000cs_ prefix for consistency.<\/li>\n<li>Bumped version and aligned plugin branding for the directory listing.<\/li>\n<\/ul>\n\n<h4>0.2<\/h4>\n\n<ul>\n<li>Prepared the plugin for the WordPress.org directory: code now follows WordPress coding and security standards.<\/li>\n<li>Security: added nonce verification, capability checks, input sanitization and output escaping across all admin actions.<\/li>\n<li>All remote requests now use the WordPress HTTP API (wp_remote_get\/wp_remote_post) instead of cURL and file_get_contents.<\/li>\n<li>Added a unique prefix and namespace to all functions, classes, options, hooks and meta keys to avoid conflicts with other plugins.<\/li>\n<li>Added a \"Telegram notifications\" setup guide and clearer field hints (how to get the bot token and chat ID).<\/li>\n<li>Documented external services (Telegram Bot API and supplier XML feeds) in the readme.<\/li>\n<li>Renamed the plugin to \"Factorial2000 Catalog Sync for Prom.ua and WooCommerce\" and changed the admin menu label to \"Catalog Sync\".<\/li>\n<li>Added a WooCommerce activation check with an admin notice when WooCommerce is missing.<\/li>\n<\/ul>\n\n<h4>0.1<\/h4>\n\n<ul>\n<li>Initial version: import of simple and variable products from Prom.ua XML, scheduled stock\/price updates, XML export filter and Telegram notifications.<\/li>\n<\/ul>","raw_excerpt":"Import Prom.ua \/ YML feeds into WooCommerce and auto-update stock and prices from supplier XML. Pro: Prom.ua feed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/332348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=332348"}],"author":[{"embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/factorial2000"}],"wp:attachment":[{"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=332348"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=332348"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=332348"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=332348"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=332348"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ory.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=332348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}