web-dev-qa-db-fra.com

Le thème enfant ne remplace pas les thèmes parents style.css

Je viens de créer un thème enfant, mais chaque modification apportée dans style.css n'écrase pas le style.css parent. Les autres fichiers fonctionnent. Je viens de le faire comme ça:

  1. Créer un nouveau dossier Childtheme dans le répertoire de thèmes
  2. Copiez le fichier original style.css.
  3. Ajouter à son en-tête "Template: orion"
  4. Sélectionné et activé mon thème de l'enfant dans l'option de thème Wordpress.

Et maintenant, lorsque je change des éléments dans child style.css, la page s’occupe toujours de la modification. Pourquoi?

4
Jan

Il est à noter que la feuille de style enfant charge après les styles du thème parent, ce qui ne devrait donc pas poser de problème. Je pense que ce qui se passe ici, c'est que vous essayez de modifier des styles qui ne se trouvent pas dans la feuille de style parent, mais dans d'autres feuilles de style personnalisées. Si tel est le cas, vos modifications ne fonctionneront pas, car la feuille de style de votre thème enfant se charge probablement avant les feuilles de style personnalisées du thème parent.

Il convient également de noter que @import ne doit pas être utilisé pour importer la feuille de style parent. La bonne façon est de le mettre en file d'attente en utilisant wp_enqueue_style() accroché à wp_enqueue_scripts

Voici comment vous mettez correctement en file d'attente et ajoutez la feuille de style parent à l'enfant.

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

A partir du codex, voici comment votre feuille de style devrait ressembler

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


/* =Theme customization starts here
-------------------------------------------------------------- */

NOTE

J'ai mis à jour le codex avec cette information dans ce post

EDIT

À partir d'un commentaire ci-dessous

Si le thème parent n'utilise pas wp_enqueue_style (), comment peut-on enque style.css du thème parent sans manipuler les modèles du thème parent? Ce point n'est pas clair dans le Codex que vous avez mis à jour. Pouvez-vous clarifier avec un exemple?.

Je veux commencer par ceci, si vous êtes un auteur de thème, s'il vous plaît,NEVERajoutez des feuilles de style ou des scripts via des balises <link> dans l'en-tête de votre thème. C'est la mauvaise façon de le faire. Mettez correctement en file d'attente et enregistrez ces styles et scripts via le hook wp_enqueue_scripts, comme décrit dans le Codex.

Pour être honnête, je n'ai jamais réalisé qu'il y avait encore des auteurs de thèmes qui le font. Je pense que le meilleur moyen probable de résoudre ce problème consiste à copier le header.php parent dans votre thème enfant et à supprimer (supprimer) manuellement les styles et les scripts de l'en-tête.

Vous pouvez ensuite procéder à la mise en file d'attente et les enregistrer comme d'habitude en utilisant wp_enqueue_scripts comme dans l'exemple ci-dessus. Rappelez-vous simplement, utilisez get_templatedirectory_uri () `pour interroger et enregistrer les scripts et les styles du thème parent, et rappelez-vous que l'ordre dans lequel vous chargez les styles et les scripts est important. Si un script/style dépend d’un autre, chargez-le after ce script/style spécifique

12
Pieter Goosen

J'ai trouvé ce fil en lisant le chapitre sur le thème des enfants dans WordPress Codex.

J'ai construit un thème enfant basé sur Simone (qui est, à son tour, basé sur _s underscores ) et créé un fichier functions.php avec le code recommandé:

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

Cependant, l'utilisation de cette méthode a créé un problème dans mon thème enfant. J'ai signalé le problème dans GitHub: link . La solution consistait à supprimer la constante PHP_INIT_MAX de la pièce add_action().

Je me demande s’il s’agit d’un problème lié à Simone ou s’il concerne également d’autres thèmes (auquel cas il pourrait y avoir un problème dans la fonction) ...

Je vous remercie!

0
jorgeleandrobr

J'ai eu le même problème, je l'ai résolu en modifiant le dossier du thème enfant et les fichiers à l'intérieur des autorisations sur 775. Ce n'est peut-être pas le moyen le plus sûr, mais cela a fonctionné. Faites-moi savoir si cela fonctionne pour vous :)

0
Asaf Lopez

Assurez-vous que votre thème parent n'utilise pas wp_enqueue_style () dans son fichier functions.php.

Si tel est le cas, vous pouvez également mettre la feuille de style enfant en file d'attente à partir de son 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' );
}

Voici un exemple de l'apparence de l'en-tête dans votre fichier style.css de thèmes enfants

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

0
Brad Dalton