get_template_directory_uri indică spre tema părinte, nu spre tema copil

18 iun. 2016, 07:10:01
Vizualizări: 127K
Voturi: 76

Problema pe care o întâmpin este că get_template_directory_uri indică spre tema părinte, astfel: site/wp-content/themes/twentythirteen/myGallery/gallery_functions_include.php

dar vreau să indice spre tema mea copil, care ar trebui să fie site/wp-content/themes/child-twentythirteen/myGallery/gallery_functions_include.php

ceea ce folosesc eu este include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php');

0
Toate răspunsurile la întrebare 3
5
135

get_template_directory_uri() va returna întotdeauna URI-ul temei părinte curente.

Pentru a obține URI-ul temei copil, trebuie să utilizați get_stylesheet_directory_uri().

Puteți găsi aceste în documentație, împreună cu o listă de alte funcții utile pentru obținerea diferitelor locații ale directorului temei.


Dacă preferați să utilizați o constantă, atunci TEMPLATEPATH este similar cu apelarea get_template_directory() (adică tema părinte), iar STYLESHEETPATH este similar cu apelarea get_stylesheet_directory() (adică tema copil).

Aceste constante sunt setate de WordPress core în wp-includes/default-constants.php și arată în esență astfel:

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

Dacă nu există o temă copil, atunci ambele funcții 'template' și 'stylesheet' vor returna locația temei părinte.

Observați diferența dintre aceste funcții și funcțiile care se termină cu _uri - acestea vor returna calea absolută pe server (ex. /home/example/public_html/wp-content/yourtheme), în timp ce funcțiile _uri vor returna adresa publică (aka URL) - ex. http://example.com/wp-content/themes/yourtheme.

18 iun. 2016 07:20:12
Comentarii

dar despre include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php'); acesta merge tot în directorul părinte

Elroy Fernandes Elroy Fernandes
18 iun. 2016 07:24:59

@ElroyFernandes Am adăugat acest lucru în răspunsul meu. STYLESHEETPATH este constanta pe care ai vrea să o folosești în schimb

Tim Malone Tim Malone
18 iun. 2016 07:31:29

Mulțumesc că ai răspuns la întrebare în loc să spui doar "citește manualul". Acest rezultat a apărut primul în rezultatele mele de căutare.

rinogo rinogo
4 mai 2017 21:46:28

Răspuns bun, dar denumirea e prost aleasă din partea WordPress - nu e doar pentru fișiere de stil, ci și pentru JS, resurse, includeri etc.

Paul Feakins Paul Feakins
21 sept. 2018 19:29:32

@PaulFeakins Nu începe cu inconsistențele de denumiri în WordPress - ăsta e un drum lung și întortocheat care duce cine-știe-unde! ;)

Tim Malone Tim Malone
22 sept. 2018 00:55:24
0

Ar trebui să mutați șabloanele personalizate, cele care nu sunt controlate de tema activă, într-un dosar copil.

Păstrați tema separată de toate fișierele personalizate, astfel încât tema poate fi actualizată fără a pierde munca personalizată.

Tema originală se află aici
------------------------------------
\\Site\wp-content\themes\some_theme
Tema copil se află aici
---------------------------
\\Site\wp-content\themes\some_theme-child

Stilurile și șabloanele personalizate, precum și toate fișierele incluse (cum ar fi JavaScript personalizat, imagini care nu sunt salvate în WP, fonturi personalizate, fișiere de date JSON și orice plugin-uri pe care le-ați putea încărca) ar trebui mutate în dosarul copil, ÎNAINTE de temă.

\themes\some_theme
\themes\some_theme-child\ (toate fișierele personalizate de șabloane PHP aici)
\themes\some_theme-child\images
\themes\some_theme-child\includes 
\themes\some_theme-child\languages
\themes\some_theme-child\json 
\themes\some_theme-child\style

Pentru paginile de stil personalizate (nu style.css suprascris al temei) încărcați cu wp_enqueue_style( 'some-css', get_stylesheet_directory() . '/style/some.css' , false, '0.0.1', 'all');

Folosiți get_stylesheet_directory_uri() cu apelurile xhr, etc.

6 iun. 2018 22:11:16
0

Înlocuiește

include (TEMPLATEPATH . '/path-to/my-file.php');

cu

include dirname( __FILE__ ) . '/path-to/my-file.php';

această soluție ar trebui să rezolve majoritatea problemelor comune

27 oct. 2020 09:35:58