Tema copil nu suprascrie fișierul style.css al temei părinte
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:
- Am creat un nou folder pentru tema copil în directorul de teme
- Am copiat fișierul style.css original în acesta
- Am adăugat în header "Template: orion"
- 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?

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.

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

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?

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.

@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 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

@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?

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
*/

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 Mulțumesc pentru actualizare. Vezi acest articol cu o metodă alternativă http://wordpress.stackexchange.com/a/167903/9884

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!

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
