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 /sidrena-cjenik.
The prefix is text only; the date is added automatically in one of two formats:
Sidrena cijena (10.09.2026.) : 19,99 €
Sidrena cijena na 10.09.2026. : 19,99 €
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.
The line under the product price has the CSS class sidrena-cijena so you can style it in the theme or Customizer (Appearance Customize Additional CSS). The default size is 14px (12px on mobile), without bold.
sidrena_cijena_price_to_display when MPC is calculated outside WooCommerce Tax/sidrena-cjenikPrefix (date) or Prefix date (the word “na” belongs in the prefix)/sidrena-cijena.xml or /sidrena-cijena.csv (choose format in settings; manual or daily after 00:05)/arhiva-sidrene-cijene (OBLIK_ADRESA_OZNAKA_POHRANA_YYYYMMDD_HHMM.xml or .csv)[sidrena-cijena] for product loops and custom templates ([sidrena-cijena id="123"])do_action( 'sidrena_cijena' ); or sidrena_cijena();Development: MJDD / Jure Zadravec – https://mjdd.hr
This is not legal advice.
The admin Fill empty fields button processes 40 products per AJAX request. For a full catalog:
wp sidrena-cijena status
wp sidrena-cijena fill --dry-run
wp sidrena-cijena fill
wp sidrena-cijena fill --today
Default fill is a SQL copy of _regular_price into empty _sidrena_cijena (does not overwrite values already stored). Variable/grouped parents are skipped; variations are filled. --today 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.).
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`<h3>Tax (VAT)</h3>
The sidrena price is stored in the same form as the WooCommerce regular price. On the storefront the plugin uses wc_get_price_to_display(), so the display follows WooCommerce Settings Tax (entered including or excluding tax, shop display with or without VAT). You do not need to re-enter prices after an update.
If the shop shows MPC with a custom VAT calculation (not WooCommerce Tax), hook sidrena_cijena_price_to_display so the sidrena amount matches the regular price. See Hook and shortcode.
Sidrena cijena settings (WooCommerce submenu, or a top-level menu without Woo):
[sidrena-cijena] / [sidrena-cijena id="x"] remainSidrena cijena (do not type the date here)Prefix (date) or Prefix date (e.g. put Sidrena cijena na in the prefix)10.09.2026. (used for every product without its own date)02.05.2025.max_input_vars limits.wp sidrena-cijena fill or wp sidrena-cijena fill --today (see WP-CLI).Import/Export tab:
naziv, sku, cijena_redovna, cijena_akcijska, sidrena_cijenaAfter importing sidrena prices, regenerate the public feed if you use it.
Public feed tab. Price list of published products and variations (or the standalone catalog): https://shop.example/sidrena-cijena.xml or .csv (format is a setting; default XML).
Fields: id, naziv, sku, url, cijena_redovna, cijena_akcijska, sidrena_cijena.
Generated with the “Generate public feed” 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 wp-content/uploads/sidrena-cijena/.
The daily cron also stores a legally named file in the archive, following the HOK webinar template OBLIK_ADRESA_OZNAKA_POHRANA_YYYYMMDD_HHMM.xml (date YYYYMMDD, time HHMM; 30 files maximum; the oldest is deleted). Older sidrena-cijena_DD-MM-YYYY files stay listed. HTML listing: https://shop.example/arhiva-sidrene-cijene/. Set store type, address and object code on the Public feed tab.
Without WooCommerce, a searchable HTML pricelist is also published at https://shop.example/sidrena-cjenik/.
In settings, enable “Enable CJM switch”. On the product and variation, next to the sidrena price, a CJM switch appears. When it is on, you enter a prefix suffix (e.g. za kg/l).
Sidrena cijena + `za kg/l` + parentheses format = `Sidrena cijena za kg/l (10.09.2026.)`
Sidrena cijena + `za kg/l` + “na” format = `Sidrena cijena za kg/l na 10.09.2026.`<h3>Compatibility</h3>
Works alongside the Croatian 30-day Omnibus plugins WooCommerce Lowest Price by Igor Kovačić (1.x) and Media X / Borko Livić (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 sidrena cijena 30-day lowest price, without a duplicate sidrena line.
The core filter is woocommerce_get_price_html (priority 9999). It covers Storefront, Astra, GeneratePress, OceanWP, Kadence, Blocksy, and most themes that call $product->get_price_html().
Builders that often skip that filter have extra PHP hooks plus JS injection into their .price container:
woocommerce-product-pricejet-single-price, shopengine-product-price[product_price], wrapper .wpb_wrapper > p.price.oxy-product-price)et_pb_wc_price / block divi/wc-product-priceproduct-price.wd-single-price, .product-page-pricewoocommerce/product-priceIf a theme still does not show the line, put the shortcode or hook below the price in the template or loop.
Output goes through woocommerce_get_price_html (product page, shop, archive, related products — anywhere the theme calls get_price_html()), Woo blocks, and popular page builders.
For custom product loops (Elementor, page builder, custom PHP) use:
[sidrena-cijena]
[sidrena-cijena id="123"]
In a PHP template:
echo do_shortcode( '[sidrena-cijena]' );
do_action( 'sidrena_cijena' );
sidrena_cijena();
sidrena_cijena( $product );
Filter the storefront amount after WooCommerce tax display. Arguments: $amount (float), $product (WC_Product), $raw (stored sidrena string, same basis as _regular_price). Does not change the value stored in the product field.
`
add_filter( ‘sidrena_cijena_price_to_display’, function( $amount, $product, $raw ) {
return (float) $amount * 1.25;
}, 10, 3 );
<h3>Custom CSS</h3>sidrena-cijena
The line under the product price has the class. Use it for color, size, or alignment. The tooltip is on hover/focus of the whole row (no “i” icon). Default: 14px / 12px on mobile,font-weight: 400`.
HTML structure:
<span class="sidrena-cijena sidrena-cijena--has-tooltip">
<span class="sidrena-cijena__text">…</span>
<span class="sidrena-cijena__tooltip">…</span>
</span>
Classes:
.sidrena-cijena – the whole row under the product price (main class for styling).sidrena-cijena__prefix – prefix text with the date (e.g. Sidrena cijena (10.09.2026.)).sidrena-cijena__sep – colon between prefix and amount.sidrena-cijena__amount – sidrena price amount.sidrena-cijena__tooltip – tooltip text (hover/focus on the whole row, no icon).sidrena-cijena--variable – variable product while no variation is selectedExample:
.sidrena-cijena { font-size: 14px; color: #555; }
.sidrena-cijena__amount { font-weight: 700; color: #111; }