Ve WordPress nemůžu vytvořit v menu více jak 89 položek

Na oficiálních stránkách WordPress se probíralo velice zajímavé téma. Jeden z uživatelů potřeboval do menu dát větší množství položek a narazil na limit 89. Jakmile se pokusil přidat další, tak nepřibyly. Dokonce i když vytvořil další a dal je před pomyslné číslo 90, tak došlo k stejnému problému, jen v tomto případě byla smazána položka na místě 90 a všechny za ní. Řešení překvapivě nebylo přímo ve WordPress ale bylo nutné zasáhnout do nastavení serveru.

Za všechno může hodnota max_input_vars, která je v PHP od verze 5.3.9. Její účelem je omezit maximální množství proměnných, které se přenáší přes $_GET, $_POST a $_COOKIE. Důvodem je ochrana před DoS útoky (denial of service). Pokud je limit překročen dojde k vypsání varování (E_WARNING) a všechny nadbytečné proměnné jsou ořezány. Vzhledem k tomu, že běžná instalace WordPress má hlášení chyb a varování vypnuté, tak jediným projevem je právě nepřidání další položky v menu.

Standardní omezení je max_input_vars 1000, což vystačí na 89 položek v menu. Většině z nás to opravdu stačí a popravdě 1000 posílaných proměnných je opravdu hodně. Pokud jste však na tento limit narazili a potřebujete jej řešit je nutné zkusit jedno z následujících řešení.

php.ini

Hodnota max_input_vars je uložena v souboru php.ini, který ovlivňuje chod PHP. Pokud máte přístup k nastavení serveru a tedy i tomuto souboru stačí hodnotu navýšit třeba na dvojnásobek. Pozor aby vše začalo fungovat je nutné server restartovat. Není nutné jej rovnou vypnout a zapnout. Stačí softwarový restart služby (většinou restarovat službu apache).

Ve většině případů však k php.ini přístup mít nebudete, takže je třeba zkusit další možnosti anebo se obrátit na správce serveru, který k php.ini má přístup. Některé webhostingy mají i možnost tuto hodnotu změnit z jejich administrace. Podpora vám jistě napíše více informací.

Mimochodem pokud hodláte kvůli této chybě odejít od stávajícího poskytovatele, protože vám navýšení neumožní, tak si dobře rozmyslete kam, protože nabídka VPS (virtuálních serverů) nemusí vždy znamenat, že získáte plnou kontrolu. Některé VMS (virtual managed server) jsou jen vylepšené webhostingy pro více domén. Skutečné VPS vám poskytnou přístup takzvaný root přístup. Pokud netušíte co to je, anebo máte jen mlhavé tušení tak na VPS zapomeňte a najděte jiné řešení.

.htaccess

Některé webhostingy umožňují ovlivnit velikost max_input_vars pomocí .htaccess podobně jako to jde u navýšení limitu pro paměť anebo délky běhu skriptu. Můžete tedy zkusit do něj vložit:

php_value max_input_vars 3000

Ve většině případů to však nebude fungovat, protože to server nepovoluje.

Problém v Suhosin

Některé servery, které používají program Suhosin, jsou také příčinou problému s maximálním množství odeslaných proměnných. Zde je potřeba požádat správce serveru, aby upravil nastavení v php.ini na:

suhosin.post.max_vars = 5000

suhosin.request.max_vars = 5000

Další řešení

Poslední řešením, které doporučují hlavně lidé ze SEO branže je vyhnout se takovémuto počtu položek v menu. Každá položka je totiž i odkazem a vyhledávače se údajně na velké množství odkazů, i když v tomto případě jen interních, dívají skepticky. Zamyslete se tak nad navigací jestli by nešla zjednodušit. Některé věci dát dohromady anebo udělat nějaký rozcestník, který bude obsahovat nějakou grafiku, aby návštěvník lépe chápal hierarchii stránek. Není nic horšího než tápající návštěvník, který netuší kde vlastně je.

Autor Ginoza

Pracuji na zákaznické podpoře jednoho známého webhostingu.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *