16 β theme.json I: settings¶
β¬ οΈ Oldingi: 15 β Block temaga kirish Β· π README Β· Keyingi: 17 β theme.json II: styles β‘οΈ
Bu bobda:
theme.jsonβ block temaning "miya markazi". Uningsettingsbo'limi orqali siz foydalanuvchiga editorda qaysi ranglar, shrift o'lchamlari va bo'shliqlar taqdim etilishini boshqarasiz. Biz palitra, fluid (suyuq) typography, spacing scale, layout vaappearanceToolsni chuqur o'rganamiz, settings'ni global hamda bitta blok uchun (settings.blocks) qanday belgilashni ko'ramiz, va WordPress bularning ortidan qanday CSS preset o'zgaruvchilarini avtomatik yaratishini tushunamiz. Hamma misol jonli WordPress 7.0 da yaroqli JSON ekani tekshirilgan.
Nega theme.json?¶
15-bobda block temaning fayl strukturasini ko'rdik. Uning markazida bitta fayl turadi: theme.json. Bu fayl temaning konfiguratsiya markazi β u editor va frontend uchun bir vaqtda dizayn qoidalarini belgilaydi.
Klassik temada (1-14 boblar) siz rang va shriftlarni style.css da, qo'lda CSS yozib belgilardingiz. Muammo: bu CSS faqat frontend'ga ta'sir qilardi. Editor (Gutenberg) sizning ranglaringizdan bexabar edi β foydalanuvchi rang tanlovida WordPress'ning standart palitra'sini ko'rardi, sizning brendingizni emas.
theme.json shu uzilishni bartaraf etadi. Bitta joyda yozasiz β editor ham, frontend ham bir xil qoidalarni biladi. Bu yondashuv ikki ustunga bo'linadi:
| Bo'lim | Vazifasi | Bob |
|---|---|---|
settings |
Foydalanuvchiga qaysi imkoniyatlar beriladi (palitra, o'lchamlar, sozlamalar) | 16 (bu bob) |
styles |
O'sha imkoniyatlardan qaysi qiymat standart qo'llaniladi (sayt qanday ko'rinadi) | 17 |
Oddiy o'xshatish: settings β bu restoran menyusi (mijozga nima taklif qilinadi), styles esa kun taomi (oshxona nimani standart qilib chiqaradi). Bu bobda menyuni tuzamiz.
theme.json tuzilishi: yuqori darajadagi kalitlar¶
theme.json ning eng yuqori darajasida bir nechta kalit bor. Mana ularning hammasi:
{
"$schema": "https://schemas.wp.org/wp/6.7/theme.json",
"version": 3,
"settings": { },
"styles": { },
"templateParts": [ ],
"customTemplates": [ ],
"patterns": [ ]
}
$schemaβ IDE (VS Code) uchun avtomat-to'ldirish va xato tekshiruvini yoqadi. Majburiy emas, lekin juda foydali.versionβ majburiy, hozir3(WP 6.6+ standarti). Bu raqam theme.json sxemasining versiyasini bildiradi, temangiz versiyasini emas.settingsβ bu bobning mavzusi.stylesβ 17-bob.templateParts,customTemplates,patternsβ 18 va 20-boblar.
versionhaqida diqqat:version: 3WP 6.6 dan beri amalda. Eski temalardaversion: 2uchraydi β u hali ishlaydi, lekin yangi temada doim3yozing. Versiyalar orasidagi asosiy farq: v3 dafontSizesvaspacingSizesstandart presetlari endi avtomatik qo'shilmaydi (defaultFontSizes/defaultSpacingSizes), bu siz to'liq nazoratga ega bo'lishingizni anglatadi.
settings umumiy ko'rinishi¶
settings ichidagi har bir bo'lim block editordagi (Gutenberg) muayyan boshqaruvni yoqadi yoki o'chiradi. Asosiy bo'limlar:
{
"version": 3,
"settings": {
"appearanceTools": true,
"useRootPaddingAwareAlignments": true,
"layout": { },
"color": { },
"typography": { },
"spacing": { },
"blocks": { }
}
}
Har birini navbatma-navbat ochamiz. Eslatma: bu kalitlarni men o'ylab topmadim β ularning hammasi WordPress yadrosidagi WP_Theme_JSON::VALID_SETTINGS ro'yxatida bor (jonli WP 7.0 da tekshirildi). Mavjud bo'lmagan kalit yozsangiz, WordPress uni shunchaki e'tiborsiz qoldiradi β xato bermaydi, lekin ishlamaydi ham. Shuning uchun aniq kalit nomlari muhim.
color β ranglar tizimi¶
settings.color β eng ko'p ishlatiladigan bo'lim. U editordagi rang tanlovini to'liq boshqaradi.
{
"version": 3,
"settings": {
"color": {
"defaultPalette": false,
"defaultGradients": false,
"defaultDuotone": false,
"custom": true,
"customGradient": true,
"palette": [
{ "slug": "asosiy", "color": "#2563eb", "name": "Asosiy" },
{ "slug": "ikkilamchi", "color": "#16a34a", "name": "Ikkilamchi" },
{ "slug": "matn", "color": "#1e293b", "name": "Matn" },
{ "slug": "fon", "color": "#f8fafc", "name": "Fon" }
],
"gradients": [
{
"slug": "kok-yashil",
"gradient": "linear-gradient(135deg, #2563eb 0%, #16a34a 100%)",
"name": "Kok-yashil"
}
],
"duotone": [
{ "slug": "kok-oq", "colors": ["#1e293b", "#2563eb"], "name": "Kok-oq" }
]
}
}
}
palette β rang to'plami¶
palette β temangizning rang to'plami. Har bir rang uchta maydonga ega:
slugβ texnik nom (CSS o'zgaruvchi va class'da ishlatiladi). Faqat kichik harf, defis. Masalanasosiy.colorβ rang qiymati (hex, rgb, hsl yoki hattocolor-mix(...)).nameβ editorda ko'rinadigan inson o'qiydigan yorliq. Masalan "Asosiy".
WordPress har bir palitra rangidan ikki narsa yaratadi:
- CSS o'zgaruvchi:
--wp--preset--color--asosiy: #2563eb; - Utility class:
.has-asosiy-color { color: ... }va.has-asosiy-background-color { ... }
Yani siz CSS yozmaysiz β slug'ni belgilash kifoya, WordPress qolganini o'zi qiladi.
gradients va duotone¶
gradientsβ gradient to'plami.gradientmaydonida to'liq CSS gradient yoziladi. CSS o'zgaruvchi:--wp--preset--gradient--kok-yashil.duotoneβ rasmlarga ikki rangli filtr (masalan, Instagram'simon effekt).colorsmassivida soya (dark) va yorug' (light) ranglar. Cover va Image bloklariga qo'llaniladi.
"default" kalitlar β WordPress'ning o'z presetlarini o'chirish¶
Mana eng muhim qoida: agar siz palette belgilasangiz ham, WordPress o'zining standart palitra'sini ham qo'shadi β natijada editorda sizning ranglaringiz + WP ning kulrang/oq ranglari aralashib ketadi. Bu chalkash ko'rinadi.
Buni default* kalitlar bilan o'chiramiz:
| Kalit | false qilsa nima bo'ladi |
|---|---|
defaultPalette |
WordPress'ning standart rang palitra'si o'chadi β faqat sizning ranglaringiz qoladi |
defaultGradients |
WP standart gradientlari o'chadi |
defaultDuotone |
WP standart duotone filtrlari o'chadi |
Professional temada bu uchchovi deyarli doim false. Reference sifatida Twenty Twenty-Five ham aynan shunday qiladi (defaultPalette: false, defaultGradients: false, defaultDuotone: false).
custom β foydalanuvchiga erkin rang ruxsati¶
custom: trueβ foydalanuvchi rang tanlovida o'z (ixtiyoriy) rangini kiritishi mumkin (color picker chiqadi).custom: falseβ foydalanuvchi faqat sizning palitrangizdan tanlaydi, erkin rang kirita olmaydi. Bu brend izchilligini majburlash uchun kuchli vosita (pastda batafsil).
customGradient β xuddi shu, lekin gradientlar uchun.
typography β shriftlar va o'lchamlar¶
settings.typography shrift oilalarini, o'lchamlarini va matn boshqaruvlarini belgilaydi.
{
"version": 3,
"settings": {
"typography": {
"fluid": true,
"defaultFontSizes": false,
"customFontSize": true,
"lineHeight": true,
"fontWeight": true,
"letterSpacing": true,
"textDecoration": true,
"textTransform": true,
"fontSizes": [
{ "slug": "small", "size": "1rem", "name": "Kichik", "fluid": false },
{
"slug": "medium",
"size": "1.25rem",
"name": "Orta",
"fluid": { "min": "1.125rem", "max": "1.25rem" }
},
{
"slug": "large",
"size": "2rem",
"name": "Katta",
"fluid": { "min": "1.5rem", "max": "2rem" }
}
],
"fontFamilies": [
{
"slug": "asosiy",
"name": "Asosiy shrift",
"fontFamily": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif"
},
{
"slug": "monospace",
"name": "Monospace",
"fontFamily": "\"Fira Code\", Consolas, monospace"
}
]
}
}
}
fontSizes β shrift o'lchamlari¶
Har bir o'lcham palette kabi slug/size/name ga ega. CSS o'zgaruvchi: --wp--preset--font-size--large. Slug'lar uchun standart konvensiya: small, medium, large, x-large, xx-large.
Fluid (suyuq) typography β clamp() avtomatik¶
Bu β theme.json ning eng kuchli imkoniyatlaridan biri. Odatda responsive shrift uchun siz qo'lda media query yoki clamp() yozasiz. WordPress buni avtomatlashtiradi.
Ikki bosqichda yoqiladi:
- Yuqori darajada
"fluid": trueβ fluid rejimni umumiy yoqadi. - Har bir o'lchamda
"fluid": { "min": "...", "max": "..." }β eng kichik va eng katta qiymatni belgilaysiz.
Natijada WordPress avtomatik clamp() hosil qiladi: kichik ekranda min, katta ekranda max, orasida silliq o'tish β media query yozmasdan.
Bu telefonda sarlavha 1.5rem, kompyuterda 2rem bo'lishini, orasida ekran kengligiga qarab silliq kattalashishini ta'minlaydi. size maydoni β fluid o'chirilgan brauzerlar yoki editor uchun zaxira qiymat.
Agar bitta o'lcham fluid bo'lishini xohlamasangiz (masalan kichik matn doim bir xil bo'lsin), unda "fluid": false yozasiz β yuqoridagi misolda small shunday.
fontFamilies β shrift oilalari¶
Har bir oila slug/name/fontFamily ga ega. fontFamily to'liq CSS font-stack. CSS o'zgaruvchi: --wp--preset--font-family--asosiy.
Maxsus shrift (woff2) yuklash: agar tema bilan birga shrift fayli (masalan Google Font'ning o'zbek-tilini qo'llovchi varianti) jo'natmoqchi bo'lsangiz,
fontFamiliesichidafontFacemassivi qo'shasiz vasrcda"file:./assets/fonts/..."yozasiz. Reference: Twenty Twenty-Five theme.json da Manrope va Fira Code aynan shunday ulangan. Shrift fayllarini boshqarish 17-bobda (styles) ko'riladi.
Matn boshqaruvlari (boolean)¶
Quyidagi kalitlar editordagi qo'shimcha matn boshqaruvlarini yoqadi/o'chiradi:
| Kalit | Yoqsa nima ko'rinadi |
|---|---|
customFontSize |
Foydalanuvchi ixtiyoriy o'lcham kirita oladi (presetdan tashqari) |
lineHeight |
Qator balandligi boshqaruvi |
fontWeight |
Shrift qalinligi |
letterSpacing |
Harflar orasi masofasi |
textDecoration |
Tagi chizilgan / chizilmagan |
textTransform |
KATTA / kichik harf |
dropCap |
Birinchi harfni katta qilish (paragraph) |
spacing β bo'shliqlar tizimi¶
settings.spacing padding, margin va bloklar orasidagi masofani (blockGap) boshqaradi.
{
"version": 3,
"settings": {
"spacing": {
"defaultSpacingSizes": false,
"customSpacingSize": true,
"units": ["px", "em", "rem", "vh", "vw", "%"],
"padding": true,
"margin": true,
"blockGap": true,
"spacingSizes": [
{ "slug": "30", "size": "0.75rem", "name": "Kichik" },
{ "slug": "40", "size": "1.5rem", "name": "Orta" },
{ "slug": "50", "size": "clamp(2rem, 5vw, 3rem)", "name": "Katta" },
{ "slug": "60", "size": "clamp(3rem, 8vw, 5rem)", "name": "Juda katta" }
]
}
}
}
spacingSizes β bo'shliq presetlari¶
palette mantig'i bilan bir xil. CSS o'zgaruvchi: --wp--preset--spacing--50. Slug uchun konvensiya β raqamli pog'onalar (20, 30, 40, 50...), chunki shunda editor slayder ularni tartib bilan ko'rsatadi. size da clamp() ishlatish responsive bo'shliq beradi β bu fluid typography'ga o'xshash usul.
spacingScale β pog'onalarni avtomatik generatsiya¶
spacingSizes ni qo'lda yozish o'rniga, WordPress'dan ularni matematik formula bilan avtomatik hosil qildirish mumkin:
{
"version": 3,
"settings": {
"spacing": {
"spacingScale": {
"operator": "*",
"increment": 1.5,
"steps": 7,
"mediumStep": 1.5,
"unit": "rem"
}
}
}
}
operatorβ"*"(ko'paytirish) yoki"+"(qo'shish).mediumStepβ o'rta (markaziy) qiymat.incrementβ har pog'onaga qo'shiladigan/ko'paytiriladigan miqdor.stepsβ nechta pog'ona yaratilsin.unitβ o'lchov birligi (rem,px...).
Diqqat: spacingScale va spacingSizes bir vaqtda ishlamaydi β bittasini tanlang. Twenty Twenty-Five qo'lda spacingSizes ishlatadi (aniqroq nazorat uchun); ko'pgina starter temalar spacingScale afzal ko'radi (kamroq yozuv). Kalitlar (operator/increment/steps/mediumStep/unit) WP yadrosidagi WP_Theme_JSON da tekshirilgan.
units β ruxsat etilgan o'lchov birliklari¶
Foydalanuvchi padding/margin kiritganda qaysi birliklarni tanlay olishini cheklaydi. Masalan faqat ["px", "rem"] qoldirsangiz, foydalanuvchi vw yoki % tanlay olmaydi.
Boolean boshqaruvlar¶
padding: true/margin: trueβ bloklarda tegishli boshqaruvni yoqadi.blockGap: trueβ bloklar orasidagi masofa boshqaruvi (Group, Columns ichida).customSpacingSize: trueβ foydalanuvchi presetdan tashqari ixtiyoriy qiymat kirita oladi.
layout β kontent kengligi¶
settings.layout saytning markaziy o'qidagi kengliklarni belgilaydi:
contentSizeβ oddiy kontent (paragraph, sarlavha) kengligi. O'qilishga qulay bo'lishi uchun odatda 600-800px.wideSizeβ "wide" tekislash (alignwide) tanlanganda blok qancha keng bo'lishi. OdatdacontentSizedan ancha katta.
Bu ikki qiymat block editordagi "Wide width" va "Full width" tugmalarining xatti-harakatini boshqaradi. Group bloki ichidagi kontent avtomatik contentSize bo'yicha markazlashadi β siz CSS container yozmaysiz.
appearanceTools β hammasini bir zarbada yoqish¶
Yuqorida ko'rgan ko'plab boolean kalitlarni (lineHeight, letterSpacing, padding, margin, blockGap, border, link rangi, va h.k.) yakka-yakka yozish zerikarli. WordPress qulay qisqartma beradi:
{
"version": 3,
"settings": {
"appearanceTools": true,
"layout": {
"contentSize": "650px",
"wideSize": "1200px"
}
}
}
appearanceTools: true bir vaqtda quyidagilarni yoqadi:
border(color, radius, style, width)color.linkvacolor.heading(link va sarlavha rangi)spacing.blockGap,spacing.margin,spacing.paddingtypography.lineHeightdimensions.minHeightposition.sticky
Bu eng ko'p ishlatiladigan dizayn boshqaruvlarini bitta qatorda yoqadi. Aksariyat zamonaviy temalar (Twenty Twenty-Five ham) appearanceTools: true bilan boshlaydi, keyin kerak bo'lsa alohida kalitlar bilan moslaydi.
Eslatma:
appearanceTools: trueqo'ysangiz ham, alohida kalitnifalseqilib ustidan yozishingiz mumkin. MasalanappearanceTools: truelekinspacing.margin: falseβ chegaradan tashqari hamma narsa yoqiladi, margin esa o'chadi.
useRootPaddingAwareAlignments¶
Bu kalit (true) full-width bloklar saytning chap-o'ng padding'idan tashqariga to'g'ri "chiqib ketishini" ta'minlaydi, ichki kontent esa padding ichida qoladi. Zamonaviy temalarda deyarli doim true. U styles.spacing.padding (17-bob) bilan birga ishlaydi.
Global vs per-block: settings.blocks¶
Hozirgacha biz global settings yozdik β ya'ni butun saytga, hamma bloklarga taalluqli. Lekin ba'zan bitta blok uchun boshqacha qoida kerak bo'ladi. Buning uchun settings.blocks.{blok-nomi} ishlatiladi:
{
"version": 3,
"settings": {
"color": {
"custom": true
},
"blocks": {
"core/paragraph": {
"color": { "custom": false }
},
"core/heading": {
"typography": { "customFontSize": false }
}
}
}
}
Bu misolda:
- Global:
color.custom: trueβ odatda hamma blokda foydalanuvchi ixtiyoriy rang kirita oladi. - Per-block:
core/paragraphuchuncolor.custom: falseβ paragrafda foydalanuvchi faqat palitra'dan tanlaydi. - Per-block:
core/headinguchun ixtiyoriy shrift o'lchami o'chiriladi.
Qoida oddiy: per-block settings global'ni ustidan yozadi (override), faqat o'sha blok uchun. Boshqa bloklar global qiymatni meros qilib oladi.
Blok nomlari haqiqiy core blok nomlari bo'lishi shart: core/paragraph, core/heading, core/group, core/button, core/columns va h.k. (jonli WordPress'dagi blok ro'yxatida bor). O'ylab topilgan nom yozsangiz, sozlama ishlamaydi.
Qachon per-block ishlatamiz?¶
- Faqat sarlavhalarda maxsus shrift o'lchamlari kerak bo'lsa.
- Faqat Button blokida cheklangan palitra (brend tugmalari bir xil rangda bo'lsin).
- Kod (
core/code) bloki uchun monospace shriftni majburlash (lekin bu odatdastylesda, 17-bobda).
Foydalanuvchini cheklash: custom: false san'ati¶
theme.json ning eng amaliy kuchlaridan biri β brend izchilligini majburlash. Mijoz saytini topshirganingizda, foydalanuvchi tasodifan pushti matn yoki 47px qizil sarlavha qo'yib dizaynni buzmasligini xohlaysiz.
custom: false kalitlari aynan shu uchun. Mana cheklovchi konfiguratsiya:
{
"version": 3,
"settings": {
"color": {
"custom": false,
"customGradient": false,
"defaultPalette": false,
"palette": [
{ "slug": "asosiy", "color": "#2563eb", "name": "Asosiy" },
{ "slug": "matn", "color": "#1e293b", "name": "Matn" }
]
},
"typography": {
"customFontSize": false,
"defaultFontSizes": false,
"fontSizes": [
{ "slug": "medium", "size": "1.25rem", "name": "Orta" },
{ "slug": "large", "size": "2rem", "name": "Katta" }
]
},
"spacing": {
"customSpacingSize": false
}
}
}
Natija: foydalanuvchi faqat siz bergan 2 ta rang va 2 ta o'lchamdan tanlaydi. Ixtiyoriy qiymat kirita olmaydi. Color picker, raqamli kiritish maydonlari editordan yo'qoladi β faqat sizning presetlaringiz qoladi.
| Maqsad | Kalit |
|---|---|
| Ixtiyoriy rangni taqiqlash | color.custom: false |
| Ixtiyoriy gradientni taqiqlash | color.customGradient: false |
| Ixtiyoriy shrift o'lchamini taqiqlash | typography.customFontSize: false |
| Ixtiyoriy bo'shliqni taqiqlash | spacing.customSpacingSize: false |
| WP standart palitra'sini olib tashlash | color.defaultPalette: false |
Bu "ozodlik vs nazorat" muvozanati. Shaxsiy blog uchun custom: true (erkinlik) yaxshi; mijoz/korporativ sayt uchun custom: false (nazorat) odatda to'g'ri tanlov.
Generatsiya qilingan CSS preset o'zgaruvchilari¶
Bu β butun tizimning "sehri". Siz settings da preset belgilaganda, WordPress avtomatik CSS Custom Properties (o'zgaruvchilar) hosil qiladi va ularni <head> ga inline qiladi. Formula doim bir xil:
| Settings preset | Generatsiya qilingan CSS o'zgaruvchi |
|---|---|
color.palette slug asosiy |
--wp--preset--color--asosiy |
color.gradients slug kok-yashil |
--wp--preset--gradient--kok-yashil |
typography.fontSizes slug large |
--wp--preset--font-size--large |
typography.fontFamilies slug asosiy |
--wp--preset--font-family--asosiy |
spacing.spacingSizes slug 50 |
--wp--preset--spacing--50 |
(Bu nomlash formulasi WordPress 7.0 yadrosidagi WP_Theme_JSON da tasdiqlandi.)
Bu o'zgaruvchilarning ikki katta foydasi:
- Editorda avtomatik ko'rinadi.
nameyorlig'i bilan rang/o'lcham tanlovida chiqadi. - O'z CSS'ingizda ishlatasiz. Maxsus CSS yozsangiz (
styles.cssyoki blok stillarida), bu o'zgaruvchilarni qayta ishlatasiz:
.mening-blokim {
background-color: var(--wp--preset--color--asosiy);
padding: var(--wp--preset--spacing--50);
font-size: var(--wp--preset--font-size--large);
}
Endi rangni faqat theme.json da o'zgartirasiz β sayt bo'ylab hamma joyda avtomatik yangilanadi. Bu DRY (o'zingni takrorlama) tamoyilining theme.json darajasidagi ko'rinishi.
var:preset|...sintaksisi:theme.jsonningstylesbo'limida (17-bob) bu o'zgaruvchilarga maxsus qisqa sintaksis bilan murojaat qilinadi:"var:preset|color|asosiy". Bu aynanvar(--wp--preset--color--asosiy)ga aylanadi. Frontendda (oddiy CSS) esa to'liqvar(--wp--preset--...)yozasiz.
To'liq, ishlaydigan misol¶
Mana yuqoridagi hamma tushunchani birlashtirgan to'liq settings bo'limi. Bu fayl ch16-test test temasiga yozildi va jonli WordPress 7.0 da yaroqli JSON ekani php -r "json_decode(...)" bilan tasdiqlandi, har bir kalit WP_Theme_JSON::VALID_SETTINGS bilan solishtirildi:
{
"$schema": "https://schemas.wp.org/wp/6.7/theme.json",
"version": 3,
"settings": {
"appearanceTools": true,
"useRootPaddingAwareAlignments": true,
"layout": {
"contentSize": "650px",
"wideSize": "1200px"
},
"color": {
"defaultPalette": false,
"defaultGradients": false,
"custom": true,
"palette": [
{ "slug": "asosiy", "color": "#2563eb", "name": "Asosiy" },
{ "slug": "ikkilamchi", "color": "#16a34a", "name": "Ikkilamchi" },
{ "slug": "matn", "color": "#1e293b", "name": "Matn" },
{ "slug": "fon", "color": "#f8fafc", "name": "Fon" }
]
},
"typography": {
"fluid": true,
"defaultFontSizes": false,
"fontSizes": [
{ "slug": "small", "size": "1rem", "name": "Kichik", "fluid": false },
{
"slug": "medium",
"size": "1.25rem",
"name": "Orta",
"fluid": { "min": "1.125rem", "max": "1.25rem" }
},
{
"slug": "large",
"size": "2rem",
"name": "Katta",
"fluid": { "min": "1.5rem", "max": "2rem" }
}
],
"fontFamilies": [
{
"slug": "asosiy",
"name": "Asosiy shrift",
"fontFamily": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif"
}
]
},
"spacing": {
"defaultSpacingSizes": false,
"units": ["px", "em", "rem", "vh", "vw", "%"],
"spacingSizes": [
{ "slug": "30", "size": "0.75rem", "name": "Kichik" },
{ "slug": "40", "size": "1.5rem", "name": "Orta" },
{ "slug": "50", "size": "clamp(2rem, 5vw, 3rem)", "name": "Katta" }
]
}
}
}
Bu β to'liq dizayn tizimi: 4 rang, fluid typography, responsive spacing, layout β hammasi bitta faylda, CSS yozmasdan. Keyingi bobda (17) shu presetlarga styles bilan standart qiymat beramiz (sayt qanday ko'rinishini belgilaymiz).
Tez-tez uchraydigan xatolar¶
versionni unutish yoki noto'g'ri yozish.version: 3bo'lmasa, WordPress faylni to'g'ri o'qiy olmaydi. Bu birinchi tekshiriladigan narsa.- Yaroqsiz JSON. Ortiqcha vergul (oxirgi elementdan keyin
,), qo'shtirnoq yo'qligi β bularning bittasi butun faylni buzadi. Doim JSON-validator (yoki VS Code$schema) ishlating. default*kalitlarni unutish.defaultPalette: falseyozmasangiz, sizning ranglaringiz WP standart palitra'si bilan aralashib, editorda chalkash ko'rinadi.- O'ylab topilgan kalit nomi.
settings.colors(ko'plik) yokisettings.color.colourskabi xatolar β WordPress ularni jim e'tiborsiz qoldiradi, sozlama ishlamaydi. Aniq nomlar:color,typography,spacing,layout. spacingScalevaspacingSizesni birga ishlatish. Faqat bittasini tanlang.- slug'da katta harf yoki bo'shliq.
slugfaqat kichik harf va defis bo'lsin (x-large,asosiy) β aks holda CSS o'zgaruvchi noto'g'ri yaratiladi. - fluid'ni yarim yoqish. Yuqori darajada
"fluid": truebo'lmasa, har bir o'lchamdagi"fluid": {min, max}ishlamaydi.
Mashqlar¶
Oson¶
- Minimal
settingsyozing.version: 3vasettingsichida faqatlayout(contentSize: "650px",wideSize: "1200px") bo'lsin. JSON yaroqli bo'lsin. - Uch rangli palitra qo'shing.
settings.color.palettegaasosiy,matn,fonranglarini (slug/color/name bilan) qo'shing va WP standart palitra'sini o'chiring. appearanceToolsni yoqing.settings.appearanceTools: trueqo'shing valayoutham bo'lsin. IzohdaappearanceToolsqaysi 3 narsani yoqishini yozing.- Uchta shrift o'lchami belgilang.
settings.typography.fontSizesgasmall(1rem),medium(1.25rem),large(2rem) qo'shing.
O'rta¶
- Fluid typography sozlang.
largeo'lchami uchunfluid: { min: "1.5rem", max: "2rem" }qo'shing va yuqori darajadafluid: trueyoqing.smallesafluid: falsebo'lsin. - Spacing presetlar yozing.
settings.spacing.spacingSizesga30,40,50slug'li uchta bo'shliq qo'shing.50daclamp()ishlatib responsive qiling. - Bitta gradient qo'shing.
settings.color.gradientsgakok-yashilslug'lilinear-gradientqo'shing va WP standart gradientlarini o'chiring. unitsni cheklang.settings.spacing.unitsni faqat["px", "rem"]ga cheklang β foydalanuvchivw/%tanlay olmasin.
Qiyin¶
- Brendni majburlovchi cheklov yozing.
custom: false,customGradient: false,customFontSize: false,customSpacingSize: falsebilan to'liq cheklangansettingsyozing β foydalanuvchi faqat sizning 2 rang va 2 o'lchamdan tanlasin. - Per-block settings yozing. Global
color.custom: true, lekincore/paragraphuchuncolor.custom: falsevacore/headinguchuntypography.customFontSize: false. Tushuntiring: qaysi blok nima oladi? spacingScalebilan avtomatik pog'ona.spacingSizeso'rnigaspacingScaleishlating (operator: "*",mediumStep: 1.5,increment: 1.5,steps: 5,unit: "rem"). NegaspacingScalevaspacingSizesbirga ishlamasligini izohlang.- To'liq dizayn tizimi. Bitta
theme.jsonda:appearanceTools,useRootPaddingAwareAlignments,layout, 4 rangli palitra (default'lar o'chirilgan), fluid typography (3 o'lcham), spacing (3 preset) β hammasini birlashtiring. JSON yaroqli bo'lishini tekshiring vacore/buttonuchun cheklangan palitra qo'shing (per-block).
Yechimlar¶
Yechim β 1
contentSize β oddiy kontent kengligi, wideSize β "wide" tekislash kengligi. Bu eng minimal foydali settings.
Yechim β 2
{
"version": 3,
"settings": {
"color": {
"defaultPalette": false,
"palette": [
{ "slug": "asosiy", "color": "#2563eb", "name": "Asosiy" },
{ "slug": "matn", "color": "#1e293b", "name": "Matn" },
{ "slug": "fon", "color": "#f8fafc", "name": "Fon" }
]
}
}
}
defaultPalette: false WordPress'ning standart ranglarini olib tashlaydi β natijada editorda faqat sizning 3 rangingiz ko'rinadi. Har biri --wp--preset--color--{slug} o'zgaruvchisini yaratadi.
Yechim β 3
{
"version": 3,
"settings": {
"appearanceTools": true,
"layout": {
"contentSize": "650px",
"wideSize": "1200px"
}
}
}
appearanceTools: true bir vaqtda (boshqalar qatorida) quyidagilarni yoqadi: border (chegara), spacing.blockGap/margin/padding (bo'shliqlar), typography.lineHeight (qator balandligi), color.link/color.heading. Bu eng ko'p kerak bo'ladigan boshqaruvlarni bitta qatorda yoqadi.
Yechim β 4
{
"version": 3,
"settings": {
"typography": {
"defaultFontSizes": false,
"fontSizes": [
{ "slug": "small", "size": "1rem", "name": "Kichik" },
{ "slug": "medium", "size": "1.25rem", "name": "Orta" },
{ "slug": "large", "size": "2rem", "name": "Katta" }
]
}
}
}
defaultFontSizes: false WP standart o'lchamlarini o'chiradi. Har biri --wp--preset--font-size--{slug} ni yaratadi. Slug'lar standart konvensiyaga (small/medium/large) mos.
Yechim β 5
{
"version": 3,
"settings": {
"typography": {
"fluid": true,
"defaultFontSizes": false,
"fontSizes": [
{ "slug": "small", "size": "1rem", "name": "Kichik", "fluid": false },
{
"slug": "large",
"size": "2rem",
"name": "Katta",
"fluid": { "min": "1.5rem", "max": "2rem" }
}
]
}
}
}
Yuqori darajadagi fluid: true fluid rejimni umumiy yoqadi. large da fluid: { min, max } β WordPress avtomatik clamp() hosil qiladi (kichik ekranda 1.5rem, kattada 2rem). small da fluid: false β u doim bir xil 1rem, suyuq emas.
Yechim β 6
{
"version": 3,
"settings": {
"spacing": {
"defaultSpacingSizes": false,
"spacingSizes": [
{ "slug": "30", "size": "0.75rem", "name": "Kichik" },
{ "slug": "40", "size": "1.5rem", "name": "Orta" },
{ "slug": "50", "size": "clamp(2rem, 5vw, 3rem)", "name": "Katta" }
]
}
}
}
50 da clamp(2rem, 5vw, 3rem) β kichik ekranda 2rem, kattada 3rem, orasida ekran kengligi (5vw) bilan silliq o'tadi. Har biri --wp--preset--spacing--{slug} yaratadi. Raqamli slug'lar editor slayderida tartibli ko'rinadi.
Yechim β 7
{
"version": 3,
"settings": {
"color": {
"defaultGradients": false,
"gradients": [
{
"slug": "kok-yashil",
"gradient": "linear-gradient(135deg, #2563eb 0%, #16a34a 100%)",
"name": "Kok-yashil"
}
]
}
}
}
defaultGradients: false WP standart gradientlarini o'chiradi. gradient maydonida to'liq CSS gradient. Bu --wp--preset--gradient--kok-yashil o'zgaruvchisini yaratadi.
Yechim β 8
units massivi foydalanuvchi tanlay oladigan o'lchov birliklarini cheklaydi. Endi faqat px va rem mavjud β vw, %, em, vh tanlovdan yo'qoladi. Bu noaniq/buzg'unchi o'lchamlardan saqlaydi.
Yechim β 9
{
"version": 3,
"settings": {
"color": {
"custom": false,
"customGradient": false,
"defaultPalette": false,
"palette": [
{ "slug": "asosiy", "color": "#2563eb", "name": "Asosiy" },
{ "slug": "matn", "color": "#1e293b", "name": "Matn" }
]
},
"typography": {
"customFontSize": false,
"defaultFontSizes": false,
"fontSizes": [
{ "slug": "medium", "size": "1.25rem", "name": "Orta" },
{ "slug": "large", "size": "2rem", "name": "Katta" }
]
},
"spacing": {
"customSpacingSize": false
}
}
}
custom: false (rang), customFontSize: false (shrift), customSpacingSize: false (bo'shliq) β bularning hammasi ixtiyoriy qiymat kiritishni taqiqlaydi. Foydalanuvchi faqat 2 rang va 2 o'lchamdan tanlaydi. Bu mijoz saytida brend izchilligini majburlaydi.
Yechim β 10
{
"version": 3,
"settings": {
"color": {
"custom": true
},
"blocks": {
"core/paragraph": {
"color": { "custom": false }
},
"core/heading": {
"typography": { "customFontSize": false }
}
}
}
}
Tushuntirish:
- Global color.custom: true β odatda hamma blok ixtiyoriy rang qabul qiladi.
- core/paragraph β color.custom: false (per-block) global'ni ustidan yozadi: paragrafda foydalanuvchi faqat palitra'dan tanlaydi, color picker chiqmaydi.
- core/heading β typography.customFontSize: false: sarlavhada ixtiyoriy o'lcham kiritish o'chadi.
- Boshqa bloklar (Group, Button...) global color.custom: true ni meros qiladi β ixtiyoriy rang qo'yishi mumkin.
Qoida: per-block faqat o'sha blokni o'zgartiradi, boshqalarga tegmaydi.
Yechim β 11
{
"version": 3,
"settings": {
"spacing": {
"spacingScale": {
"operator": "*",
"mediumStep": 1.5,
"increment": 1.5,
"steps": 5,
"unit": "rem"
}
}
}
}
spacingScale WordPress'ga bo'shliq pog'onalarini matematik formula bilan avtomatik hosil qildiradi: mediumStep (o'rta qiymat 1.5rem) dan boshlab, operator (*) va increment (1.5) bilan steps (5) ta pog'ona yaratadi.
Nega birga ishlamaydi: spacingScale (avtomatik) va spacingSizes (qo'lda) bir xil narsani β bo'shliq presetlarini β belgilaydi. Ikkalasini berib bo'lmaydi, chunki WordPress qaysi birini ishlatishni bilolmaydi. Bittasini tanlang: aniq nazorat kerak bo'lsa spacingSizes, tez sozlash kerak bo'lsa spacingScale.
Yechim β 12
{
"$schema": "https://schemas.wp.org/wp/6.7/theme.json",
"version": 3,
"settings": {
"appearanceTools": true,
"useRootPaddingAwareAlignments": true,
"layout": {
"contentSize": "650px",
"wideSize": "1200px"
},
"color": {
"defaultPalette": false,
"defaultGradients": false,
"defaultDuotone": false,
"custom": true,
"palette": [
{ "slug": "asosiy", "color": "#2563eb", "name": "Asosiy" },
{ "slug": "ikkilamchi", "color": "#16a34a", "name": "Ikkilamchi" },
{ "slug": "matn", "color": "#1e293b", "name": "Matn" },
{ "slug": "fon", "color": "#f8fafc", "name": "Fon" }
]
},
"typography": {
"fluid": true,
"defaultFontSizes": false,
"fontSizes": [
{ "slug": "small", "size": "1rem", "name": "Kichik", "fluid": false },
{
"slug": "medium",
"size": "1.25rem",
"name": "Orta",
"fluid": { "min": "1.125rem", "max": "1.25rem" }
},
{
"slug": "large",
"size": "2rem",
"name": "Katta",
"fluid": { "min": "1.5rem", "max": "2rem" }
}
]
},
"spacing": {
"defaultSpacingSizes": false,
"units": ["px", "rem", "vw", "%"],
"spacingSizes": [
{ "slug": "30", "size": "0.75rem", "name": "Kichik" },
{ "slug": "40", "size": "1.5rem", "name": "Orta" },
{ "slug": "50", "size": "clamp(2rem, 5vw, 3rem)", "name": "Katta" }
]
},
"blocks": {
"core/button": {
"color": {
"custom": false,
"palette": [
{ "slug": "asosiy", "color": "#2563eb", "name": "Asosiy" }
]
}
}
}
}
}
Bu to'liq dizayn tizimi:
- appearanceTools + useRootPaddingAwareAlignments β zamonaviy boshqaruvlar.
- layout β kontent/wide kengliklar.
- 4 rangli palitra, hamma default'lar o'chirilgan.
- Fluid typography β 3 o'lcham (small qattiq, medium/large suyuq).
- Spacing β 3 responsive preset.
- Per-block: core/button faqat bitta brend rangidan tanlaydi (custom: false + cheklangan palitra) β tugmalar doim bir xil ko'rinadi.
Bu fayl ch16-test test temasiga yozilib, php -r "json_decode(...)" bilan yaroqli JSON ekani va har kaliti WP_Theme_JSON::VALID_SETTINGS bilan mosligi tasdiqlandi.
β¬ οΈ Oldingi: 15 β Block temaga kirish Β· π README Β· Keyingi: 17 β theme.json II: styles β‘οΈ