Pourquoi mon thème enfant CSS est-il appelé deux fois?

18

J'ai créé un thème enfant en fonction des documents WP et ajouté la fonction requise

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

Quelque part, je me retrouve avec 2 références à ma feuille de style de thème enfant:

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

Pourquoi donc?

mmcglynn
la source
Pouvez-vous publier les informations d'en-tête du fichier style.css dans le thème enfant?
cybmeta

Réponses:

17

Cet article est lié à cet article que j'ai maintenant mis à jour avec les modifications de cet article

Merci d'avoir soulevé ce problème. J'ai rapidement testé le scénario et le style enfant est en fait chargé deux fois.

Lorsque j'ai mis à jour le codex il y a quelque temps, je me suis assuré que le style enfant serait chargé après le style parent, sans jamais prendre en compte que cela se fait par défaut et que le code donné chargerait en fait la feuille de style enfant deux fois.

Cela peut être facilement corrigé en supprimant simplement le $priorityde la fonction et en supprimant la partie de mise en file d'attente pour le thème enfant. J'ai tout retesté et ça marche. Ce serait bien si quelques personnes pouvaient collaborer à cela.

En attendant, je mettrai à jour le codex et le lien vers ce message.

Voici le code de travail

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

ÉDITER

Pour toute personne pour laquelle ce post ne fonctionne pas, veuillez consulter ce post . Vous devrez aller voir comment le thème parent ajoute les styles. Le code de cette question croit strictement que les styles dans le parent sont chargés de la manière correcte qu'ils devraient être. Sinon, regardez les alternatives dans la réponse liée et essayez-les

Pieter Goosen
la source
1
Va tester. Il semble possible que WP ne se soucie pas que la feuille de style soit chargée deux fois ou qu'il y ait une raison pour laquelle nous manquons.
mmcglynn
Comme c'est sur le sujet, j'ai rencontré quelques problèmes en utilisant cette méthode, détaillée ici .
dMcClintock
La feuille de style ne sera pas chargée deux fois si vous utilisez le même «id». Mais cela crée un autre problème - je veux mettre en file d'attente la feuille de style enfant pour qu'elle se charge après les autres CSS afin que je puisse la remplacer ... Mais cela ne fait que dupliquer le style (ou l'ignore si vous utilisez le même 'id')
php-b- niveleuse
1
Le problème principal avec cette méthode, que je peux dire, est que le style enfant ne tire pas le numéro de version du thème enfant. Il semble extraire le numéro de version du thème parent, ce qui n'est pas toujours idéal.
Garconis
@-pieter GOOSEN J'ai suivi l'exemple à Thèmes Enfant qui utilise le numéro de version du thème de l' enfant: wp_get_theme()->get('Version'). Cependant, je finis par avoir dupliqué CSS pour la version WP et la version thème enfant: <link rel="stylesheet" id="bushwick-style-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=4.9.8"...>et <link rel="stylesheet" id="bushwick-child-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=1.3.6"...>. Quelle serait la solution dans ces cas?
IvanRF