Skip to content
Themes

Hindi Umaandar ang Block Template sa WordPress? Magsimula sa Database

Ibalik ang WordPress sa paghahain ng template file ng tema mo sa pamamagitan ng pagbura sa kopyang nasa database mula sa Site Editor, saka alisin sa hinala ang pangalan ng file at ang caching.

Nailathala

Halos tiyak na binabalewala ang template file mo dahil may kopya sa database na nananalo. Sa sandaling buksan mo ang template sa Site Editor at pindutin ang Save, sumusulat ang WordPress ng wp_template post record, at mula noon ang record na iyon ang inihahain kapalit ng .html file sa folder ng tema mo — kaya bawat pagbabagong ginagawa mo sa file pagkatapos noon ay hindi nakikita sa harap. Ang pagbura sa record na iyon ang solusyon, at ito ang unang dapat suriin bago mo hipuin ang hierarchy, ang pangalan ng file, o ang cache.

Kumpirmahing may kopya sa database

Pumunta sa Appearance → Editor → Templates. Anumang template na inihahain ng WordPress mula sa database ay may marka sa listahan — depende sa bersyon ng WordPress mo, nakasulat sa badge ang Customized o lumalabas ang template sa ilalim ng filter na Customized. Ang badge na iyon ang buong sagot. Kung nariyan ito, hindi ginagamit ang file mo.

Pwede mo ring suriin ang parehong bagay mula sa command line, na mas mabilis at gumagana kahit nagwawala ang Site Editor:

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

Bawat hilera ay isang override sa database. Tumutugma ang post_name sa slug ng template, kaya ang hilerang pinangalanang single ay tinatabunan ang templates/single.html.

Isang detalyeng nagpapatalisod sa marami: nakatali ang mga record na ito sa isang tema sa pamamagitan ng taxonomy term, hindi sa pamamagitan ng path. Kung papalitan mo ang pangalan ng folder ng tema mo, mananatili sa database ang naka-save na templates pero titigil silang tumugma sa aktibong tema, at biglang babalik sa mga file ang site. Mukha itong nawala raw ang mga kustomisasyon sa halip na binabalewala ang file ko — parehong mekanismo, magkasalungat na sintomas.

Burahin ito

Sa Site Editor, buksan ang options menu ng template (ang tatlong tuldok sa tabi nito) at piliin ang Clear customizations — sa ibang bersyon, ang tawag dito ay Reset. Binubura niyan ang record sa database at bumabalik ang kontrol sa file na nasa disk.

Kung Delete ang inaalok ng menu sa halip na Clear customizations o Reset, ang template na iyon ay nasa database lamang at walang file sa likod nito. Ang pagbura nito ay tuluyang nag-aalis ng template at babagsak ang WordPress pababa sa hierarchy.

Mula sa WP-CLI, gamit ang ID mula sa listahan sa itaas:

wp post delete 482 --force

Maging tapat ka sa sarili mo tungkol sa gastos dito: ang pagbura ng kustomisasyon ay permanenteng tumatapon sa lahat ng ginawa mo sa Site Editor para sa template na iyon, at hindi ito maibabalik. Kung may tunay na trabaho sa bersyong nasa Site Editor, kopyahin muna ang block markup — buksan ang template sa editor, lumipat sa code view, at i-paste ang resulta sa .html file mo. Sa ganoon, ang file na ang magiging pinagmumulan ng katotohanan at walang mawawala.

Paano pumipili ang WordPress ng template

Gumagamit ang block themes ng parehong lohika ng hierarchy gaya ng classic themes, .html files lang sa templates/ sa halip na .php files sa ugat ng tema. Naglalakad ang WordPress mula pinakatiyak hanggang pinakamalawak at ginagamit ang unang file na umiiral.

TinitingnanSinusuri sa ganitong pagkakasunod
Isang postsingle-post-{slug}.htmlsingle-post.htmlsingle.htmlsingular.htmlindex.html
Isang pahinapage-{slug}.htmlpage-{id}.htmlpage.htmlsingular.htmlindex.html
Isang category archivecategory-{slug}.htmlcategory-{id}.htmlcategory.htmlarchive.htmlindex.html
Isang custom post typesingle-{post-type}.htmlsingle.htmlsingular.htmlindex.html
Ang 404 page404.htmlindex.html

Dalawang bagay ang tuluyang nag-o-override nito. Una, ang record sa database na inilarawan sa itaas. Pangalawa, ang templateng tuwirang itinalaga sa isang post o pahina — buksan ang post editor, hanapin ang Template panel sa sidebar, at tingnan kung may tiyak na napili roon. Laging tinatalo ng tuwirang pagtatalaga ang hierarchy, at hindi ito nakikita maliban kung hahanapin mo.

Marupok ang mga template na batay sa slug sa paraang dapat mong isaisip. Tumutugma lang ang page-about.html habang about ang slug ng pahina. Palitan ang pangalan ng pahina tungo sa about-us at titigil ang template sa paggana nang walang babala at walang error.

Template kontra template part

Ang template ay naglalabas ng buong tanawin at pinipili ng hierarchy. Ang template part ay piraso lamang — header, footer, sidebar — na hinihila ng mga template. Nasa parts/ ang mga part, nasa templates/ ang mga template, at hiwalay silang nakaimbak sa database bilang wp_template_part records.

Ang karaniwang kalituhan: ine-edit mo ang header, at lumalabas ang pagbabago sa mga pahinang hindi mo naman sinadyang hipuin. Tama ang asal na iyon. Iisang part ang ibinabahagi sa bawat templateng kasama ito. Kung gusto mo ng ibang header sa isang template, kailangan mo ng pangalawang part file at ng templateng tumutukoy dito — hindi ka kailanman bibigyan ng pagkakaiba kada template ng pag-edit sa ibinabahaging part.

Nangyayari rin ang kabaligtaran. Naglalagay ka ng buong layout ng pahina sa parts/ at nagtataka ka kung bakit hindi ito kinukuha ng hierarchy. Hindi kailanman kandidato sa hierarchy ang mga part; wala talagang tuwirang dadaan sa kanila.

Pangalan at kinalalagyan ng file

Suriin ang mga ito bago ka mag-akala ng mas kakaibang dahilan:

  • Ang folder ay templates/, maramihan, sa ugat ng tema. Hindi template/, hindi block-templates/. Ang block-templates/ ang tamang pangalan noong panahon ng Gutenberg plugin bago pa dumating sa core ang block themes, at marami pa ring tutorial ang nagpapakita nito — hindi na ito gumagana sa kasalukuyang WordPress.
  • Ang template parts ay nasa parts/, hindi sa template-parts/ (na kombensyon ng classic theme para sa PHP partials).
  • Ang extension ay .html. Binabalewala ang .php file sa loob ng templates/.
  • Maliliit na titik ang pangalan ng file at gumagamit ng gitling. Hindi tutugma ang single-Post.html o single_post.html. Sa filesystem na walang pakialam sa laki ng titik gaya ng macOS, gumagana ito nang lokal at nasisira sa Linux server — klasikong kabiguang gumagana sa makina ko.
  • Kailangang umiral ang templates/index.html. Kung wala ito, hindi iuuri ng WordPress ang tema bilang block theme at maaaring hindi man lang lumitaw ang Site Editor.
  • Kung nasa child theme ka, nauuna ang templates nito kaysa sa parent. Ang naiwang file sa child theme ay tahimik na tatalo sa parent file na ine-edit mo.

Ang custom templates na dapat mapipili sa post editor ay kailangan ding ideklara sa theme.json sa ilalim ng customTemplates, kasama ang batayang pangalan ng file, isang pamagat na nababasa ng tao, at ang post types na saklaw nito. Kung wala ang entry na iyon, umiiral ang file pero hindi kailanman lalabas sa Template panel.

Caching — huling suriin

Totoo ang caching pero ito ang pinakamalabong dahilan, at ang pagdakma rito agad ang dahilan kung bakit nauubos ang isang hapon ng mga tao.

Linisin ang page cache mo at, kung may persistent object cache ka gaya ng Redis o Memcached, linisin din iyon — pwedeng nakaimbak doon ang resulta ng pagpili ng template. Saka mag-reload nang hindi dumadaan sa cache ng browser.

Ang hindi makakatulong: ang paglinis ng OPcache. Ang block templates ay .html files at hindi kailanman kino-compile ng PHP, kaya walang kinalaman dito ang OPcache. Kung minsang mukhang naayos nito ito para sa iyo, may iba pang nabago sa parehong sandali.

Naipit ka pa rin?

Kung walang record sa database, tama ang pangalan ng file, walang tuwirang pagtatalaga ng template sa post, at nalinis na ang mga cache, tingnan ang mga plugin. Anumang nagpi-filter sa pagpili ng template — page builder, membership plugin, multilingual plugin, LMS — ay kayang magpasok ng sarili nitong template sa huling bahagi ng request. Lumipat sa isang default na block theme at subukan habang naka-disable ang mga plugin, saka buksan muli ang mga ito isa-isa.

At kung umaandar naman ang template pero walang laman ang lumalabas, ibang problema iyon: tingnan kung wasto ang block markup sa file, dahil ang maling anyo ng block comment ay maaaring magpaalis sa editor ng nilalaman nang tahimik sa halip na maglabas ng error.

FAQ

Mga Tanong

Bakit hindi umaandar ang block template ko sa WordPress?

Kadalasan dahil may naka-save na kopya sa database na nag-o-override sa file. Sa sandaling i-edit mo ang template sa Site Editor at pindutin ang Save, gumagawa ang WordPress ng wp_template post record at ito ang inihahain kapalit ng .html file sa folder ng tema mo. Bawat pagbabago sa file pagkatapos noon ay hindi na nakikita sa harap.

Paano ko papagamitin sa WordPress ang file ng tema ko sa halip na ang bersyon ng Site Editor?

Buksan ang Appearance tapos Editor tapos Templates, hanapin ang template, at gamitin ang options menu nito para burahin ang mga kustomisasyon o i-reset ito. Binubura niyan ang record sa database at ibinabalik ang kontrol sa file na nasa disk. Kung Delete ang inaalok ng menu sa halip na Reset, nasa database lang umiiral ang template at walang file sa likod nito.

Saan inilalagay ang block template files sa isang WordPress theme?

Ang buong templates ay nasa templates folder sa ugat ng tema, at ang mga muling nagagamit na seksyon ay nasa parts folder. Pareho silang gumagamit ng .html extension, maliliit na titik sa pangalan ng file, at gitling sa halip na underscore. Kailangan ding umiral ang templates/index.html sa isang block theme, kung hindi ay hindi ito ituturing ng WordPress na block theme.

Ano ang pagkakaiba ng template at template part?

Ang template ay naglalabas ng buong pahina at pinipili ng template hierarchy batay sa kung ano ang tinitingnan. Ang template part ay piraso lamang gaya ng header o footer na hinihila ng isang template. Ang pag-edit sa header part ay nagbabago sa bawat template na kasama ito, kaya madalas mukhang napunta sa maling lugar ang mga pagbabago sa part.

Nagdudulot ba ang caching ng hindi pag-update ng block templates?

Minsan, pero ito ang pinakamalabong dahilan at dapat itong huling suriin. Kayang magtago ng lumang markup ng page caches at persistent object caches, kaya linisin muna pareho bago ka maghinuha. Walang epekto ang paglinis ng OPcache dito, dahil .html files ang block templates at hindi kailanman kino-compile ng PHP.

Bakit tumigil sa paggana ang page-slug template ko?

Ang mga template na batay sa slug ay itinutugma sa kasalukuyang slug ng post habang nagre-request. Ang pagpapalit ng pangalan ng pahina ay nagpapalit ng slug nito, kaya tahimik na tumitigil sa pagtugma ang page-about.html kapag naging about-us na ang pahina. Ganoon din sa category at tag templates. Palitan ang pangalan ng file para tumugma sa bagong slug o italaga ang template nang tuwiran sa sidebar ng post editor.