Məzmuna keç
Mövzular

Blok Şablonu Tətbiq Olunmur? İşə Verilənlər Bazasından Başlayın

Temanızın şablon faylını üstələyən Sayt Redaktoru nüsxəsini verilənlər bazasından təmizləyərək WordPress-i yenidən sizin faylınızı göstərməyə məcbur edin, sonra fayl adlarını və keşi yoxlayın.

Nəşr olundu

Şablon faylınız, demək olar ki, mütləq ona görə nəzərə alınmır ki, verilənlər bazasındakı bir nüsxə qalib gəlir. Şablonu Sayt Redaktorunda açıb Yadda saxla düyməsini basdığınız an WordPress bir wp_template yazısı yazır və həmin andan tema qovluğunuzdakı .html faylının əvəzinə həmin qeyd göstərilir — yəni fayla etdiyiniz bütün sonrakı redaktələr ön tərəfdə görünmür. Həlli həmin qeydi təmizləməkdir və iyerarxiyaya, fayl adına, yaxud keşə toxunmazdan əvvəl ilk yoxlamalı olduğunuz şey elə budur.

Verilənlər bazası nüsxəsinin olduğunu təsdiqləyin

Görünüş → Redaktor → Şablonlar bölməsinə keçin. WordPress-in verilənlər bazasından göstərdiyi hər şablon siyahıda işarələnir — WordPress versiyanızdan asılı olaraq nişan “Fərdiləşdirilib” yazır, yaxud şablon “Fərdiləşdirilib” filtrinin altında görünür. Həmin nişan bütün cavabdır. O varsa, sizin faylınız istifadə olunmur.

Eyni şeyi əmr sətrindən də yoxlaya bilərsiniz — bu daha sürətlidir və Sayt Redaktoru düzgün işləmədikdə belə nəticə verir:

wp post list --post_type=wp_template --fields=ID,post_name,post_status,post_title
wp post list --post_type=wp_template_part --fields=ID,post_name,post_status,post_title

Hər sətir bir verilənlər bazası override-ıdır. post_name şablonun slug-ı ilə üst-üstə düşür, yəni single adlı sətir templates/single.html faylının üstünü örtür.

İnsanları çaşdıran bir detal: bu qeydlər temaya yol (path) ilə deyil, bir taksonomiya termini ilə bağlanır. Temanızın qovluq adını dəyişsəniz, saxlanmış şablonlar verilənlər bazasında qalır, amma aktiv temaya uyğun gəlməyi dayandırır və sayt qəflətən fayllara qayıdır. Bu, “faylım nəzərə alınmır” yox, “fərdiləşdirmələrim yoxa çıxdı” kimi görünür — mexanizm eyni, simptom əksinədir.

Onu təmizləyin

Sayt Redaktorunda şablonun seçimlər menyusunu (yanındakı üç nöqtə) açın və Fərdiləşdirmələri təmizlə seçimini işarələyin — bəzi versiyalarda buna Sıfırla deyilir. Bu, verilənlər bazası qeydini silir və nəzarət diskdəki fayla qayıdır.

Menyu Fərdiləşdirmələri təmizlə və ya Sıfırla əvəzinə Sil təklif edirsə, həmin şablon yalnız verilənlər bazasında var və arxasında fayl yoxdur. Onu silmək şablonu bütövlükdə aradan qaldırır və WordPress iyerarxiya üzrə aşağı düşür.

WP-CLI-dan, yuxarıdakı siyahıdan bir ID ilə:

wp post delete 482 --force

Buradakı qiymət barədə özünüzlə dürüst olun: fərdiləşdirmələri təmizləmək həmin şablon üçün Sayt Redaktorunda qurduğunuz hər şeyi həmişəlik silir və bunu geri qaytarmaq mümkün deyil. Sayt Redaktoru versiyasında əsl iş varsa, əvvəlcə blok markup-unu köçürün — şablonu redaktorda açın, kod görünüşünə keçin və nəticəni öz .html faylınıza yapışdırın. Beləliklə fayl həqiqətin mənbəyinə çevrilir və heç nə itmir.

WordPress şablonu necə seçir

Blok temalar klassik temalarla eyni iyerarxiya məntiqindən istifadə edir, sadəcə tema kökündəki .php faylları əvəzinə templates/ qovluğundakı .html faylları ilə. WordPress ən konkretdən ən ümumiyə doğru gedir və mövcud olan ilk faylı işlədir.

BaxılanBu ardıcıllıqla yoxlanır
Tək yazısingle-post-{slug}.htmlsingle-post.htmlsingle.htmlsingular.htmlindex.html
Səhifəpage-{slug}.htmlpage-{id}.htmlpage.htmlsingular.htmlindex.html
Kateqoriya arxivicategory-{slug}.htmlcategory-{id}.htmlcategory.htmlarchive.htmlindex.html
Xüsusi yazı növüsingle-{post-type}.htmlsingle.htmlsingular.htmlindex.html
404 səhifəsi404.htmlindex.html

İki şey bunu tamamilə üstələyir. Birincisi, yuxarıda təsvir olunan verilənlər bazası qeydi. İkincisi, yazıya və ya səhifəyə birbaşa təyin edilmiş şablon — yazı redaktorunu açın, yan paneldə Şablon bölməsini tapın və orada konkret nəsə seçilib-seçilmədiyini yoxlayın. Açıq təyinat hər dəfə iyerarxiyanı üstələyir və axtarmasanız, gözə görünmür.

Slug əsaslı şablonlar elə bir şəkildə kövrəkdir ki, bunu yadda saxlamağa dəyər. page-about.html yalnız səhifənin slug-ı about olduğu müddətdə uyğun gəlir. Səhifənin adını about-us etsəniz, şablon heç bir xəbərdarlıq və səhv olmadan tətbiq olunmağı dayandırır.

Şablon və şablon hissəsi

Şablon bütöv bir görünüşü render edir və iyerarxiya tərəfindən seçilir. Şablon hissəsi isə şablonların içəri çəkdiyi fraqmentdir — başlıq, altlıq, yan panel. Hissələr parts/, şablonlar templates/ qovluğunda yaşayır və verilənlər bazasında wp_template_part qeydləri kimi ayrıca saxlanılır.

Ən çox rast gəlinən çaşqınlıq: başlığı redaktə edirsiniz və dəyişiklik toxunmaq istəmədiyiniz səhifələrdə görünür. Bu, düzgün davranışdır. Bir hissə onu daxil edən hər şablon tərəfindən paylaşılır. Bir şablonda fərqli başlıq istəyirsinizsə, ikinci bir hissə faylı və ona istinad edən şablon lazımdır — paylaşılan hissəni redaktə etmək sizə heç vaxt şablona görə fərqləndirmə verməyəcək.

Bunun əksi də olur. Tam səhifə quruluşunu parts/ qovluğuna qoyub iyerarxiyanın onu niyə götürmədiyini düşünürsünüz. Hissələr iyerarxiyada ümumiyyətlə namizəd deyil; heç nə birbaşa onlara yönləndirilmir.

Fayl adı və yerləşməsi

Daha ekzotik bir şey güman etməzdən əvvəl bunları yoxlayın:

  • Qovluq temanın kökündə, cəm halda templates/ adlanır. template/ yox, block-templates/ də yox. block-templates/ blok temalar nüvəyə düşməzdən əvvəl, Gutenberg plagini dövründə düzgün ad idi və hələ də bir çox dərslikdə göstərilir — müasir WordPress-də işləmir.
  • Şablon hissələri parts/ qovluğuna gedir, template-parts/ qovluğuna yox (bu, PHP fraqmentləri üçün klassik tema konvensiyasıdır).
  • Uzantı .html-dir. templates/ içindəki .php faylı nəzərə alınmır.
  • Fayl adları kiçik hərflərlə yazılır və defis işlədir. single-Post.html və ya single_post.html uyğun gəlməyəcək. macOS kimi böyük-kiçik hərfə həssas olmayan fayl sistemində bu, yerli mühitdə işləyir, Linux serverində isə sınır — klassik “mənim maşınımda işləyirdi” nasazlığı.
  • templates/index.html mütləq mövcud olmalıdır. Onsuz WordPress temanı blok tema kimi təsnif etmir və Sayt Redaktoru ümumiyyətlə görünməyə bilər.
  • Child temada işləyirsinizsə, onun şablonları valideynin şablonlarından üstündür. Child temada qalmış köhnə bir fayl redaktə etdiyiniz valideyn faylını səssizcə üstələyəcək.

Yazı redaktorunda seçilə bilən xüsusi şablonlar həm də theme.json faylında customTemplates altında — faylın baza adı, oxunaqlı başlıq və aid olduğu yazı növləri ilə — elan olunmalıdır. Bu qeyd olmadan fayl mövcuddur, amma Şablon panelində heç vaxt görünmür.

Keş — ən sonda yoxlayın

Keş real problemdir, amma ən az ehtimal olunan səbəbdir və ilk növbədə ona əl atmaq insanların bir günortasını necə itirdiyidir.

Səhifə keşinizi təmizləyin, Redis və ya Memcached kimi davamlı obyekt keşi işlədirsinizsə, onu da boşaldın — şablon həlli nəticələri orada saxlana bilər. Sonra brauzer keşini keçərək səhifəni yeniləyin.

Nəyin köməyi olmayacaq: OPcache-i təmizləmək. Blok şablonları .html faylıdır və heç vaxt PHP tərəfindən kompilyasiya edilmir, ona görə OPcache-in onlarla heç bir əlaqəsi yoxdur. Bir dəfə OPcache-i boşaltmaq bunu düzəltmiş kimi görünübsə, deməli eyni vaxtda başqa nəsə dəyişib.

Hələ də ilişib qalmısınız?

Verilənlər bazası qeydi yoxdursa, fayl adı düzgündürsə, yazıya açıq şablon təyin edilməyibsə və keşlər artıq təmizlənibsə, plaginlərə baxın. Şablon həllini filtrləyən hər şey — səhifə qurucusu, üzvlük plagini, çoxdilli plagin, LMS — sorğunun sonlarında öz şablonunu yerləşdirə bilər. Standart blok temaya keçin və plaginlər söndürülmüş halda sınayın, sonra bir-bir yenidən qoşun.

Bir də əgər şablon tətbiq olunur, amma boş render olunursa, bu, ayrı bir problemdir: fayldakı blok markup-unun düzgün olduğunu yoxlayın, çünki qüsurlu blok şərhi redaktorun səhv verməsi əvəzinə məzmunu səssizcə silməsinə səbəb ola bilər.

FAQ

Suallar

WordPress-də blok şablonum niyə tətbiq olunmur?

Adətən verilənlər bazasında saxlanan nüsxə faylı üstələdiyi üçün. Şablonu Sayt Redaktorunda redaktə edib Yadda saxla düyməsini basdığınız an WordPress bir wp_template yazısı yaradır və tema qovluğunuzdakı .html faylının əvəzinə onu göstərir. Həmin andan sonrakı bütün fayl redaktələri ön tərəfdə görünmür.

WordPress-i Sayt Redaktoru versiyası əvəzinə tema faylımı işlətməyə necə məcbur edim?

Görünüş, sonra Redaktor, sonra Şablonlar bölməsini açın, şablonu tapın və onun seçimlər menyusundan fərdiləşdirmələri təmizləyin və ya sıfırlayın. Bu, verilənlər bazası qeydini silir və nəzarəti diskdəki fayla qaytarır. Menyu Sıfırla əvəzinə Sil təklif edirsə, deməli şablon yalnız verilənlər bazasında var və arxasında fayl yoxdur.

WordPress temasında blok şablon faylları hara qoyulur?

Tam şablonlar temanın kökündəki templates qovluğuna, təkrar istifadə olunan hissələr isə parts qovluğuna qoyulur. Hər ikisi .html uzantısından, kiçik hərflərdən və alt xətt yerinə defisdən istifadə edir. Blok tema həm də templates/index.html faylının mövcudluğunu tələb edir, əks halda WordPress temanı ümumiyyətlə blok tema saymır.

Şablon ilə şablon hissəsi arasında fərq nədir?

Şablon bütöv səhifəni göstərir və nəyə baxıldığına əsasən şablon iyerarxiyası tərəfindən seçilir. Şablon hissəsi isə başlıq və ya altlıq kimi bir fraqmentdir və şablon onu içəri çəkir. Başlıq hissəsini redaktə etmək onu daxil edən bütün şablonları dəyişir — buna görə hissə redaktələri çox vaxt səhv yerə tətbiq olunmuş kimi görünür.

Keş blok şablonlarının yenilənməməsinə səbəb olurmu?

Bəzən, amma bu, ən az ehtimal olunan səbəbdir və ən sonda yoxlanmalıdır. Səhifə keşləri və davamlı obyekt keşləri köhnəlmiş markup saxlaya bilər, ona görə nəticə çıxarmadan əvvəl hər ikisini təmizləyin. OPcache-i təmizləmək burada heç nə vermir, çünki blok şablonları .html fayllarıdır və heç vaxt PHP tərəfindən kompilyasiya edilmir.

page-slug şablonum niyə işləməyi dayandırdı?

Slug əsaslı şablonlar sorğu zamanı cari yazının slug-ı ilə tutuşdurulur. Səhifənin adını dəyişmək onun slug-ını dəyişir, ona görə səhifə about-us olan kimi page-about.html səssizcə uyğun gəlməyi dayandırır. Eyni şey kateqoriya və teq şablonlarına da aiddir. Ya faylın adını yeni slug-a uyğunlaşdırın, ya da şablonu yazı redaktorunun yan panelindən birbaşa təyin edin.