Warum wird mein untergeordnetes CSS-Thema zweimal aufgerufen?

18

Ich habe ein untergeordnetes Thema gemäß den WP-Dokumenten erstellt und die erforderliche Funktion hinzugefügt

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

Irgendwie erhalte ich zwei Verweise auf mein untergeordnetes Stylesheet:

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

Warum das?

mmcglynn
quelle
Können Sie die Header-Informationen der Datei style.css im untergeordneten Design veröffentlichen?
Cybmeta

Antworten:

17

Dieser Beitrag ist von diesem Beitrag verlinkt, den ich jetzt mit den Änderungen in diesem Beitrag aktualisiert habe

Vielen Dank, dass Sie dieses Problem angesprochen haben. Ich habe das Szenario schnell getestet und der untergeordnete Stil wird tatsächlich zweimal geladen.

Als ich den Codex vor einiger Zeit aktualisiert habe, habe ich sichergestellt, dass der untergeordnete Stil nach dem übergeordneten Stil geladen wird. Dabei wurde nie berücksichtigt, dass dies standardmäßig erfolgt und der angegebene Code das untergeordnete Stylesheet tatsächlich zweimal lädt.

Dies kann leicht behoben werden, indem einfach $prioritydie Funktion entfernt und der Enqueue-Teil für das untergeordnete Thema entfernt wird. Ich habe alles erneut getestet, und es funktioniert. Es wäre schön, wenn ein paar Leute daran mitarbeiten könnten.

In der Zwischenzeit werde ich den Codex aktualisieren und auf diesen Beitrag verlinken.

Hier ist der Arbeitscode

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

BEARBEITEN

Für alle, für die dieser Beitrag nicht funktioniert, lesen Sie bitte diesen Beitrag . Sie müssen nachsehen, wie das übergeordnete Thema die Stile hinzufügt. Der Code in dieser Frage geht streng davon aus, dass die Stile im übergeordneten Element in der richtigen Weise geladen werden, wie sie sein sollten. Wenn nicht, schauen Sie sich die Alternativen in der verknüpften Antwort an und probieren Sie diese aus

Pieter Goosen
quelle
1
Wird testen. Es scheint möglich, dass WP sich nicht darum kümmert, dass das Stylesheet zweimal geladen wird, oder dass einige Gründe fehlen.
MMCGLYNN
Als sie auf Thema ist, traf ich ein paar Probleme mit dieser Methode, detailliert hier .
dMcClintock
Das Stylesheet wird nicht zweimal geladen, wenn Sie dieselbe 'ID' verwenden. Aber das schafft ein weiteres Problem - ich will das Kind Sheet enequeue so lädt es nach dem anderen CSS , damit ich es außer Kraft setzen kann ... Aber diese Duplikate nur den Stil (oder ignoriert , wenn die gleiche ‚id‘ verwenden)
PHP-b- Grader
1
Das Hauptproblem bei dieser Methode ist, dass der untergeordnete Stil die Versionsnummer des untergeordneten Themas nicht berücksichtigt. Es scheint die Versionsnummer des übergeordneten Themas einzugeben, was nicht immer ideal ist.
Garconis
@ pieter-Goosen ich das Beispiel an , gefolgt Child Themes , die die Versionsnummer des Kindes Thema verwendet: wp_get_theme()->get('Version'). Am Ende habe ich jedoch CSS für die WP-Version und die Child-Theme-Version dupliziert: <link rel="stylesheet" id="bushwick-style-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=4.9.8"...>und <link rel="stylesheet" id="bushwick-child-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=1.3.6"...>. Was wäre die Lösung in diesen Fällen?
IvanRF