get_template_directory_uri wskazujący na motyw nadrzędny, a nie podrzędny

35

Problem, który mam, polega na tym, że get_template_directory_uri wskazuje na motyw nadrzędny, taki jak site/wp-content/themes/twentythirteen/myGallery/gallery_functions_include.php

ale chcę, żeby wskazywała na mój motyw potomny, który powinien być site/wp-content/themes/child-twentythirteen/myGallery/gallery_functions_include.php

to, czego używam, to include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php');

Elroy Fernandes
źródło

Odpowiedzi:

70

get_template_directory_uri() zawsze zwróci identyfikator URI bieżącego motywu nadrzędnego.

Aby zamiast tego uzyskać identyfikator URI motywu potomnego, musisz go użyć get_stylesheet_directory_uri().

Można je znaleźć w dokumentacji , wraz z listą innych przydatnych funkcji umożliwiających uzyskanie różnych lokalizacji katalogu kompozycji.


Jeśli wolisz używać stałej, TEMPLATEPATHjest to podobne do wywoływania get_template_directory()(tj. Motywu nadrzędnego) i STYLESHEETPATHpodobne do wywoływania get_stylesheet_directory()(tj. Motywu podrzędnego).

Te stałe są ustawiane przez rdzeń WordPress wp-includes/default-constants.phpi wyglądają następująco:

define('TEMPLATEPATH', get_template_directory());
...
define('STYLESHEETPATH', get_stylesheet_directory());

Jeśli nie ma motywu podrzędnego, zarówno funkcje „szablonu”, jak i „arkusza stylów” zwrócą położenie motywu nadrzędnego.

Zwróć uwagę na różnicę między tymi funkcjami a funkcjami kończącymi się na _uri- zwrócą bezwzględną ścieżkę serwera (np. /home/example/public_html/wp-content/yourtheme), Podczas gdy _urifunkcje zwrócą adres publiczny (inaczej URL) - np. http://example.com/wp-content/themes/yourtheme.

Tim Malone
źródło
co z włączeniem (TEMPLATEPATH. '/myGallery/gallery_functions_include.php'); ten idzie również do katalogu nadrzędnego
Elroy Fernandes,
@ElroyFernandes Dodałem to do mojej odpowiedzi. STYLESHEETPATH ​​to stała, którą chcesz zamiast tego
Tim Malone
2
Dzięki za odpowiedź na pytanie zamiast po prostu powiedzenia RTM. To pojawiło się najpierw w moich wynikach wyszukiwania.
rinogo
2
Dobra odpowiedź, ale złe nazewnictwo ze strony WordPress - nie dotyczy tylko arkuszy stylów, dotyczy JS, zasobów, obejmuje itp.
Paul Feakins
1
@PaulFeakins Nie zaczynaj nazywania niekonsekwencji w WordPress - to długa i wietrzna droga, która wie, kto wie, gdzie! ;)
Tim Malone
0

Powinieneś przenieść szablony niestandardowe, które nie są kontrolowane przez aktywny motyw, do folderu podrzędnego.

Oddziel motyw od wszystkich niestandardowych plików, aby w ten sposób można było zaktualizować motyw bez utraty niestandardowej pracy.

Twój gotowy szablon znajduje się tutaj
------------------------------------
\\ Witryna \ wp-content \ themes \ some_theme
Twój motyw dziecka tu mieszka
---------------------------
\\ Witryna \ wp-content \ themes \ some_theme-child

Twoje niestandardowe style i szablony oraz wszystkie zawarte w nich elementy (takie jak niestandardowy javascript, obrazy, które nie są zapisywane w WP, niestandardowe czcionki, pliki danych json i wszelkie wtyczki, które możesz kolejkować) powinny zostać przeniesione do folderu podrzędnego POZA motywem.

\ themes \ some_theme
\ themes \ some_theme-child \ (wszystkie niestandardowe pliki szablonów php tutaj)
\ themes \ some_theme-child \ images
\ themes \ some_theme-child \ obejmuje 
\ themes \ some_theme-child \ languages
\ themes \ some_theme-child \ json 
\ themes \ some_theme-child \ style

W przypadku niestandardowych stron stylów ( nie przesłoniętego stylu.css ) należy wstawić za pomocą wp_enqueue_style ('some-css', get_stylesheet_directory () . '/Style/some.css', false, '0.0.1', 'all');

Używaj get_stylesheet_directory_uri () do wywołań xhr itp.

Greg Bologna
źródło