web-dev-qa-db-fra.com

Chargement du style.css d'un thème enfant après celui du parent

J'essaie de charger le style.css de mon thème enfant après que le thème parent style.css a déjà été chargé. Cependant, j'ai remarqué que le style.css n'a pas besoin d'être mis en file d'attente puisqu'il est implicitement mis en file d'attente par le noyau WordPress.

Donc, je l'ai explicitement mis en file d'attente comme ceci, où il dépend du parent-style ayant déjà chargé:

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

Le problème avec ceci est que c'est maintenant chargé deux fois . Une fois implicitement, puis explicitement. Comment puis-je charger le style.css de mon enfant après le parent sans le charger deux fois?

Voici à quoi ressemble la head:

<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php bloginfo('name'); ?> | <?php is_front_page() ? bloginfo('description') : wp_title(''); ?></title>
    <?php if(isset($themeum['favicon'])){ ?>
        <link rel="shortcut icon" href="<?php echo $themeum['favicon']; ?>" type="image/x-icon"/>
    <?php }else{ ?>
        <link rel="shortcut icon" href="<?php echo get_template_directory_uri().'/images/plus.png' ?>" type="image/x-icon"/>
    <?php } ?>
    <link rel="stylesheet" type="text/css" href="">

    <link rel="profile" href="http://gmpg.org/xfn/11">
    <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
    <!--[if lt IE 9]>
    <script src="<?php echo get_template_directory_uri(); ?>/js/html5.js"></script>
    <![endif]-->
    <?php if(isset($themeum['before_head'])) echo $themeum['before_head'];?>
    <?php wp_head(); ?>
</head>
7
shmuli

Comme l'a souligné @Andy Macaulay-Brook, WordPress ne charge pas child-theme'sstyle.css. Je suppose que le thème parent pourrait être en-queue.

  • Commencez par mettre en file d'attente le style.css thème enfant puis le mettre en file d'attente
  • En-queue parent's style.css avant thème de l'enfant style.css

Supprimer la file d'attente du thème enfant style.css

Vous pouvez détourner le fichier style.css du thème enfant à l'aide de la poignée. Vous pouvez trouver la poignée en consultant le thème parent (en supposant qu'il soit chargé à partir de celui-ci) ou en consultant le lien du source de la page.

Par exemple:

Le lien depuis le site en utilisant Twenty Fifteen theme ressemble à ceci

<link rel='stylesheet' id='twentyfifteen-style-css'  href='http://wp.dev/wp-content/themes/twentyfifteen/style.css?ver=4.5.3-alpha-37528' type='text/css' media='all' />

Pour lequel le handle est twentyfifteen-style qui est le id de la balise link mais sans -css.

Donc, nous pouvons le retirer en utilisant wp_dequeue_style accrocher à wp_enqueue_scripts

wp_dequeue_style('twentyfifteen-style');

En-queue parent's style.css avant thème de l'enfant style.css (dépend de la liste des dépendances)

En modifiant la priorité du wp_enqueue_scripts moins que la valeur par défaut (10) et en chargeant le thème parent style.css. (Je ne suis pas sûr de cela doit vérifier)

function wpse_227769_enqueue_scripts() {
   //Load parent theme style.css here
}
add_action( 'wp_enqueue_scripts', 'wpse_227769_enqueue_scripts', 9 );
9
bravokeyl