Tema copil nu suprascrie fișierul style.css al temei părinte

10 oct. 2014, 17:24:44
Vizualizări: 49.1K
Voturi: 4

Tocmai am creat o temă copil, dar orice modificare pe care o fac în style.css nu suprascrie fișierul style.css al temei părinte - alte fișiere funcționează. Am procedat astfel:

  1. Am creat un nou folder pentru tema copil în directorul de teme
  2. Am copiat fișierul style.css original în acesta
  3. Am adăugat în header "Template: orion"
  4. Am selectat și activat tema mea copil în opțiunile de teme WordPress

Și acum când modific lucruri în style.css-ul temei copil... pagina arată la fel după modificări. De ce?

0
Toate răspunsurile la întrebare 4
8
13

Trebuie remarcat că fișierul de stiluri al temei copil se încarcă după stilurile temei părinte, așa că aceasta nu ar trebui să fie o problemă. Cred că ceea ce se întâmplă aici este că încercați să modificați stiluri care nu se află în fișierul de stiluri al părintelui, ci în alte fișiere de stiluri personalizate. Dacă acesta este cazul, atunci modificările dvs. nu vor funcționa, deoarece cel mai probabil fișierul de stiluri al temei copil se încarcă înainte de fișierele de stiluri personalizate din tema părinte.

De asemenea, trebuie remarcat că @import nu ar trebui utilizat pentru a importa fișierul de stiluri al părintelui. Modul corect este să-l încărcați folosind wp_enqueue_style() legat de wp_enqueue_scripts.

Iată cum să încărcați și să adăugați corect fișierul de stiluri al părintelui în tema copil.

add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style' );
function enqueue_parent_theme_style() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
}

Din Codex, acesta este modul corect în care ar trebui să arate fișierul dvs. de stiluri:

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Tema Copil Twenty Fourteen
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  twenty-fourteen-child
*/


/* =Personalizarea temei începe aici
-------------------------------------------------------------- */

NOTĂ

Am actualizat Codex-ul cu aceste informații în acest post

EDITARE

Dintr-un comentariu de mai jos

Dacă tema părinte nu utilizează wp_enqueue_style(), atunci cum se poate încărca style.css al temei părinte FĂRĂ a modifica șabloanele temei părinte? Acest punct nu este clar în Codex-ul pe care l-ai actualizat. Poți să clarifici, te rog, cu un exemplu?

Vreau să încep cu următoarele: dacă sunteți autor de teme, vă rog, NICIOdată nu adăugați fișiere de stiluri sau scripturi prin tag-uri <link> în header-ul temei dumneavoastră. Acesta este un mod incorect de a face acest lucru. Încărcați și înregistrați aceste stiluri și scripturi corect prin hook-ul wp_enqueue_scripts, așa cum este descris în Codex.

Să fiu sincer, nu mi-am dat seama că există încă autori de teme care fac acest lucru. Cred că cel mai bun mod de a rezolva această problemă este să copiați header.php al părintelui în tema copil și să eliminați manual (ștergeți) stilurile și scripturile din header.

Puteți apoi să procedați la încărcarea și înregistrarea lor în mod normal folosind wp_enqueue_scripts, ca în exemplul de mai sus. Doar amintiți-vă, folosiți get_template_directory_uri() pentru a încărca și înregistra scripturi și stiluri din tema părinte și amintiți-vă, ordinea în care încărcați stilurile și scripturile este importantă aici. Dacă un script/stil depinde de altul, încărcați-l după acel script/stil specific.

11 oct. 2014 12:17:25
Comentarii

Idee bună să actualizezi pagina Codex ;-)

birgire birgire
11 oct. 2014 14:57:31

Mulțumesc, sunt complet de acord. Sper că acest lucru va ajuta pe alții în viitor să facă lucrurile puțin mai bine :-)

Pieter Goosen Pieter Goosen
11 oct. 2014 15:00:42

dacă tema părinte nu folosește wp_enqueue_style() atunci cum poți încărca style.css-ul părintelui FĂRĂ să modifici template-urile temei părinte?

Tara Tara
6 nov. 2014 23:09:56

dacă tema părinte nu utilizează wp_enqueue_style(), atunci cum se poate încărca style.css al temei părinte fără a modifica șabloanele temei părinte. După cum știți, scopul creării unei teme copil este tocmai acela de a nu modifica șabloanele temei părinte.

Tara Tara
6 nov. 2014 23:12:06

@Pieter Goosen: Dacă tema părinte nu utilizează wp_enqueue_style(), atunci cum se poate încărca style.css al temei părinte FĂRĂ a modifica șabloanele temei părinte? Acest aspect nu este clar în Codex-ul pe care l-ai actualizat. Poți să clarifici, te rog, cu un exemplu. Mulțumesc.

Tara Tara
6 nov. 2014 23:16:10

@Tara Mulțumesc pentru observație, sincer nu m-am gândit că oamenii mai fac asta în continuare. Te rog să vezi ediția pe care am adăugat-o la răspunsul meu

Pieter Goosen Pieter Goosen
7 nov. 2014 06:36:31

@PieterGoosen Folosesc o temă care are diferite versiuni, cum ar fi întunecată, deschisă etc. Aceasta adaugă o foaie de stil personalizată pentru acestea. Întrebarea mea este cum să o suprascriu din tema copil?

Imran Subhani Imran Subhani
30 iun. 2015 13:58:17

@Imran ar trebui să deschizi o întrebare nouă pentru această problemă :-)

Pieter Goosen Pieter Goosen
30 iun. 2015 14:00:52
Arată celelalte 3 comentarii
2

Asigurați-vă că tema părinte nu utilizează wp_enqueue_style() în fișierul functions.php.

Dacă o face, puteți încărca fișierul de stiluri al temei copil și din functions.php

add_action( 'wp_enqueue_scripts', 'load_my_child_styles', 20 );
function load_my_child_styles() {
    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri().'/style.css', array('twentyfourteen-style'), '1.0.0' );
}

Iată un exemplu de cum ar trebui să arate antetul în fișierul style.css al temei copil

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Twenty Fourteen Child Theme
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  twenty-fourteen-child
*/

http://codex.wordpress.org/Child_Themes

10 oct. 2014 17:58:18
Comentarii

Salut, vreau doar să menționez că partea cu @import nu este recomandată, este mai bine să o încărcăm prin enqueue. Vezi de exemplu acest fir de discuție.

birgire birgire
10 oct. 2014 20:38:35

@birgire Mulțumesc pentru actualizare. Vezi acest articol cu o metodă alternativă http://wordpress.stackexchange.com/a/167903/9884

Brad Dalton Brad Dalton
9 nov. 2014 13:39:13
1

Am găsit acest thread în timp ce citeam capitolul despre Teme Copil în WordPress Codex.

Am creat o temă copil bazată pe Simone (care la rândul ei este bazată pe _s underscores) și am creat un fișier functions.php cu codul recomandat:

<?php

add_action( 'wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX);
function enqueue_child_theme_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), array('parent-style')  );
}

Totuși, folosirea acestei metode a creat o problemă în tema mea copil. Am raportat problema pe GitHub: link. Soluția a fost eliminarea constantei PHP_INIT_MAX din funcția add_action().

Mă întreb dacă aceasta este o problemă specifică temei Simone sau dacă afectează și alte teme (caz în care ar putea fi o problemă în funcție)...

Mulțumesc!

20 oct. 2014 16:23:45
Comentarii

Ar fi trebuit să pui această întrebare. Din păcate, aceasta este prima dată când văd acest post de la tine. Această problemă a fost ridicată ieri și acum este rezolvată. Te rog să vezi acest post

Pieter Goosen Pieter Goosen
7 nov. 2014 06:15:16
1

Am avut aceeași problemă, am rezolvat-o modificând permisiunile folderului temei copil și ale fișierelor din interior la 775. Poate nu este cea mai sigură metodă, dar a funcționat. Spune-mi dacă funcționează și pentru tine :)

15 iun. 2017 09:03:51
Comentarii

Of. Nu îmi pot imagina nivelul de disperare care te-a condus la asta. Este atât de periculos. Aș căuta altă soluție sau altă temă.

Tedinoz Tedinoz
13 sept. 2018 03:25:19