Linux 软件免费装
Banner图

MJDD Sidrena Cijena

开发者 juremjdd
更新时间 2026年9月29日 19:14
捐献地址: 去捐款
PHP版本: 7.4 及以上
WordPress版本: 7.1
版权: GPLv2 or later
版权网址: 版权信息

标签

woocommerce croatia consumer protection sidrena cijena bazna cijena

下载

1.24.8 1.24.3 1.24.4 1.24.5 1.24.6 1.24.7 1.10.1 1.12.0 1.12.1 1.12.2 1.14.0 1.13.0 1.16.0 1.17.0 1.18.0 1.19.0 1.20.0 1.21.0 1.22.0 1.15.0 1.23.0

详情介绍:

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. The first tab, Dodatne stavke, is the same row repeater for services and made-to-order items that are not Woo products. Those rows are appended to the end of the public XML/CSV. Without WooCommerce, that repeater is the whole pricelist (Proizvodi) plus a public HTML page 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. Features Development: MJDD / Jure Zadravec - https://mjdd.hr Sidrena cijena is free software, offered as-is and without warranty, and without responsibility for the prices you publish, to the extent the law allows. It is a tool for showing and publishing prices, not legal advice. Please check that the prices you publish are the ones you intend, and that they follow the rules that apply to your shop.

安装:

  1. Copy the sidrena-cijena folder to wp-content/plugins/.
  2. Activate the plugin.
With WooCommerce
  1. WooCommerce → Sidrena cijena → Dodatne stavke (first tab): optional rows for services and made-to-order items that are not Woo products. They are added at the end of the public XML/CSV. Copy [sidrena-cijena id="d1"] from a row onto a page.
  2. Settings: prefix, date format, default date, tooltip.
  3. Edit the sidrena price and date on a Woo product if needed (below the sale price).
  4. Import/Export: export the price list or bulk-import CSV/XML by SKU.
  5. Public feed: choose XML or CSV, generate /sidrena-cijena.xml or /sidrena-cijena.csv, or leave daily regeneration after 00:05. Turn on HTML stranica /sidrena-cjenik if you also want the full HTML page. The archive is at /arhiva-sidrene-cijene.
  6. Several outlets: Settings → Više poslovnica?. After saving, the Poslovnice tab appears. Each outlet gets /sidrena-cijena-001.xml (its object code) and its own 30-file archive. Dodatne stavke are appended to every outlet file.
  7. Table on a page: paste [sidrena-cjenik] (or [sidrena-cjenik oznaka="001"] for one outlet). The shortcode is also shown on the Public feed tab, with a copy button.
Without WooCommerce
  1. Sidrena cijena → Proizvodi: add rows (name, SKU, URL, regular price, sale price, sidrena price, Dostupno/Nedostupno) or import CSV/XML. Copy [sidrena-cijena id="x"] from a row onto any page so prices stay in admin. Paste [sidrena-cjenik] where you want the full searchable table.
  2. Settings: prefix, date format, default date, tooltip. Turn on Više poslovnica? if you have more than one sales outlet.
  3. Public HTML pricelist: /sidrena-cjenik. XML/CSV feed and 30-day archive work the same as with Woo.

常见问题:

WP-CLI

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

Tax (VAT)

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.

Settings

Sidrena cijena settings (WooCommerce submenu, or a top-level menu without Woo):

  • Automatic sidrena price display - Woo only; below the current price; when off, only [sidrena-cijena] / [sidrena-cijena id="x"] remain
  • Prefix - words only, e.g. Sidrena cijena (do not type the date here)
  • Date format - Prefix (date) or Prefix date (e.g. put Sidrena cijena na in the prefix). Leave the prefix empty with Prefix date to print only the date and the amount, with no colon
  • Default reference date - e.g. 10.09.2026. (used for every product without its own date)
  • Per-product reference date - Woo only; leave empty for the default; for FMCG enter 02.05.2025.
  • Tooltip - switch and text (translate in WPML / Polylang / Loco)
  • Marka - taxonomy dropdown (Woo) plus a manual brand. The feed uses the product's term, then the manual brand. Each row on Proizvodi / Dodatne stavke has its own Marka field.
  • Cijena za jedinicu mjere (CJM) - off by default. When on, Woo products and every manual row get a CJM switch plus a unit phrase (e.g. za kg/l). The phrase is added only to that row's sidrena label. The public feed uses separate fields: jedinica_mjere and cijena_jedinice_mjere, entered on the product or the manual row.
  • Više poslovnica? - off by default (one feed for the whole site). When on, the Poslovnice tab stores, for each outlet, the legal filename fields (store type, address, object code, storage sequence) and the products that belong to it. An outlet with no products does not publish a file. The tab appears after you save the switch.
  • Dodatne stavke (Woo, first tab) - same repeater for services and made-to-order items. Required: name, regular price, sidrena price. Each row has a type (proizvod or usluga), its own sidrena date (empty keeps the shop default), and a Dostupno/Nedostupno dropdown. With several outlets, choose Webshop or a poslovnica. A service is written only into that feed. Shortcode [sidrena-cijena id="d1"].
  • Products tab (without Woo) - the same repeater for the whole public pricelist, including the availability dropdown. Saved as one JSON field to avoid max_input_vars limits.
  • HTML stranica /sidrena-cjenik - on the Public feed tab, Woo only, off by default. When on, /sidrena-cjenik publishes the full HTML pricelist. The shortcode [sidrena-cjenik] works either way.
  • At the bottom of the Woo settings tab: Fill empty fields from the regular price - empty fields only; existing sidrena values are left alone. The date stays the shop default (e.g. 10.09.2026.). Fill empty sidrena prices with today's date - same fill, plus today's date on products that have no date yet (new products after the reference day). Activation does not fill prices. The buttons walk the catalog in short steps, including each variation, show a progress bar, and resume if a request is cut off. An admin notice points at these two buttons until you run one or dismiss it. For large catalogs use WP-CLI: wp sidrena-cijena fill or wp sidrena-cijena fill --today (see WP-CLI).
  • Delete all data and deactivate - removes sidrena prices, standalone catalog, settings, public XML and archive, then deactivates the plugin. Cannot be undone.

Import / export

Import/Export tab:

  • Bulk import - CSV or XML. Rows match first by SKU, then by ID. With Woo: a matching Woo product is updated (including stock on the webshop). If neither SKU nor ID hits a product, or the row is vrsta usluga, it is saved as a manual row (Dodatne stavke), not as a new Woo product. The template has one product example and one service example, including type, date, and outlet. Regular, sale, and sidrena prices are mapped separately; the default is Do not import. Without Woo: rows with a matching SKU or ID in that catalog are updated, other rows are appended (name, regular, and sidrena are required for new rows). Empty cells are skipped. The progress bar uses AJAX batches.
  • Export price list - the client cjenik, same CSV/XML columns as the public feed: id, vrsta, naziv, sku, marka, url, jedinica_mjere, cijena_jedinice_mjere, maloprodajna_cijena, naziv_posebnog_oblika, sidrena_cijena, sidrena_datum, barkod, dostupnost. Published products only. Variations are separate rows. Dodatne stavke are at the end. A file that contains only services leaves out SKU, brand, unit, barcode, and availability.
  • Export products without a sidrena price - internal columns naziv, sku, cijena_redovna, cijena_akcijska, sidrena_cijena, including unpublished products, only where sidrena is empty
  • Sidrena price, date, and CJM remain columns in WooCommerce Products → Import/Export (for the catalog, not for the price list itself)
After importing sidrena prices, regenerate the public feed if you use it.

Public feed

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, vrsta, naziv, sku, marka, url, jedinica_mjere, cijena_jedinice_mjere, maloprodajna_cijena, naziv_posebnog_oblika, sidrena_cijena, sidrena_datum, barkod, dostupnost. vrsta is proizvod or usluga. sidrena_datum is that row's date, or the shop default when the row date is empty. naziv for a variation is the parent title plus every attribute, including when WooCommerce stores only the parent name. marka comes from the taxonomy chosen in settings, then from the manual brand in settings. A manual row uses its own Marka field first. maloprodajna_cijena is the sale price while that sale is active, otherwise the regular price, using the same tax display as the shop. naziv_posebnog_oblika is akcija in that case, or the name entered on the product or manual row. It is empty when no sale price is active. jedinica_mjere and cijena_jedinice_mjere stay empty until entered. Barcode is read from WooCommerce GTIN/UPC/EAN/ISBN (_global_unique_id). On a shop, the webshop file takes availability from stock status. Each outlet file uses the availability stored for that poslovnica, not the webshop stock. Rows from Dodatne stavke are appended after the shop products (id prefixed with d, barcode empty, availability from that row's dropdown) and only in the feed they belong to. Without WooCommerce, every row has a Dostupno/Nedostupno dropdown (default Dostupno). A file that contains only services leaves out SKU, brand, unit, barcode, and availability, and the HTML table does not draw those empty columns. Generated with the "Generate public feed" button or daily after 00:05 (on by default; WordPress timezone, so the file is ready before 08:00). A visit to a missing file does not rebuild the catalog in that request: the response is 503 and one background rebuild is queued, with a 15-minute cooldown. The file is stored in wp-content/uploads/sidrena-cijena/. The HTML page and [sidrena-cjenik] serve the table written in that same run. Until the file exists they show a short preparing message and queue one rebuild; they do not walk the catalog. The daily cron also stores a legally named file in the archive, following the 18 September 2026 ministry example prodavaonica_Ilica 150 Zagreb_P-01_104_01.10.2026_07:45.xml (date DD.MM.YYYY, time HH:MM; spaces and hyphens stay; 30 files maximum; the oldest is deleted). Regenerating on the same calendar day replaces that day's file and does not advance the storage number. On a Windows server the time is written 07-45 because a colon cannot be stored in a filename. Older YYYYMMDD_HHMM and 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. Several outlets. Turn on Više poslovnica? in Settings. Those filename fields move to the Poslovnice tab, one set per outlet, plus the products assigned to it. /sidrena-cijena.xml stays the webshop file: Woo products plus manual rows assigned to the webshop. Each outlet with products is published at https://shop.example/sidrena-cijena-001.xml (or .csv; 001 is that outlet's object code), with its own HTML table and an archive of at most 30 files. /sidrena-cjenik is the webshop table and its download button is the webshop feed. Each outlet HTML page is https://shop.example/sidrena-cjenik/001/, with that outlet's table and download. Availability on an outlet file is the flag stored for that poslovnica. Format (XML or CSV) and the daily run after 00:05 still apply to every outlet. With the switch off, the single /sidrena-cijena.xml feed is unchanged. Table shortcode. [sidrena-cjenik] prints only the searchable table (plugin design) on any page or in an Oxygen shortcode element. [sidrena-cjenik oznaka="001"] limits the rows to one outlet. Columns follow the public feed: name, SKU, brand, barcode, unit, unit price, retail price, sale-form name, sidrena price, availability. The name links to the product URL when one is set. The Public feed tab lists these shortcodes with a copy button. Archive shortcode. [sidrena-arhiva] prints only the archived filenames and dates, in the same light-blue list. [sidrena-arhiva oznaka="001"] limits the list to one object code. The public archive page groups files by outlet when several are on. The Public feed tab shows these shortcodes with a copy button. Without WooCommerce, the same table is also a page at https://shop.example/sidrena-cjenik/. On a WooCommerce shop that page is off until you turn on HTML stranica /sidrena-cjenik on the Public feed tab.

CJM

In settings, enable Cijena za jedinicu mjere (CJM). On each Woo product and variation, and on each row of Proizvodi or Dodatne stavke, a CJM switch appears. When that row's switch is on, you enter a unit phrase (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.

Compatibility

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. WPML and Polylang store each translation as its own product and do not copy the sidrena field, so the storefront uses the default-language sidrena when the translated product has none. 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:

  • Elementor / AnyWhere Elementor - widget woocommerce-product-price
  • JetWooBuilder / ShopEngine - jet-single-price, shopengine-product-price
  • WPBakery - shortcode [product_price], wrapper .wpb_wrapper > p.price
  • Oxygen - Product Price element (.oxy-product-price)
  • Divi 4 / Divi 5 - module et_pb_wc_price / block divi/wc-product-price
  • Bricks - element product-price
  • Beaver Builder - WooCommerce price module
  • Breakdance / Brizy - CSS selectors for price elements
  • Avada / Fusion - Woo Price theme builder element
  • Woodmart / Flatsome - .wd-single-price, .product-page-price
  • WooCommerce Blocks - woocommerce/product-price
If a theme still does not show the line, put the shortcode or hook below the price in the template or loop.

Hook and shortcode

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 id="123"] [sidrena-cijena id="123" prikaz="sidrena"] [sidrena-cjenik] [sidrena-cjenik oznaka="001"] [sidrena-arhiva] [sidrena-arhiva oznaka="001"] [sidrena-cjenik] prints only the searchable pricelist table, using the plugin table design. Put it on any page or in an Oxygen shortcode element. With multiple outlets, oznaka limits the table to that poslovnica. Without it, the table lists every product. [sidrena-arhiva] prints only the archive file list: each legal filename and its date. It does not add a title or a back link. oznaka keeps one object code. Older filenames that have no object code stay in the list only when oznaka is omitted. Without WooCommerce, [sidrena-cijena id="123"] prints that catalog row's current price and sidrena line. On a shop, [sidrena-cijena id="d1"] does the same for a row on Dodatne stavke. Add prikaz="redovna", prikaz="akcijska", or prikaz="sidrena" to print only that amount, for example 120,00 €. Without prikaz, the full line with the label and tooltip stays. An empty sale price prints nothing. A variable product with a price range prints od plus the amount. Paste it once and change prices in Sidrena cijena, not on the page. 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 );

Kako prikazati sidrenu cijenu za dostavu?

Dostavu postavite kao uslugu (kartica Dodatne stavke ili Proizvodi, vrsta Usluga) te koristite shortcode za programatski ispis, npr. [sidrena-cijena id="d1" prikaz="sidrena"]. Na trgovini s WooCommerceom ručni redak ide s prefiksom d. Integracija sidrenih cijena za dostave nije dio plugina zbog raznih dostupnih načina kalkulacije i prikaza istih.

Custom CSS

The line under the product price has the class sidrena-cijena. 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, or a space when the prefix is empty and the date format is plain
  • .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 selected
Example: .sidrena-cijena { font-size: 14px; color: #555; } .sidrena-cijena__amount { font-weight: 700; color: #111; }

更新日志:

1.24.8 1.24.7 1.24.6 1.24.5 1.24.4 1.24.3 1.24.2 1.24.1 1.24.0 1.23.0 1.22.0 1.21.0 1.20.0 1.19.0 1.18.0 1.17.0 1.16.0 1.15.0 1.14.0 1.13.0 1.12.2 1.12.1 1.12.0 1.11.0 1.10.1 1.10.0 1.9.9 1.9.8 1.9.7 1.9.6 1.9.5 1.9.4 1.9.3 1.9.2 1.9.1 1.9.0 1.8.0 1.7.0 1.6.1 1.6.0 1.5.0 1.4.1 1.4.0 1.3.1 1.3.0 1.2.2 1.2.1 1.2.0 1.1.1 1.1.0 1.0.0