WordPress ekosystém

functions.php

Soubor šablony pro vlastní PHP kódy a úpravy chování WordPressu

(Soubor funkcí šablony)

Co je functions.php

functions.php je soubor šablony WordPressu, do kterého se píše vlastní PHP kód měnící chování webu. Nepřidává vzhled, přidává funkce: registruje menu, mění text v košíku, zapojuje skripty do stránky.

Proč se mu říká nebezpečný soubor

Načítá se při každém požadavku na web, dřív než se vykreslí jediný pixel. Chyba v zápisu se proto neprojeví rozbitým tlačítkem, ale bílou stránkou. A protože stejný soubor obsluhuje i administraci, spadne s webem i ona a opravit chybu zevnitř WordPressu už nelze. Musíte k souborům, přes SFTP nebo přes správce souborů na hostingu.

Plyne z toho jediné rozumné pravidlo: neupravovat naostro. Buď máte staging, kde se změna vyzkouší, nebo aspoň kopii souboru, kterou jde během minuty vrátit zpátky.

Kam kód patří a kam ne

Do functions.php se hodí to, co souvisí se vzhledem a chováním konkrétní šablony. Úpravy, které mají webu vydržet i po výměně šablony, patří spíš do vlastního malého pluginu, jinak odejdou spolu s ní. A pokud web nemá child theme, přepíše celý soubor první aktualizace rodičovské šablony.

Do functions.php sám nesahám, tohle zadávám vývojáři a je to tak správně. Moje část práce je jinde: ptám se, kde přesně bude kód žít a co se s ním stane při aktualizaci nebo výměně šablony. Typická ztráta měření vypadá totiž takhle. Web dostane nový vzhled a spolu se starou šablonou odejde i kód, který do ní kdysi někdo dopsal. Pět minut ptaní ušetří půl dne dohledávání.

Časté otázky

Můžu do functions.php vložit kód nalezený na internetu?

Technicky ano, prakticky je to nejčastější příčina bílé stránky. Vyzkoušejte ho nejdřív na stagingu a mějte po ruce původní podobu souboru.

Proč se kód nemá psát do rodičovské šablony?

Aktualizace šablony soubory přepíše a úprava zmizí. Patří proto do child theme, nebo do vlastního malého pluginu.

Web po úpravě zbělal, co teď?

Vraťte soubor do původního stavu přes SFTP nebo přes správce souborů na hostingu. Z administrace to nejde, ta je nedostupná také.