{"id":310400,"date":"2026-05-10T19:51:30","date_gmt":"2026-05-10T19:51:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/balticxml\/"},"modified":"2026-05-10T19:51:08","modified_gmt":"2026-05-10T19:51:08","slug":"balticxml","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/balticxml\/","author":17576777,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"BalticXML","header_author":"Edgars Veidenbaums","header_description":"Generates XML product feeds from your WooCommerce store for Latvian price comparison sites: salidzini.lv, kurpirkt.lv and ceno.lv.","assets_banners_color":"f2f7fd","last_updated":"2026-05-10 19:51:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/veidenbaums.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"veidenbaums","date":"2026-05-10 19:51:08"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3527987,"resolution":"256x256","location":"assets","locale":"","width":1254,"height":1254}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3527987,"resolution":"1544x500","location":"assets","locale":"","width":2205,"height":713},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3527987,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3527987,"resolution":"1","location":"assets","locale":"","width":951,"height":1207}},"screenshots":{"1":"BalticXML settings page with all three feed URLs","2":"Generated XML feed example"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[262511,262510,262509,286,11891],"plugin_category":[45],"plugin_contributors":[176836],"plugin_business_model":[],"class_list":["post-310400","plugin","type-plugin","status-publish","hentry","plugin_tags-ceno","plugin_tags-kurpirkt","plugin_tags-salidzini","plugin_tags-woocommerce","plugin_tags-xml-feed","plugin_category-ecommerce","plugin_contributors-veidenbaums","plugin_committers-veidenbaums"],"banners":{"banner":"https:\/\/ps.w.org\/balticxml\/assets\/banner-772x250.png?rev=3527987","banner_2x":"https:\/\/ps.w.org\/balticxml\/assets\/banner-1544x500.png?rev=3527987","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/balticxml\/assets\/icon-256x256.png?rev=3527987","icon_2x":"https:\/\/ps.w.org\/balticxml\/assets\/icon-256x256.png?rev=3527987","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/balticxml\/assets\/screenshot-1.jpg?rev=3527987","caption":"BalticXML settings page with all three feed URLs"}],"raw_content":"<!--section=description-->\n<p>BalticXML is a lightweight WooCommerce extension that exports your product catalogue as XML feeds compatible with three Latvian price comparison engines:<\/p>\n\n<ul>\n<li><strong>salidzini.lv<\/strong> - <a href=\"https:\/\/www.salidzini.lv\/shops_info.php?#xml\">official spec<\/a><\/li>\n<li><strong>kurpirkt.lv<\/strong> - <a href=\"https:\/\/www.kurpirkt.lv\/veikaliem.php\">official spec<\/a><\/li>\n<li><strong>ceno.lv<\/strong> - <a href=\"https:\/\/ceno.lv\/pages\/xml-file\">official spec<\/a><\/li>\n<\/ul>\n\n<p>All three feeds are generated and served from the same plugin at separate URLs, for example:<\/p>\n\n<ul>\n<li><code>https:\/\/yoursite.com\/salidzini-feed.xml<\/code><\/li>\n<li><code>https:\/\/yoursite.com\/kurpirkt-feed.xml<\/code><\/li>\n<li><code>https:\/\/yoursite.com\/ceno-feed.xml<\/code><\/li>\n<\/ul>\n\n<p>Each feed is cached on disk for fast delivery and regenerated automatically via WP-Cron.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Three independent XML feeds (salidzini.lv, kurpirkt.lv, ceno.lv) at their own URLs<\/li>\n<li>Per-format cache files and a single shared WP-Cron schedule<\/li>\n<li>Manual \"Regenerate Feed Now\" button rebuilds all feeds at once<\/li>\n<li>Includes simple, variable (per-variation) and external products<\/li>\n<li>Full category breadcrumb path (<code>Parent &gt; Child &gt; Subchild<\/code>)<\/li>\n<li>Automatic brand \/ manufacturer detection from common taxonomies and attributes<\/li>\n<li>Automatic EAN\/GTIN detection from common meta keys<\/li>\n<li>Out-of-stock filter<\/li>\n<li>Customizable feed slug per portal<\/li>\n<li>HPOS (High-Performance Order Storage) compatible<\/li>\n<li>Translation ready<\/li>\n<\/ul>\n\n<h4>Feed Structures<\/h4>\n\n<p><strong>salidzini.lv:<\/strong><\/p>\n\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;products&gt;\n  &lt;product&gt;\n    &lt;name&gt;&lt;![CDATA[Brand Model 12345]]&gt;&lt;\/name&gt;\n    &lt;link&gt;https:\/\/yoursite.com\/product\/...&lt;\/link&gt;\n    &lt;price&gt;99.99&lt;\/price&gt;\n    &lt;category_full&gt;&lt;![CDATA[Parent &gt; Child]]&gt;&lt;\/category_full&gt;\n    &lt;category_link&gt;https:\/\/yoursite.com\/category\/...&lt;\/category_link&gt;\n    &lt;image&gt;https:\/\/yoursite.com\/wp-content\/uploads\/...&lt;\/image&gt;\n    &lt;in_stock&gt;5&lt;\/in_stock&gt;\n    &lt;brand&gt;&lt;![CDATA[Brand]]&gt;&lt;\/brand&gt;\n    &lt;model&gt;&lt;![CDATA[Model X]]&gt;&lt;\/model&gt;\n    &lt;color&gt;&lt;![CDATA[Black]]&gt;&lt;\/color&gt;\n    &lt;mpn&gt;ABC-123&lt;\/mpn&gt;\n    &lt;ean&gt;1234567890123&lt;\/ean&gt;\n  &lt;\/product&gt;\n&lt;\/products&gt;\n<\/code><\/pre>\n\n<p><strong>kurpirkt.lv:<\/strong><\/p>\n\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;root&gt;\n  &lt;item&gt;\n    &lt;name&gt;Apple iPhone 13 PRO 512GB black&lt;\/name&gt;\n    &lt;link&gt;https:\/\/yoursite.com\/product\/...&lt;\/link&gt;\n    &lt;price&gt;1200.59&lt;\/price&gt;\n    &lt;image&gt;https:\/\/yoursite.com\/wp-content\/uploads\/...&lt;\/image&gt;\n    &lt;manufacturer&gt;Apple&lt;\/manufacturer&gt;\n    &lt;category&gt;Mobilie telefoni&lt;\/category&gt;\n    &lt;category_full&gt;Sakaru l\u012bdzek\u013ci &gt; Mobilie telefoni&lt;\/category_full&gt;\n    &lt;category_link&gt;https:\/\/yoursite.com\/category\/...&lt;\/category_link&gt;\n    &lt;in_stock&gt;5&lt;\/in_stock&gt;\n    &lt;delivery_cost_riga&gt;2.25&lt;\/delivery_cost_riga&gt;\n    &lt;used&gt;0&lt;\/used&gt;\n  &lt;\/item&gt;\n&lt;\/root&gt;\n<\/code><\/pre>\n\n<p><strong>ceno.lv:<\/strong><\/p>\n\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;root&gt;\n  &lt;item&gt;\n    &lt;name&gt;Huawei P40 Pro Melns&lt;\/name&gt;\n    &lt;link&gt;https:\/\/yoursite.com\/product\/...&lt;\/link&gt;\n    &lt;price&gt;849.99&lt;\/price&gt;\n    &lt;price_sale&gt;799.99&lt;\/price_sale&gt;\n    &lt;image&gt;https:\/\/yoursite.com\/wp-content\/uploads\/...&lt;\/image&gt;\n    &lt;manufacturer&gt;Huawei&lt;\/manufacturer&gt;\n    &lt;model&gt;P40 pro&lt;\/model&gt;\n    &lt;category&gt;Mobilie telefoni&lt;\/category&gt;\n    &lt;category_full&gt;Telefoni-plansetdatori &gt; Mobilie telefoni&lt;\/category_full&gt;\n    &lt;category_link&gt;https:\/\/yoursite.com\/category\/...&lt;\/category_link&gt;\n    &lt;in_stock&gt;12&lt;\/in_stock&gt;\n    &lt;ean&gt;6901443378944&lt;\/ean&gt;\n    &lt;used&gt;0&lt;\/used&gt;\n    &lt;delivery_cost_riga&gt;2.99&lt;\/delivery_cost_riga&gt;\n    &lt;delivery_latvija&gt;5.99&lt;\/delivery_latvija&gt;\n    &lt;delivery_latvijas_pasts&gt;1&lt;\/delivery_latvijas_pasts&gt;\n    &lt;delivery_omniva&gt;1.50&lt;\/delivery_omniva&gt;\n    &lt;delivery_days_riga&gt;4&lt;\/delivery_days_riga&gt;\n    &lt;delivery_days_latvija&gt;6&lt;\/delivery_days_latvija&gt;\n  &lt;\/item&gt;\n&lt;\/root&gt;\n<\/code><\/pre>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin panel<\/li>\n<li>Navigate to Plugins &gt; Add New<\/li>\n<li>Search for \"BalticXML\"<\/li>\n<li>Click \"Install Now\" and then \"Activate\"<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Go to Plugins &gt; Add New &gt; Upload Plugin<\/li>\n<li>Upload the ZIP file and click \"Install Now\"<\/li>\n<li>Activate the plugin<\/li>\n<\/ol>\n\n<h4>After Installation<\/h4>\n\n<ol>\n<li>Make sure WooCommerce is installed and active<\/li>\n<li>Go to <strong>BalticXML<\/strong> in the admin menu<\/li>\n<li>Confirm the feed slugs and copy each feed URL<\/li>\n<li>Click \"Regenerate Feed Now\" to build the cache for the first time<\/li>\n<li>Submit each URL to the corresponding price comparison site<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20urls%20do%20i%20submit%3F\"><h3>What URLs do I submit?<\/h3><\/dt>\n<dd><p>Each portal has its own URL, all shown on the BalticXML settings page:<\/p>\n\n<ul>\n<li>salidzini.lv -&gt; <code>https:\/\/yoursite.com\/salidzini-feed.xml<\/code> (default)<\/li>\n<li>kurpirkt.lv -&gt; <code>https:\/\/yoursite.com\/kurpirkt-feed.xml<\/code> (default)<\/li>\n<li>ceno.lv -&gt; <code>https:\/\/yoursite.com\/ceno-feed.xml<\/code> (default; email it to info@ceno.lv after configuring)<\/li>\n<\/ul>\n\n<p>All slugs are configurable.<\/p><\/dd>\n<dt id=\"how%20often%20are%20the%20feeds%20updated%3F\"><h3>How often are the feeds updated?<\/h3><\/dt>\n<dd><p>All feeds are regenerated together on the same WP-Cron schedule. Default is daily; you can change it (hourly, every 6 hours, twice daily, daily, or disabled) in BalticXML settings.<\/p><\/dd>\n<dt id=\"are%20out-of-stock%20products%20included%3F\"><h3>Are out-of-stock products included?<\/h3><\/dt>\n<dd><p>By default they are excluded from all feeds. You can change this in BalticXML settings.<\/p><\/dd>\n<dt id=\"are%20product%20variations%20included%3F\"><h3>Are product variations included?<\/h3><\/dt>\n<dd><p>Yes - by default each variation is exported as a separate item in every feed, with the variation attributes appended to the name. You can disable this in settings.<\/p><\/dd>\n<dt id=\"how%20is%20the%20brand%20%2F%20manufacturer%20detected%3F\"><h3>How is the brand \/ manufacturer detected?<\/h3><\/dt>\n<dd><p>The plugin checks the <code>product_brand<\/code>, <code>pwb-brand<\/code> and <code>pa_brand<\/code> taxonomies, and the <code>brand<\/code> product attribute, in that order. The same source feeds <code>&lt;brand&gt;<\/code> (salidzini.lv) and <code>&lt;manufacturer&gt;<\/code> (kurpirkt.lv, ceno.lv).<\/p><\/dd>\n<dt id=\"how%20is%20the%20ean%2Fgtin%20detected%3F\"><h3>How is the EAN\/GTIN detected?<\/h3><\/dt>\n<dd><p>The plugin checks the meta keys <code>_ean<\/code>, <code>_gtin<\/code>, <code>_global_unique_id<\/code>, <code>_wc_gla_gtin<\/code> and the <code>ean<\/code> product attribute. (Used by salidzini.lv and ceno.lv. kurpirkt.lv does not require this field.)<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20the%20salidzini.lv-specific%20fields%20%28%60model%60%2C%20%60color%60%2C%20%60mpn%60%2C%20%60adult%60%2C%20%60over_the_counter_medicine%60%29%3F\"><h3>How do I set the salidzini.lv-specific fields (`model`, `color`, `mpn`, `adult`, `over_the_counter_medicine`)?<\/h3><\/dt>\n<dd><p>Use the matching product attributes (<code>model<\/code>, <code>color<\/code>\/<code>colour<\/code>, <code>mpn<\/code>, <code>adult<\/code>, <code>over_the_counter_medicine<\/code>) or the corresponding meta keys (<code>_model<\/code>, <code>_color<\/code>, <code>_mpn<\/code>, <code>_adult<\/code>, <code>_over_the_counter_medicine<\/code> \/ <code>_otc<\/code>). They are all optional - emitted only when set.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20the%20kurpirkt.lv-specific%20fields%20%28%60delivery_cost_riga%60%2C%20%60used%60%29%3F\"><h3>How do I set the kurpirkt.lv-specific fields (`delivery_cost_riga`, `used`)?<\/h3><\/dt>\n<dd><ul>\n<li><code>delivery_cost_riga<\/code> - set the meta key <code>_delivery_cost_riga<\/code> or add a <code>delivery_cost_riga<\/code> product attribute (numeric).<\/li>\n<li><code>used<\/code> - set the meta key <code>_used<\/code> to <code>1<\/code> or add a <code>used<\/code> product attribute set to <code>1<\/code> \/ <code>yes<\/code> \/ <code>true<\/code>.<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20do%20i%20set%20the%20ceno.lv%20delivery%20and%20used%20fields%3F\"><h3>How do I set the ceno.lv delivery and used fields?<\/h3><\/dt>\n<dd><p>For each delivery field, set either a meta key prefixed with <code>_<\/code> or a product attribute (without the prefix):<\/p>\n\n<ul>\n<li><code>delivery_cost_riga<\/code>, <code>delivery_latvija<\/code> - max delivery cost in Riga \/ Latvia (decimal)<\/li>\n<li><code>delivery_latvijas_pasts<\/code>, <code>delivery_dpd_paku_bode<\/code>, <code>delivery_pasta_stacija<\/code>, <code>delivery_omniva<\/code>, <code>delivery_circlek<\/code>, <code>delivery_venipak<\/code> - per-carrier delivery cost (decimal)<\/li>\n<li><code>delivery_days_riga<\/code>, <code>delivery_days_latvija<\/code> - max delivery days in Riga \/ Latvia (integer)<\/li>\n<li><code>used<\/code> - set to <code>1<\/code> for used \/ refurbished products<\/li>\n<\/ul>\n\n<p>All ceno.lv fields are optional - they are emitted only when a numeric\/non-empty value is configured.<\/p><\/dd>\n<dt id=\"is%20it%20translation%20ready%3F\"><h3>Is it translation ready?<\/h3><\/dt>\n<dd><p>Yes. Text domain is <code>balticxml<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>salidzini.lv compatible XML feed (<code>&lt;products&gt;\/&lt;product&gt;<\/code> schema)<\/li>\n<li>kurpirkt.lv compatible XML feed (<code>&lt;root&gt;\/&lt;item&gt;<\/code> schema)<\/li>\n<li>ceno.lv compatible XML feed (<code>&lt;root&gt;\/&lt;item&gt;<\/code> schema with extended delivery fields)<\/li>\n<li>Per-format cache files with shared WP-Cron regeneration<\/li>\n<li>Simple, variable and external product support<\/li>\n<li>Brand \/ manufacturer and EAN auto-detection<\/li>\n<li>Customizable feed slugs per portal<\/li>\n<li>HPOS compatible<\/li>\n<li>Translation ready<\/li>\n<\/ul>","raw_excerpt":"XML product feeds for WooCommerce, formatted for Latvian price comparison sites: salidzini.lv, kurpirkt.lv and ceno.lv.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/310400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=310400"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/veidenbaums"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=310400"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=310400"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=310400"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=310400"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=310400"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=310400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}