Laden der style.css eines untergeordneten Themas nach der des übergeordneten Themas


7

Ich versuche, meine untergeordneten Themen zu laden, style.cssnachdem das übergeordnete Thema style.cssbereits geladen wurde. Ich habe jedoch festgestellt, dass das style.cssnicht in die Warteschlange gestellt werden muss, da es implizit vom WordPress-Kern in die Warteschlange gestellt wird.

Also stelle ich es explizit so in die Warteschlange, wo es davon abhängt, ob es parent-stylebereits geladen wurde:

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

Das Problem dabei ist, dass es jetzt zweimal geladen wird . Einmal implizit und dann explizit. Wie kann ich das meines Kindes style.cssnach dem des Elternteils laden, ohne es zweimal zu laden?

So headsieht das aus:

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

WordPress lädt style.css nicht, daher denke ich, dass das übergeordnete Thema ist. Können Sie Ihre header.php aus Ihrem Thema einfügen? Und aus der Datei functions.php im übergeordneten Code, in den ein Stylesheet eingebunden ist?
Andy Macaulay-Brook

Welcher der Stile wird zweimal geladen?
Max Yudin

@ MaxYudin, er meinte Kinderthemen style.css.
Bravokeyl

@ Bravokeyl hmm. Jetzt lese ich noch einmal die Frage, die richtig klingt. Möglicherweise verweist das übergeordnete Thema eher auf das Stylesheet-Verzeichnis als auf das Vorlagenverzeichnis. Schwer zu helfen, ohne zu sehen.
Andy Macaulay-Brook

@ AndyMacaulay-Brook, du bist absolut richtig. Ich denke, das übergeordnete Thema könnte es laden (zum Beispiel: Genesistut es)
bravokeyl

Antworten:


9

Wie @Andy Macaulay-Brook betonte, wird WordPress nicht geladen child-theme's style.css. Ich denke, das übergeordnete Thema könnte es in die Warteschlange stellen.

  • style.cssStellen Sie das untergeordnete Thema zuerst in die Warteschlange und stellen Sie es dann in die Warteschlange
  • En-Warteschlange Eltern style.css vor Kind Thema der style.css

Stellt das untergeordnete Thema in die Warteschlange style.css

Sie können die Datei style.css des untergeordneten Themas mithilfe des Handles aus der Warteschlange entfernen. Sie können das Handle entweder anhand des übergeordneten Themas (vorausgesetzt, es wird daraus geladen) oder anhand des Links der Seitenquelle ermitteln.

Zum Beispiel:

Der Link von der Site mit Twenty Fifteen themesieht so aus

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

Für welches Handle ist twentyfifteen-stylewelches die ID des Link-Tags, aber ohne -css.

Wir können dies also durch wp_dequeue_styleEinbinden in die Warteschlange entfernenwp_enqueue_scripts

wp_dequeue_style('twentyfifteen-style');

En-Warteschlange Eltern style.css vor dem Kind Thema style.css (abhängig von der Liste der Abhängigkeiten)

Indem Sie die Priorität des wp_enqueue_scriptsHooks unter dem Standardwert (10) ändern und das übergeordnete Thema laden style.css. (Ich bin mir nicht sicher, ob das überprüft werden muss)

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

Cool. Ich hatte nicht bemerkt, dass der Griff als Ausweis verwendet wurde. Praktisch.
Andy Macaulay-Brook

Das war sehr hilfreich! Das sollte es tun. :) Vielen Dank!
Shmuli

Ich denke, die Prioritäten dieses Hooks werden durch die Arrays von Abhängigkeiten überschrieben. Es ist sicherer, die Abhängigkeiten aufzulisten, um die gewünschte Reihenfolge zu erhalten.
Andy Macaulay-Brook

@ AndyMacaulay-Brook, ja, verstanden, hatte ein wenig Zweifel, bevor ich es gerade überprüfte functions.wp-styles.phpund unterrichtete class-wp-dependencies.
Bravokeyl

Ich habe festgestellt, dass es von `wp_enqueue_style ('thm-style', get_stylesheet_uri ());` in die Datei functions.php des Elternteils geladen wurde.
Shmuli
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.