Úvodní stránka › Fórum podpory WordPressu › Šablony, CSS (zobrazení webu) › Vlastní adresář pro šablony
Štítky: ABSPATH, functions.php, register_theme_directory(), var_dum()
Zvolené téma obsahuje celkem 6 odpovědí. Do diskuze (2 účastníci) se naposledy zapojil uživatel Twinsen a poslední změna je stará 11 let, 3 měsíce.
-
AutorPříspěvky
-
11. ledna 2015 (12:54) #21667
Ahoj vespolek,
snažím se na localhostu nastavit vlastní “sdílený” adresář se šablonami, který bude viditelný pro všechny weby, které spravuji. Samotný WP je v podadresáři a
WP_HOMEodkazuje na root. Adresář se šablonami je v rootu.Dle codexu používám
register_theme_directory();Výsledek je ten, že se sice načte nabídka všech šablon, které mám ve vlastním adresáři, ale chybí jim náhled “screenshot.png” (podívám-li se do zdroje, vidím, že je tam špatná cesta – nějak takto
http://localhost/user/name/...). Pokud se snažím o aktivaci šablony, hlásí to, že je šablona asi poškozena a nastaví se opět defaultní (tu mám v samotném WP file systému).Pokud přesunu vlastní adresář se šablonami z rootu do podadresáře, kde je WP nainstalovaný, potom se mi načtou šablony i screenshoty – vše vypadá v pořádku, ale pokud se pokusím opět o aktivaci, stejná hláška o poškození šablony.
Cílem je mít ten vlastní adresář v rootu, tedy mimo samotný WP. Snažil jsem googlit co to dalo, ale bohužel bez výsledku.
Dokázal by tu někdo poradit?
11. ledna 2015 (20:49) #21672Kam vkládáte kód s funkcí register_theme_directory()? Jaký kód tam konkrétně používáte pro specifikaci cesty? Zkusil jsem např. následující kód, nahrál jsem šablonu do adresáře
wp-content/sablonya šla bez problémů aktivovat:register_theme_directory( ABSPATH . 'wp-content/sablony/' );12. ledna 2015 (12:58) #21680Kód s funkcí vkládám do aktuální šablony – do functions.php
Měl jsem tam toto:
register_theme_directory( $_SERVER['DOCUMENT_ROOT'] . '/themes' );v případě, že mám adresář “themes” v rootu, ale i tento kód
register_theme_directory( ABSPATH. 'themes/' );se chová bohužel stejně – vidím šablony, ale pokud se pokusím o aktivaci, napíše to, že je šablona asi poškozená (vyzkoušeno i s defaultními šablonami twenty*).
Ještě jsem si všiml, že pokud kliknu na “aktuální náhled” šablony místo aktivace, mám hlášku “Nezkoušíte podvádět?” nebo “Cheatin’ uh?”.
12. ledna 2015 (16:44) #21682Jasné, zásadní chyba je v tom, že vkládáte kód do aktuální šablony :-) Jakmile se totiž pokoušíte aktivovat jinou šablonu, tak přestane jít o aktuální šablonu a začne se načítat soubor
functions.phpz nové šablony, kde už tato funkce není, takže nelze aktivovat šablonu mimo základní adresář šablon…Tento kód musí být součástí nějakého jednoduchého pluginu, případně automaticky načítaného pluginu (
.phpsoubor ve složcewp-content/mu-plugins). A i logicky je to tímto způsobem také lepší, protože jde o úpravu, která se nijak netýká vzhledu konkrétní šablony, takže by neměla být součástí souborufunctions.php.Zkuste pak pomocí funkce var_dump() porovnat, jaké hodnoty vrací
$_SERVER['DOCUMENT_ROOT']aABSPATH, možná tam bude nějaký problém s cestou na operačním systému Windows.12. ledna 2015 (17:14) #21683Já jsem sice měl tu fci v obou šablonách, tedy teoreticky, pokud se načítala jiná aktivní šablona/functions.php, o kód bych neměl přijít, ale stejně to nechodilo..
Pomohlo to dát do toho MU pluginu – na to jsem nikde nenarazil – nyní to funguje přesně tak, jak jsem potřeboval.. :)
Díky moc za pomoc! Palec nahoru – dobrá práce..
12. ledna 2015 (20:14) #21686Díky! Pokud jste to měl v obou šablonách, tak už možná přestal platit kód v původní šabloně, ale zatím ještě nezačal platit kód v nové šabloně, nevím, nezkoumal jsem to…
Funguje to už v obou uváděných případech (i mimo adresář WordPressu)?
12. ledna 2015 (23:02) #21699Mohu potvrdit, že to funguje v mé popisované konfiguraci – tedy WP nainstalovaný v podadresáři (s indexem v rootu).
ABSPATHvrací cestu k adresáři, kde je WP nainstalovaný – tzn. pro načtení vlastního adresáře např. “themes” uvnitř WP použijiregister_theme_directory( ABSPATH . 'themes/' );Abych docílil možnosti instalovat šablony mimo WP, nejprve mě napadlo použít výše popisovaný
$_SERVER['DOCUMENT_ROOT']– tím dostanu cestu k rootu – ovšem tímto se dostanu do stejného stavu s chybovou hláškou při aktivaci jako dříve. Ani jiné pomocné fce na zjištění absolutní cesty k rootu mi uvnitř “register_theme_directory” nefungují – nakonec jsem to udělal taktoregister_theme_directory( ABSPATH . '../themes/' );a funguje to i mimo WP. -
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.