{"id":369080,"date":"2026-09-20T08:19:48","date_gmt":"2026-09-20T08:19:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sidrena-cijena\/"},"modified":"2026-09-21T09:43:21","modified_gmt":"2026-09-21T09:43:21","slug":"mjdd-sidrena-cijena","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mjdd-sidrena-cijena\/","author":23150823,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.13.0","stable_tag":"1.13.0","tested":"7.1.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"MJDD Sidrena Cijena","header_author":"Jure Zadravec \/ MJDD","header_description":"MJDD plugin for Croatian sidrena (base\/anchor) prices on WooCommerce products and variations.","assets_banners_color":"f3f2ef","last_updated":"2026-09-21 09:43:21","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/mjdd.hr","header_plugin_uri":"https:\/\/mjdd.hr\/sidrena-cijena\/","header_author_uri":"https:\/\/mjdd.hr","rating":0,"author_block_rating":0,"active_installs":30,"downloads":224,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.10.1":{"tag":"1.10.1","author":"juremjdd","date":"2026-09-20 08:26:10","revision":3704026},"1.12.0":{"tag":"1.12.0","author":"juremjdd","date":"2026-09-20 08:49:47","revision":3704044},"1.12.1":{"tag":"1.12.1","author":"juremjdd","date":"2026-09-20 19:28:49","revision":3704565},"1.12.2":{"tag":"1.12.2","author":"juremjdd","date":"2026-09-21 07:21:22","revision":3705015},"1.13.0":{"tag":"1.13.0","author":"juremjdd","date":"2026-09-21 09:43:21","revision":3705272}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3704026,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3704026,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3704026,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3704026,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3704026,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.10.1","1.12.0","1.12.1","1.12.2","1.13.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3704026,"resolution":"1","location":"assets","locale":"","width":1024,"height":576}},"screenshots":{"1":"Sidrena cijena on a WooCommerce product: regular price, sale price, and the sidrena line with tooltip."}},"plugin_section":[],"plugin_tags":[281672,267196,177112,281671,286],"plugin_category":[45],"plugin_contributors":[234172],"plugin_business_model":[],"class_list":["post-369080","plugin","type-plugin","status-publish","hentry","plugin_tags-bazna-cijena","plugin_tags-consumer-protection","plugin_tags-croatia","plugin_tags-sidrena-cijena","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-juremjdd","plugin_committers-juremjdd"],"banners":{"banner":"https:\/\/ps.w.org\/mjdd-sidrena-cijena\/assets\/banner-772x250.jpg?rev=3704026","banner_2x":"https:\/\/ps.w.org\/mjdd-sidrena-cijena\/assets\/banner-1544x500.jpg?rev=3704026","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/mjdd-sidrena-cijena\/assets\/icon.svg?rev=3704026","icon":"https:\/\/ps.w.org\/mjdd-sidrena-cijena\/assets\/icon.svg?rev=3704026","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mjdd-sidrena-cijena\/assets\/screenshot-1.jpg?rev=3704026","caption":"Sidrena cijena on a WooCommerce product: regular price, sale price, and the sidrena line with tooltip."}],"raw_content":"<!--section=description-->\n<p>With WooCommerce active, MJDD Sidrena Cijena stores each product and variation regular price in its own field and shows it next to the current price. Without WooCommerce, you enter products in a repeater and publish the same XML\/CSV feed plus a public HTML pricelist at <code>\/sidrena-cjenik<\/code>.<\/p>\n\n<p>The prefix is text only; the date is added automatically in one of two formats:<\/p>\n\n<pre><code>Sidrena cijena (10.09.2026.) : 19,99 \u20ac\nSidrena cijena na 10.09.2026. : 19,99 \u20ac\n<\/code><\/pre>\n\n<p>Hovering the row shows a tooltip with an explanation (can be turned off). The prefix and tooltip can be translated with WPML, Polylang, TranslatePress, or Loco Translate.<\/p>\n\n<p>The line under the product price has the CSS class <code>sidrena-cijena<\/code> so you can style it in the theme or Customizer (Appearance \u2192 Customize \u2192 Additional CSS). The default size is 14px (12px on mobile), without bold.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Works with WooCommerce, or standalone on a plain WordPress site<\/li>\n<li>Snapshot of the regular price on activation (does not overwrite values already entered)<\/li>\n<li>Display follows WooCommerce tax settings (same VAT treatment as the regular price)<\/li>\n<li>Filter <code>sidrena_cijena_price_to_display<\/code> when MPC is calculated outside WooCommerce Tax<\/li>\n<li>Field below the sale price on simple products and on every variation<\/li>\n<li>WooCommerce \u2192 Sidrena cijena tabs: Settings, Import\/Export, Public feed (top-level menu when Woo is not active)<\/li>\n<li>Without Woo: product repeater (name, SKU, URL, regular, sale, sidrena) feeding the same export; each row has <code>[sidrena-cijena id=\"x\"]<\/code> for pages<\/li>\n<li>Without Woo: public HTML pricelist at <code>\/sidrena-cjenik<\/code><\/li>\n<li>Prefix without a date; storefront format: <code>Prefix (date)<\/code> or <code>Prefix date<\/code> (the word \u201cna\u201d belongs in the prefix)<\/li>\n<li>Default reference date plus an optional per-product date (FMCG 02.05.2025. vs other goods 10.09.2026.)<\/li>\n<li>Tooltip on hover of the whole row (switch, on by default)<\/li>\n<li>Prefix and tooltip translations in WPML, Polylang, TranslatePress, or Loco Translate<\/li>\n<li>Export of the price list and of products missing a sidrena price (CSV or XML)<\/li>\n<li>Bulk import CSV\/XML by SKU, with price column mapping (creates catalog rows when Woo is off)<\/li>\n<li>Public price list at <code>\/sidrena-cijena.xml<\/code> or <code>\/sidrena-cijena.csv<\/code> (choose format in settings; manual or daily after 00:05)<\/li>\n<li>Public feed always includes <code>dostupno<\/code>\/<code>nedostupno<\/code> from stock and barcode from GTIN, UPC, EAN or ISBN<\/li>\n<li>30-day archive at <code>\/arhiva-sidrene-cijene<\/code> (<code>OBLIK_ADRESA_OZNAKA_POHRANA_YYYYMMDD_HHMM.xml<\/code> or <code>.csv<\/code>)<\/li>\n<li>Optional unit-price (CJM) switch on the product, appended to the prefix, e.g. \u201cza kg\/l\u201d<\/li>\n<li>Automatic display below the price (can be turned off; the shortcode remains)<\/li>\n<li>Shortcode <code>[sidrena-cijena]<\/code> for product loops and custom templates (<code>[sidrena-cijena id=\"123\"]<\/code>)<\/li>\n<li>Universal hook: <code>do_action( 'sidrena_cijena' );<\/code> or <code>sidrena_cijena();<\/code><\/li>\n<li>WooCommerce CSV product import \/ export columns<\/li>\n<li>HPOS compatibility<\/li>\n<\/ul>\n\n<p>Development: MJDD \/ Jure Zadravec - https:\/\/mjdd.hr<\/p>\n\n<p>This is not legal advice.<\/p>\n\n<h3>WP-CLI<\/h3>\n\n<p>The admin <strong>Fill empty fields<\/strong> button processes 40 products per AJAX request. For a full catalog:<\/p>\n\n<pre><code>wp sidrena-cijena status\nwp sidrena-cijena fill --dry-run\nwp sidrena-cijena fill\nwp sidrena-cijena fill --today\n<\/code><\/pre>\n\n<p>Default fill is a SQL copy of <code>_regular_price<\/code> into empty <code>_sidrena_cijena<\/code> (does not overwrite values already stored). Variable\/grouped parents are skipped; variations are filled. <code>--today<\/code> also writes today's date as the per-product reference date when that field is empty (products first put on sale after 10.09.2026.).<\/p>\n\n<pre><code>wp sidrena-cijena fill --safe uses WooCommerce product objects (same as the admin button, slower). Fallback: `wp eval-file wp-content\/plugins\/sidrena-cijena\/bin\/fill.php`&lt;h3&gt;Tax (VAT)&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>The sidrena price is stored in the same form as the WooCommerce regular price. On the storefront the plugin uses <code>wc_get_price_to_display()<\/code>, so the display follows WooCommerce \u2192 Settings \u2192 Tax (entered including or excluding tax, shop display with or without VAT). You do not need to re-enter prices after an update.<\/p>\n\n<p>If the shop shows MPC with a custom VAT calculation (not WooCommerce Tax), hook <code>sidrena_cijena_price_to_display<\/code> so the sidrena amount matches the regular price. See <strong>Hook and shortcode<\/strong>.<\/p>\n\n<h3>Settings<\/h3>\n\n<p>Sidrena cijena settings (WooCommerce submenu, or a top-level menu without Woo):<\/p>\n\n<ul>\n<li><strong>Automatic sidrena price display<\/strong> - Woo only; below the current price; when off, only <code>[sidrena-cijena]<\/code> \/ <code>[sidrena-cijena id=\"x\"]<\/code> remain<\/li>\n<li><strong>Prefix<\/strong> - words only, e.g. <code>Sidrena cijena<\/code> (do not type the date here)<\/li>\n<li><strong>Date format<\/strong> - <code>Prefix (date)<\/code> or <code>Prefix date<\/code> (e.g. put <code>Sidrena cijena na<\/code> in the prefix)<\/li>\n<li><strong>Default reference date<\/strong> - e.g. <code>10.09.2026.<\/code> (used for every product without its own date)<\/li>\n<li><strong>Per-product reference date<\/strong> - Woo only; leave empty for the default; for FMCG enter <code>02.05.2025.<\/code><\/li>\n<li><strong>Tooltip<\/strong> - switch and text (translate in WPML \/ Polylang \/ Loco)<\/li>\n<li><strong>CJM<\/strong> - Woo only<\/li>\n<li><strong>Products<\/strong> tab (without Woo) - repeater for the public pricelist. Required: name, regular price, sidrena price. Saved as one JSON field to avoid <code>max_input_vars<\/code> limits.<\/li>\n<li>At the bottom of the Woo settings tab: <strong>Fill empty fields from the regular price<\/strong> - empty fields only; existing sidrena values are left alone. The date stays the shop default (e.g. 10.09.2026.). <strong>Fill empty sidrena prices with today's date<\/strong> - same fill, plus today's date on products that have no date yet (new products after the reference day). Empty-field snapshot also runs on activation. Saving a product does not fill sidrena automatically. For large catalogs use WP-CLI: <code>wp sidrena-cijena fill<\/code> or <code>wp sidrena-cijena fill --today<\/code> (see <strong>WP-CLI<\/strong>).<\/li>\n<li><strong>Delete all data and deactivate<\/strong> - removes sidrena prices, standalone catalog, settings, public XML and archive, then deactivates the plugin. Cannot be undone.<\/li>\n<\/ul>\n\n<h3>Import \/ export<\/h3>\n\n<p><strong>Import\/Export<\/strong> tab:<\/p>\n\n<ul>\n<li><strong>Bulk import<\/strong> - CSV or XML. With Woo: match by SKU (choose the column\/node). Regular, sale, and sidrena prices are mapped separately; the default is <strong>Do not import<\/strong>. Import does not create Woo products, it only updates existing ones. Without Woo: rows with a matching SKU are updated, other rows are appended to the catalog (name, regular, and sidrena are required for new rows). Empty cells are skipped. The progress bar uses AJAX batches.<\/li>\n<li><strong>Export price list<\/strong> - all products and variations (or standalone catalog rows): <code>naziv<\/code>, <code>sku<\/code>, <code>cijena_redovna<\/code>, <code>cijena_akcijska<\/code>, <code>sidrena_cijena<\/code><\/li>\n<li><strong>Export products without a sidrena price<\/strong> - same columns, only rows where sidrena is empty<\/li>\n<li>Sidrena price, date, and CJM remain columns in WooCommerce <strong>Products \u2192 Import\/Export<\/strong> (for the catalog, not for the price list itself)<\/li>\n<\/ul>\n\n<p>After importing sidrena prices, regenerate the public feed if you use it.<\/p>\n\n<h3>Public feed<\/h3>\n\n<p><strong>Public feed<\/strong> tab. Price list of published products and variations (or the standalone catalog): <code>https:\/\/shop.example\/sidrena-cijena.xml<\/code> or <code>.csv<\/code> (format is a setting; default XML).<\/p>\n\n<p>Fields: <code>id<\/code>, <code>naziv<\/code>, <code>sku<\/code>, <code>url<\/code>, <code>cijena_redovna<\/code>, <code>cijena_akcijska<\/code>, <code>sidrena_cijena<\/code>, <code>barkod<\/code>, <code>dostupnost<\/code>. Barcode is read from WooCommerce GTIN\/UPC\/EAN\/ISBN (<code>_global_unique_id<\/code>). Availability is always <code>dostupno<\/code> or <code>nedostupno<\/code> from stock status (no setting to turn this off).<\/p>\n\n<p>Generated with the \u201cGenerate public feed\u201d button, on the first visit to the URL, or daily after 00:05 (on by default; WordPress timezone, so the file is ready before 08:00). The file is stored in <code>wp-content\/uploads\/sidrena-cijena\/<\/code>.<\/p>\n\n<p>The daily cron also stores a legally named file in the archive, following the HOK webinar template <code>OBLIK_ADRESA_OZNAKA_POHRANA_YYYYMMDD_HHMM.xml<\/code> (date YYYYMMDD, time HHMM; 30 files maximum; the oldest is deleted). Older <code>sidrena-cijena_DD-MM-YYYY<\/code> files stay listed. HTML listing: <code>https:\/\/shop.example\/arhiva-sidrene-cijene\/<\/code>. Set store type, address and object code on the Public feed tab.<\/p>\n\n<p>Without WooCommerce, a searchable HTML pricelist is also published at <code>https:\/\/shop.example\/sidrena-cjenik\/<\/code>.<\/p>\n\n<h3>CJM<\/h3>\n\n<p>In settings, enable \u201cEnable CJM switch\u201d. On the product and variation, next to the sidrena price, a <strong>CJM<\/strong> switch appears. When it is on, you enter a prefix suffix (e.g. <code>za kg\/l<\/code>).<\/p>\n\n<pre><code>Sidrena cijena + `za kg\/l` + parentheses format = `Sidrena cijena za kg\/l (10.09.2026.)`\nSidrena cijena + `za kg\/l` + \u201cna\u201d format = `Sidrena cijena za kg\/l na 10.09.2026.`&lt;h3&gt;Compatibility&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>Works alongside the Croatian 30-day Omnibus plugins <strong>WooCommerce Lowest Price<\/strong> by Igor Kova\u010di\u0107 (1.x) and Media X \/ Borko Livi\u0107 (2.x). Sidrena cijena is the fixed reference price; those plugins show the lowest price in the last 30 days while a product is on sale. When both are active the storefront order is: current price \u2192 sidrena cijena \u2192 30-day lowest price, without a duplicate sidrena line.<\/p>\n\n<p>The core filter is <code>woocommerce_get_price_html<\/code> (priority 9999). It covers Storefront, Astra, GeneratePress, OceanWP, Kadence, Blocksy, and most themes that call <code>$product-&gt;get_price_html()<\/code>.<\/p>\n\n<p>Builders that often skip that filter have extra PHP hooks plus JS injection into their <code>.price<\/code> container:<\/p>\n\n<ul>\n<li><strong>Elementor \/ AnyWhere Elementor<\/strong> - widget <code>woocommerce-product-price<\/code><\/li>\n<li><strong>JetWooBuilder \/ ShopEngine<\/strong> - <code>jet-single-price<\/code>, <code>shopengine-product-price<\/code><\/li>\n<li><strong>WPBakery<\/strong> - shortcode <code>[product_price]<\/code>, wrapper <code>.wpb_wrapper &gt; p.price<\/code><\/li>\n<li><strong>Oxygen<\/strong> - Product Price element (<code>.oxy-product-price<\/code>)<\/li>\n<li><strong>Divi 4 \/ Divi 5<\/strong> - module <code>et_pb_wc_price<\/code> \/ block <code>divi\/wc-product-price<\/code><\/li>\n<li><strong>Bricks<\/strong> - element <code>product-price<\/code><\/li>\n<li><strong>Beaver Builder<\/strong> - WooCommerce price module<\/li>\n<li><strong>Breakdance \/ Brizy<\/strong> - CSS selectors for price elements<\/li>\n<li><strong>Avada \/ Fusion<\/strong> - Woo Price theme builder element<\/li>\n<li><strong>Woodmart \/ Flatsome<\/strong> - <code>.wd-single-price<\/code>, <code>.product-page-price<\/code><\/li>\n<li><strong>WooCommerce Blocks<\/strong> - <code>woocommerce\/product-price<\/code><\/li>\n<\/ul>\n\n<p>If a theme still does not show the line, put the shortcode or hook below the price in the template or loop.<\/p>\n\n<h3>Hook and shortcode<\/h3>\n\n<p>Output goes through <code>woocommerce_get_price_html<\/code> (product page, shop, archive, related products \u2014 anywhere the theme calls <code>get_price_html()<\/code>), Woo blocks, and popular page builders.<\/p>\n\n<p>For custom product loops (Elementor, page builder, custom PHP) use:<\/p>\n\n<pre><code>[sidrena-cijena]\n[sidrena-cijena id=\"123\"]\n<\/code><\/pre>\n\n<p>Without WooCommerce, <code>[sidrena-cijena id=\"123\"]<\/code> prints that catalog row\u2019s current price and sidrena line, so you can paste it once on a page and only change prices in Sidrena cijena \u2192 Proizvodi.<\/p>\n\n<p>In a PHP template:<\/p>\n\n<pre><code>echo do_shortcode( '[sidrena-cijena]' );\ndo_action( 'sidrena_cijena' );\nsidrena_cijena();\nsidrena_cijena( $product );\n<\/code><\/pre>\n\n<p>Filter the storefront amount after WooCommerce tax display. Arguments: <code>$amount<\/code> (float), <code>$product<\/code> (<code>WC_Product<\/code>), <code>$raw<\/code> (stored sidrena string, same basis as <code>_regular_price<\/code>). Does not change the value stored in the product field.<\/p>\n\n<pre><code>`\n<\/code><\/pre>\n\n<p>add_filter( 'sidrena_cijena_price_to_display', function( $amount, $product, $raw ) {\n    return (float) $amount * 1.25;\n}, 10, 3 );\n    <code>&lt;h3&gt;Custom CSS&lt;\/h3&gt;\nThe line under the product price has the class<\/code>sidrena-cijena<code>. Use it for color, size, or alignment. The tooltip is on hover\/focus of the whole row (no \u201ci\u201d icon). Default: 14px \/ 12px on mobile,<\/code>font-weight: 400`.<\/p>\n\n<p>HTML structure:<\/p>\n\n<pre><code>&lt;span class=\"sidrena-cijena sidrena-cijena--has-tooltip\"&gt;\n  &lt;span class=\"sidrena-cijena__text\"&gt;\u2026&lt;\/span&gt;\n  &lt;span class=\"sidrena-cijena__tooltip\"&gt;\u2026&lt;\/span&gt;\n&lt;\/span&gt;\n<\/code><\/pre>\n\n<p>Classes:<\/p>\n\n<ul>\n<li><code>.sidrena-cijena<\/code> - the whole row under the product price (main class for styling)<\/li>\n<li><code>.sidrena-cijena__prefix<\/code> - prefix text with the date (e.g. Sidrena cijena (10.09.2026.))<\/li>\n<li><code>.sidrena-cijena__sep<\/code> - colon between prefix and amount<\/li>\n<li><code>.sidrena-cijena__amount<\/code> - sidrena price amount<\/li>\n<li><code>.sidrena-cijena__tooltip<\/code> - tooltip text (hover\/focus on the whole row, no icon)<\/li>\n<li><code>.sidrena-cijena--variable<\/code> - variable product while no variation is selected<\/li>\n<\/ul>\n\n<p>Example:<\/p>\n\n<pre><code>.sidrena-cijena { font-size: 14px; color: #555; }\n.sidrena-cijena__amount { font-weight: 700; color: #111; }\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Copy the <code>sidrena-cijena<\/code> folder to <code>wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin.<\/li>\n<\/ol>\n\n<p><strong>With WooCommerce<\/strong><\/p>\n\n<ol>\n<li>WooCommerce \u2192 Sidrena cijena \u2192 <strong>Settings<\/strong>: prefix, date format, default date, tooltip.<\/li>\n<li>Edit the sidrena price and date on a product if needed (below the sale price).<\/li>\n<li><strong>Import\/Export<\/strong>: export the price list or bulk-import CSV\/XML by SKU.<\/li>\n<li><strong>Public feed<\/strong>: choose XML or CSV, generate <code>\/sidrena-cijena.xml<\/code> or <code>\/sidrena-cijena.csv<\/code>, or leave daily regeneration after 00:05. The archive is at <code>\/arhiva-sidrene-cijene<\/code>.<\/li>\n<\/ol>\n\n<p><strong>Without WooCommerce<\/strong><\/p>\n\n<ol>\n<li>Sidrena cijena \u2192 <strong>Proizvodi<\/strong>: add rows (name, SKU, URL, regular price, sale price, sidrena price) or import CSV\/XML. Copy <code>[sidrena-cijena id=\"x\"]<\/code> from a row onto any page so prices stay in admin.<\/li>\n<li><strong>Settings<\/strong>: prefix, date format, default date, tooltip.<\/li>\n<li>Public HTML pricelist: <code>\/sidrena-cjenik<\/code>. XML\/CSV feed and 30-day archive work the same as with Woo.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.13.0<\/h4>\n\n<ul>\n<li>Standalone catalog: copy \/ trash \/ add-row icons, and a per-row <code>[sidrena-cijena id=\"x\"]<\/code> shortcode for non-Woo pages.<\/li>\n<li>Public feed always includes <code>dostupno<\/code>\/<code>nedostupno<\/code> from WooCommerce stock and barcode from GTIN, UPC, EAN or ISBN.<\/li>\n<\/ul>\n\n<h4>1.12.2<\/h4>\n\n<ul>\n<li>Variable products: stop the MutationObserver loop that froze the product page after selecting a variation.<\/li>\n<li>Update the sidrena line when switching variations instead of keeping the first variation\u2019s price.<\/li>\n<\/ul>\n\n<h4>1.12.1<\/h4>\n\n<ul>\n<li>Variable products: do not strip the selected variation\u2019s sidrena line. Dedupe stays inside the price node, not the whole <code>.summary<\/code>.<\/li>\n<\/ul>\n\n<h4>1.12.0<\/h4>\n\n<ul>\n<li>Public archive filenames follow the HOK webinar template: <code>OBLIK_ADRESA_OZNAKA_POHRANA_YYYYMMDD_HHMM<\/code> (date format YYYYMMDD, time HHMM).<\/li>\n<li>Daily regeneration runs after 00:05 so the day's pricelist is published before the 08:00 deadline.<\/li>\n<li>Public feed settings: store type, address, object code, and storage sequence.<\/li>\n<\/ul>\n\n<h4>1.11.0<\/h4>\n\n<ul>\n<li>Works without WooCommerce: product repeater, same XML\/CSV feed, public HTML pricelist at <code>\/sidrena-cjenik<\/code>.<\/li>\n<li>Polylang: <code>pll_translate_string()<\/code> is called with the language code (or <code>pll__()<\/code>), fixing a PHP 8 critical error.<\/li>\n<\/ul>\n\n<h4>1.10.1<\/h4>\n\n<ul>\n<li>CSV exports neutralize spreadsheet formula prefixes (=, +, -, @, tab, CR) to prevent formula injection from product data.<\/li>\n<li>Direct file access guards on remaining PHP entry points (ABSPATH).<\/li>\n<\/ul>\n\n<h4>1.10.0<\/h4>\n\n<ul>\n<li>Public feed format setting: XML or CSV (<code>\/sidrena-cijena.xml<\/code> or <code>\/sidrena-cijena.csv<\/code>). Archive files keep the type they were generated as.<\/li>\n<\/ul>\n\n<h4>1.9.9<\/h4>\n\n<ul>\n<li>Directory identity: MJDD Sidrena Cijena (slug mjdd-sidrena-cijena). Product meta, settings, shortcode, and storefront CSS class are unchanged.<\/li>\n<li>Public archive CSS is registered and printed via WordPress style APIs.<\/li>\n<li>Uploads paths use wp_upload_dir() only.<\/li>\n<\/ul>\n\n<h4>1.9.8<\/h4>\n\n<ul>\n<li>Settings button to fill empty sidrena prices with today's date (products added after 10.09.2026.). WP-CLI: <code>wp sidrena-cijena fill --today<\/code>.<\/li>\n<\/ul>\n\n<h4>1.9.7<\/h4>\n\n<ul>\n<li>Settings action to delete all plugin data and deactivate the plugin.<\/li>\n<\/ul>\n\n<h4>1.9.6<\/h4>\n\n<ul>\n<li>Filter <code>sidrena_cijena_price_to_display<\/code> for shops that add VAT outside WooCommerce Tax.<\/li>\n<\/ul>\n\n<h4>1.9.5<\/h4>\n\n<ul>\n<li>Compatible with WooCommerce Lowest Price by Igor Kova\u010di\u0107 and Media X (Borko Livi\u0107): one sidrena line, placed above the 30-day lowest price.<\/li>\n<\/ul>\n\n<h4>1.9.4<\/h4>\n\n<ul>\n<li>English readme for the WordPress.org Plugin Directory.<\/li>\n<li>CSV export no longer uses direct fclose() on php:\/\/output.<\/li>\n<\/ul>\n\n<h4>1.9.3<\/h4>\n\n<ul>\n<li>Prefix and tooltip are translated per language (WPML, Polylang, TranslatePress, Loco).<\/li>\n<li>Tooltip switch, on by default.<\/li>\n<li>Automatic display switch; when off, only the shortcode remains.<\/li>\n<\/ul>\n\n<h4>1.9.2<\/h4>\n\n<ul>\n<li>Admin REST\/AJAX no longer triggers public XML generation or a permalink flush.<\/li>\n<li>Date format: Prefix (date) or Prefix date. The word \u201cna\u201d belongs in the prefix, not as a separate option.<\/li>\n<\/ul>\n\n<h4>1.9.1<\/h4>\n\n<ul>\n<li>Prefix preview in settings updates immediately when the date format changes.<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>Sidrena price is always shown below the price; the \u201conly on sale\u201d option was removed.<\/li>\n<li>Shortcode [sidrena-cijena] for product loops.<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>30-day public XML archive at \/arhiva-sidrene-cijene (cron at 08:00).<\/li>\n<li>Sidrena price is no longer filled automatically when saving a product.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Public XML: \u201cRegenerate public XML daily at 08:00\u201d option (on by default).<\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>Storefront format: Prefix (date) or Prefix na date.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Bulk CSV\/XML import by SKU, price mapping, and AJAX progress bar.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Admin split into Settings, Import\/Export, and Public XML tabs.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Storefront sidrena price uses WooCommerce tax display. If prices are entered without VAT and the shop shows prices with VAT, sidrena no longer stays as a net amount.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Prefix is text only (Sidrena cijena); the date is added from the default or the product date.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Sidrena price: 14px on desktop, 12px on mobile.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Public XML price list at \/sidrena-cijena.xml, regeneration from WooCommerce \u2192 Sidrena cijena.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Sidrena price is no longer bold (Elementor Product Price).<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Removed the \u201ci\u201d icon; the tooltip stays on hover of the whole row.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Compatibility for Elementor, WPBakery, Oxygen, Divi, Bricks, Beaver, Avada, Woodmart, Flatsome, JetWooBuilder, and Woo blocks.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Sidrena price also shows in the Elementor Product Price widget.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Price list and audit export (CSV\/XML) in settings.<\/li>\n<li>CJM switch and prefix suffix on products.<\/li>\n<li>Universal display hook next to WooCommerce blocks.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"MJDD plugin for Croatian sidrena (base\/anchor) prices: WooCommerce products, or a standalone public pricelist without Woo.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/369080","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=369080"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/juremjdd"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=369080"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=369080"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=369080"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=369080"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=369080"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=369080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}