Przejdź do głównej zawartości

Wartości odżywcze

Sklep spożywczy musi wyświetlać tabelę wartości odżywczych (rozporządzenie UE nr 1169/2011). Wtyczka Polski for WooCommerce pozwala dodać tabelę do każdego produktu w formacie zgodnym z przepisami.

Tabela wartości odżywczych musi zawierać co najmniej:

SkładnikJednostkaKlucz JSON
Wartość energetycznakJ / kcalenergy_kj, energy_kcal
Tłuszczgfat
w tym kwasy tłuszczowe nasyconegsaturated_fat
Węglowodanygcarbohydrates
w tym cukrygsugars
Białkogprotein
Sólgsalt

Dodatkowo możesz podać:

SkładnikJednostkaKlucz JSON
Jednonienasycone kwasy tłuszczowegmonounsaturated_fat
Wielonienasycone kwasy tłuszczowegpolyunsaturated_fat
Alkohole wielowodorotlenowe (poliole)gpolyols
Skrobiagstarch
Błonnikgfibre
Witamina Aµgvitamin_a
Witamina Dµgvitamin_d
Witamina Emgvitamin_e
Witamina Kµgvitamin_k
Witamina Cmgvitamin_c
Tiamina (B1)mgthiamine
Ryboflawina (B2)mgriboflavin
Niacyna (B3)mgniacin
Witamina B6mgvitamin_b6
Kwas foliowyµgfolic_acid
Witamina B12µgvitamin_b12
Biotynaµgbiotin
Kwas pantotenowymgpantothenic_acid
Potasmgpotassium
Chlormgchloride
Wapńmgcalcium
Fosformgphosphorus
Magnezmgmagnesium
Żelazomgiron
Cynkmgzinc
Miedźmgcopper
Manganmgmanganese
Fluorekmgfluoride
Selenµgselenium
Chromµgchromium
Molibdenµgmolybdenum
Jodµgiodine

Przejdź do WooCommerce > Ustawienia > Polski > Żywność i aktywuj podmoduł “Wartości odżywcze”.

UstawienieDomyślneOpis
Jednostka referencyjnaper 100 gDomyślna jednostka: per 100 g lub per 100 ml
Wyświetlaj % RWSTakReferencyjna wartość spożycia (% dziennego zapotrzebowania)
Pozycja tabeliZakładkaGdzie wyświetlać tabelę na stronie produktu
Opcjonalne składnikiBłonnik, witaminyKtóre opcjonalne składniki wyświetlać

W zakładce “Żywność” edytora produktu wypełnij formularz wartości odżywczych. Wpisuj wartości liczbowe per 100 g lub 100 ml.

Każdy produkt może mieć własną jednostkę. Napoje ustaw na “per 100 ml”, produkty stałe na “per 100 g”. Bez ustawienia wtyczka użyje wartości domyślnej.

Opcjonalnie podaj wielkość porcji i wartości per porcję:

PoleOpis
Wielkość porcjinp. “30 g”, “250 ml”, “1 plasterek (25 g)“
Liczba porcji w opakowaniunp. “10”

Wartości odżywcze są zapisane w bazie jako JSON w meta polu _polski_nutrients. Format:

{
"energy_kj": 1046,
"energy_kcal": 250,
"fat": 9.5,
"saturated_fat": 3.2,
"carbohydrates": 31.0,
"sugars": 5.4,
"fibre": 2.1,
"protein": 8.7,
"salt": 1.2,
"ref_unit": "100g",
"serving_size": "30g",
"servings_per_package": 10
}
  • Wartości muszą być liczbami (int lub float)
  • Separator dziesiętny w JSON: kropka (np. 9.5)
  • Wartości nie mogą być ujemne
  • energy_kj i energy_kcal powinny być spójne (1 kcal = 4.184 kJ)
  • Podskładniki nie mogą przekraczać składnika nadrzędnego (np. saturated_fat <= fat)

Użyj shortcode [polski_nutrients], aby wyświetlić tabelę wartości odżywczych.

ParametrTypDomyślnyOpis
product_idintbieżącyID produktu
show_rwsbooltrueCzy wyświetlać % RWS
show_servingboolfalseCzy wyświetlać kolumnę per porcję
fieldsstringallSkładniki do wyświetlenia (oddzielone przecinkami)
layoutstringtableUkład: table, list, compact
wrapperstringdivElement HTML opakowujący

Pełna tabela wartości odżywczych:

[polski_nutrients]

Z wartościami per porcję:

[polski_nutrients show_serving="true"]

Tylko podstawowe składniki:

[polski_nutrients fields="energy_kcal,fat,carbohydrates,protein,salt"]

Kompaktowy układ (bez tabeli):

[polski_nutrients layout="compact"]

Dla konkretnego produktu:

[polski_nutrients product_id="123" show_rws="true" show_serving="true"]

W szablonie PHP:

echo do_shortcode('[polski_nutrients product_id="' . $product->get_id() . '"]');

Shortcode generuje tabelę zgodną ze standardem EU:

<div class="polski-nutrients">
<table class="polski-nutrients__table">
<thead>
<tr>
<th>Wartość odżywcza</th>
<th>per 100 g</th>
<th>% RWS*</th>
</tr>
</thead>
<tbody>
<tr>
<td>Wartość energetyczna</td>
<td>1046 kJ / 250 kcal</td>
<td>13%</td>
</tr>
<tr>
<td>Tłuszcz</td>
<td>9,5 g</td>
<td>14%</td>
</tr>
<tr class="polski-nutrients__sub">
<td>w tym kwasy tłuszczowe nasycone</td>
<td>3,2 g</td>
<td>16%</td>
</tr>
<!-- ... -->
</tbody>
<tfoot>
<tr>
<td colspan="3">
* Referencyjna wartość spożycia dla przeciętnej osoby dorosłej (8400 kJ / 2000 kcal)
</td>
</tr>
</tfoot>
</table>
</div>

Wtyczka oblicza % RWS automatycznie na podstawie tych wartości referencyjnych:

SkładnikReferencyjna wartość
Energia8400 kJ / 2000 kcal
Tłuszcz70 g
Kwasy tłuszczowe nasycone20 g
Węglowodany260 g
Cukry90 g
Białko50 g
Sól6 g
Błonnik25 g
$nutrients_json = get_post_meta($product_id, '_polski_nutrients', true);
$nutrients = json_decode($nutrients_json, true);
if ($nutrients) {
$energy_kcal = $nutrients['energy_kcal'] ?? 0;
$protein = $nutrients['protein'] ?? 0;
}
$nutrients = [
'energy_kj' => 1046,
'energy_kcal' => 250,
'fat' => 9.5,
'saturated_fat' => 3.2,
'carbohydrates' => 31.0,
'sugars' => 5.4,
'protein' => 8.7,
'salt' => 1.2,
'ref_unit' => '100g',
];
update_post_meta($product_id, '_polski_nutrients', wp_json_encode($nutrients));
add_filter('polski/nutrients/values', function (array $nutrients, int $product_id): array {
// Zaokrąglanie wartości zgodnie z wytycznymi EU
if (isset($nutrients['energy_kcal'])) {
$nutrients['energy_kcal'] = round($nutrients['energy_kcal']);
}
return $nutrients;
}, 10, 2);

Kolumna polski_nutrients w CSV zawiera wartości jako JSON:

"Musli owocowe","{""energy_kj"":1590,""energy_kcal"":380,""fat"":8.2,""saturated_fat"":1.5,""carbohydrates"":64.0,""sugars"":22.0,""fibre"":7.5,""protein"":9.8,""salt"":0.05,""ref_unit"":""100g""}"

Cudzysłowy wewnątrz JSON muszą być podwojone ("") w pliku CSV.

.polski-nutrients__table {
width: 100%;
border-collapse: collapse;
font-size: 0.9em;
}
.polski-nutrients__table th,
.polski-nutrients__table td {
padding: 0.4em 0.8em;
border-bottom: 1px solid #e0e0e0;
text-align: left;
}
.polski-nutrients__sub td:first-child {
padding-left: 1.5em;
font-style: italic;
}
.polski-nutrients__table tfoot td {
font-size: 0.8em;
color: #666;
padding-top: 0.8em;
}
  1. Sprawdź, czy podmoduł wartości odżywczych jest włączony
  2. Upewnij się, że produkt ma wypełnione pole _polski_nutrients z poprawnym JSON
  3. Zweryfikuj format JSON - użyj walidatora (np. jsonlint.com)

Wartości wyświetlają się z kropką zamiast przecinka

Dział zatytułowany „Wartości wyświetlają się z kropką zamiast przecinka”

Wtyczka automatycznie formatuje liczby z polskim przecinkiem. Jeśli widzisz kropkę, sprawdź, czy locale WordPress jest ustawiony na pl_PL.

Sprawdź, czy opcja “Wyświetlaj % RWS” jest włączona w ustawieniach i czy parametr show_rws w shortcode nie jest ustawiony na false.

Ta strona ma wyłącznie charakter informacyjny i nie stanowi porady prawnej. Przed wdrożeniem skonsultuj się z prawnikiem. Polski for WooCommerce jest oprogramowaniem open source (GPLv2) dostarczanym bez gwarancji.