Ú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á 10 let, 2 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_HOME
odkazuje 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/sablony
a š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.php
z 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 (
.php
soubor 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).
ABSPATH
vrací 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.