Suprascrie get_template_directory() în tema copil?

27 iun. 2015, 09:03:26
Vizualizări: 41.1K
Voturi: 13

Este posibil să înlocuiesc get_template_directory() în fișierul functions.php al temei mele copil?

Vreau să fac modificări în fișier:

/**
* Încarcă fișierul Custom Post types.
*/
require get_template_directory() . '/inc/post-types.php';

Evident, aș prefera ca munca mea să nu fie suprascrisă când actualizez tema, deci pot să deînregistrez fișierul din tema părinte și apoi să reînregistrez fișierul din tema copil în fișierul functions al temei copil?

4
Comentarii

Există vreo acțiune în post-types.php? Dacă da, poate fi eliminată acțiunea sau poate există un hook în acel fișier?

czerspalace czerspalace
27 iun. 2015 10:12:37

Înregistrarea post type-urilor are o acțiune care îți permite să le modifici, poate dacă explici ce vrei să schimbi în acel fișier, nu va fi nevoie să-l înlocuiești complet.

Milo Milo
27 iun. 2015 19:21:20

Trebuie să schimb multe. În principal numele și suporturile pentru diferitele custom post types.

Heather Heather
28 iun. 2015 00:03:57

Puteți utiliza get_template_directory_uri() în tema copil.

Pardeep Pardeep
4 oct. 2019 13:43:19
Toate răspunsurile la întrebare 2
1
30

Răspuns întârziat, dar în WordPress 4.7 au fost introduse două noi funcții pentru a aborda această întrebare.

get_theme_file_path() (pentru căi absolute de fișiere) și get_theme_file_uri() (pentru URL-uri) funcționează exact ca get_template_part() în sensul că vor căuta automat în tema copil acel fișier mai întâi, apoi vor reveni la tema părinte.

În exemplul tău, ai putea rescrie folosind 4.7 astfel:

/**
* Încarcă fișierul cu tipuri personalizate de postări.
*/
require get_theme_file_path( 'inc/post-types.php' );

Mai multe informații aici: https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/

9 dec. 2016 21:32:03
Comentarii

Nu văd cum acest lucru rezolvă problema, când creatorul temei a introdus require( get_template_directory() . '/includes/somefile.php' ); în functions.php al temei părinte. Cum pot înlocui somefile.php, păstrând codul temei părinte nemodificat? Înțeleg că creatorul temei părinte ar fi putut folosi o funcție mai bună, dar nu a făcut-o.

Fanky Fanky
29 oct. 2021 17:15:42
1
15

Trebuie să folosești get_stylesheet_directory_uri() în loc de get_template_directory() în tema ta copil.

Din codex-ul WordPress:

get_template_directory_uri()

În cazul în care este folosită o temă copil, această funcție va returna URI-ul directorului temei părinte. get_template_directory_uri() ar trebui folosită pentru resursele care nu sunt destinate să fie incluse/înlocuite de o temă copil. Folosește get_stylesheet_directory_uri() pentru a include resurse care sunt destinate să fie incluse/înlocuite de tema copil.

get_stylesheet_directory_uri()

În cazul în care este folosită o temă copil, această funcție va returna URI-ul directorului temei copil. Folosește get_template_directory_uri() pentru a evita înlocuirea de către o temă copil.

27 iun. 2015 09:57:31
Comentarii

Da, dar deoarece get_template_directory() se află în tema mea părinte, pot face ceva din tema mea copil pentru a schimba asta?

Heather Heather
27 iun. 2015 18:21:00