De ce este apelat CSS-ul temei copil de două ori?

6 nov. 2014, 17:55:40
Vizualizări: 22.5K
Voturi: 23

Am creat o temă copil conform documentației WordPress și am adăugat funcția necesară

<?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')  );
}

Cumva ajung să am 2 referințe către foaia de stiluri a temei copil:

<link rel='stylesheet' id='twentythirteen-style-css'  href='http://DOMAIN.COM/wp-content/themes/twentythirteen-child/style.css?ver=2013-07-18' type='text/css' media='all' />

<link rel='stylesheet' id='child-style-css'  href='http://DOMAIN.COM/wp-content/themes/twentythirteen-child/style.css?ver=4.0' type='text/css' media='all' />

De ce se întâmplă acest lucru?

1
Comentarii

Poți posta informațiile din antetul fișierului style.css din tema copil?

cybmeta cybmeta
6 nov. 2014 18:24:08
Toate răspunsurile la întrebare 1
5
20

Acest articol este legat de acest articol pe care l-am actualizat acum cu modificările din acest post

Vă mulțumesc pentru că ați adus în discuție această problemă. Am testat rapid scenariul și stilul copil este de fapt încărcat de două ori.

Când am actualizat codex-ul acum ceva timp, m-am asigurat că stilul copil va fi încărcat după stilul părinte, fără să iau în considerare faptul că acest lucru se face implicit și codul furnizat ar încărca de fapt fișierul de stil copil de două ori.

Aceasta poate fi ușor corectată prin simpla eliminare a $priority din funcție și eliminarea părții de enqueue pentru tema copil. Am retestat totul și funcționează. Ar fi frumos dacă câțiva oameni ar putea colabora la acest lucru.

Între timp, voi actualiza codex-ul și voi lega de acest articol.

Iată codul funcțional

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' );
}

EDITARE

Pentru cei pentru care acest articol nu funcționează, vă rugăm să consultați acest articol. Va trebui să verificați cum tema părinte adaugă stilurile. Codul din această întrebare presupune strict că stilurile din tema părinte sunt încărcate în modul corect în care ar trebui să fie. Dacă nu, consultați alternativele din răspunsul legat și încercați acelea

6 nov. 2014 18:35:06
Comentarii

Voi testa. Se pare posibil ca WP să nu își pese dacă fișierul de stiluri este încărcat de două ori sau că există o logică pe care nu o înțelegem.

mmcglynn mmcglynn
6 nov. 2014 18:50:49

Fiind pe subiect, am întâmpinat câteva probleme folosind această metodă, detalii aici.

dMcClintock dMcClintock
9 nov. 2014 17:22:47

Fișierul de stiluri nu va fi încărcat de două ori dacă folosești același 'id'. Dar asta creează altă problemă - vreau să încarc fișierul de stiluri al child theme-ului după celelalte fișiere CSS ca să le pot suprascrie... Dar asta doar duplică stilul (sau îl ignoră dacă folosești același 'id')

php-b-grader php-b-grader
27 oct. 2015 08:39:46

Problema principală cu această metodă, din câte pot observa, este că stilul copil nu preia numărul de versiune al temei copil. Se pare că preia numărul de versiune al temei părinte, ceea ce nu este întotdeauna ideal.

Garconis Garconis
28 sept. 2018 20:08:51

@pieter-goosen Am urmat exemplul de la Teme Copil care utilizează numărul de versiune al temei copil: wp_get_theme()->get('Version'). Totuși, ajung să am CSS duplicat pentru versiunea WP și versiunea temei copil: <link rel="stylesheet" id="bushwick-style-css" href="/wp-content/themes/bushwick-child/style.css?ver=4.9.8"...> și <link rel="stylesheet" id="bushwick-child-css" href="/wp-content/themes/bushwick-child/style.css?ver=1.3.6"...>. Care ar fi soluția în aceste cazuri?

IvanRF IvanRF
5 oct. 2018 02:30:39