get_template_directory_uri() în tema copil indică spre directorul temei copil

17 mai 2017, 00:09:17
Vizualizări: 25.6K
Voturi: 8

Conform documentației (https://codex.wordpress.org/Child_Themes și https://developer.wordpress.org/reference/functions/get_template_directory_uri/), înțeleg că get_template_directory_uri() ar trebui să returneze URL-ul directorului temei părinte atunci când este utilizat într-o temă copil. Dar acest lucru nu se întâmplă în cazul meu.

În tema copil pe care încerc să o dezvolt, când folosesc get_template_directory_uri() acesta returnează URL-ul pentru directorul temei copil, nu directorul temei sale părinte. Dacă fac click pe Detalii Temă pentru tema copil în pagina de gestionare a temelor, WordPress indică că tema este o temă copil a altei teme, exact cum mă așteptam. Am o

Template: parent

linie în style.css al temei copil.

Alte fapte relevante:

  • Folosesc WordPress Multi-Site
  • Am dezvoltat tema părinte și o folosesc pentru unul dintre celelalte site-uri din Multi-Site și funcționează perfect
  • Ambele teme (părinte și copil) sunt activate la nivel de Rețea și accesibile în site-ul la care lucrez
  • Am încercat să setez tema copil să indice spre tema twentyfourteen și observ același comportament, deci nu cred că este o problemă cu tema părinte
  • Am dezactivat toate plugin-urile pentru a vedea dacă vreunul dintre ele era problema, fără succes - niciunul dintre plugin-uri nu pare să fie cauza
  • Am creat o copie a temei twentyfourteen și am făcut-o temă copil a temei mele părinte și apare aceeași problemă
  • În copia mea a temei twentyfourteen, am adăugat apoi și o linie Template: în style.css pentru a o face temă copil a temei twentyfourteen și observ același comportament (adică, pagina de gestionare a temelor indică că tema copiată este copil al temei twentyfourteen dar funcția get_template_directory_uri nu îmi dă directorul temei părinte)

Are cineva sugestii despre care ar putea fi problema aici? Sau interpretez greșit modul în care ar trebui să funcționeze get_template_directory_uri()?

4
Comentarii

care este linia ta actuală Template: parent?

hwl hwl
17 mai 2017 02:21:11

Dacă folosești combinația de temă părinte/copil într-o instalație single site, funcția get_template_directory_uri() funcționează corect?

Nathan Johnson Nathan Johnson
17 mai 2017 03:19:52

@hwl - când am încercat să specific tema Twenty Fourteen ca părinte, linia era "Template: twentyfourteen". Și pagina de gestionare a temelor indica că tema copil era legată de Twenty Fourteen ca temă părinte.

Bill Bill
17 mai 2017 21:30:43

@NathanJohnson - Am instalat un site WordPress de test (fără multi-site, fără plugin-uri, foarte simplu) și get_template_directory_uri() funcționează conform așteptărilor - indică corect tema părinte într-o temă copil. Am început să copiez treptat modificările de configurație în site-ul de test (adică, transformându-l în multi-site, wp-config.php, .htaccess ...) și încă nu am reușit să reproduc problema pe site-ul de test, așa că nu știu încă care este problema. S-ar putea să fiu nevoit să fac o copie de rezervă a bazei de date de pe multi-site-ul la care lucrez și să o reinstalez.

Bill Bill
17 mai 2017 21:33:34
Toate răspunsurile la întrebare 2
2
11

Ceea ce aveți nevoie este get_stylesheet_directory_uri, care funcționează exact la fel ca get_template_directory_uri, dar va returna directorul temei copil dacă utilizați o temă copil și va returna directorul temei părinte dacă nu.

echo get_stylesheet_directory_uri();
17 mai 2017 00:35:26
Comentarii

Mulțumesc pentru răspuns, dar folosesc un child theme și încerc să obțin fișierul de stiluri al părintelui, nu al copilului. Urmez instrucțiunile de pe https://codex.wordpress.org/Child_Themes pentru a încărca fișierul de stiluri al părintelui împreună cu cel al copilului în child theme, dar funcția get_template_directory_uri() pe care o folosesc în exemplul lor returnează URL-ul child theme-ului, ceea ce nu mă ajută să obțin URL-ul pentru fișierul de stiluri al părintelui.

Bill Bill
17 mai 2017 02:31:48

oh, scuze, am înțeles greșit întrebarea ta. 1) Există vreun URL care arată acest comportament pentru a putea analiza mai atent? 2) Doar pentru a fi sigur, presupun că folosești handle-ul corect când încarci stilul temei părinte?

Celso Bessa Celso Bessa
17 mai 2017 03:58:17
2

CAUZĂ

OK, după ce am analizat codul WordPress și baza de date, problema era

get_option('template')

care este apelat de

wp-includes/theme.php : get_template()

returna tema copil, în loc de tema părinte, dar doar pentru un anumit site din rețeaua mea multi-site. Când am verificat în tabelul wp_{SITE-ID}_options pentru acel site, înregistrarea din baza de date unde

option_name = "template"

înregistrarea indica spre tema copil, nu spre tema părinte. Nu sunt sigur de ce secțiunea "Detalii temă" din Panoul de administrare afișa că tema copil problematică era o temă copil, când înregistrarea din baza de date nu era corectă.

Nu sunt sigur de ce această înregistrare din baza de date a fost afectată, dar când încercam inițial să dezvolt tema copil problematică, aceasta a stricat întreaga rețea WordPress Multi-Site (inclusiv Panoul de administrare), așa că am redenumit temporar folderul temei pe server pentru a forța WordPress să revină la o temă implicită - poate aceasta a fost cauza.

SOLUȚIE

Schimbarea temei la o altă temă și apoi revenirea la tema copil a rezolvat problema - acest lucru a determinat înregistrarea relevantă din baza de date (adică option_name = "template" din wp_{SITE-ID}_options) să fie setată la valoarea corectă, adică tema părinte.

18 mai 2017 23:29:01
Comentarii

Ești eroul. Mulțumesc că ai împărtășit soluția ta aici. Am preluat o temă "copil" prost făcută care nu se referea corect la tema părinte. Soluția ta a fost exact ceea ce era necesar.

Glitcher Glitcher
1 aug. 2018 13:59:34

Eroul de care avem nevoie, dar nu merităm. A funcționat și pentru mine. Mulțumesc.

Sajidur Rahman Sajidur Rahman
15 sept. 2022 12:40:02