Почему моя дочерняя тема CSS вызывается дважды?

18

Я создал дочернюю тему в соответствии с документами WP и добавил необходимую функцию

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

Каким-то образом я получаю 2 ссылки на мою таблицу стилей дочерней темы:

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

Это почему?

mmcglynn
источник
Можете ли вы опубликовать информацию заголовка файла style.css в дочерней теме?
cybmeta

Ответы:

17

Этот пост связан с этим постом, который я сейчас обновил с изменениями в этом посте

Спасибо, что подняли этот вопрос. Я быстро протестировал сценарий, и дочерний стиль загружается дважды.

Когда я обновил кодекс некоторое время назад, я убедился, что дочерний стиль будет загружен после родительского стиля, никогда не принимая во внимание, что это на самом деле выполняется по умолчанию, и данный код фактически загружает дочернюю таблицу стилей дважды.

Это можно легко исправить, просто удалив $priorityфункцию из функции и удалив часть очереди для дочерней темы. Я перепроверил все, и это работает. Было бы хорошо, если бы несколько человек могли сотрудничать с этим.

А пока обновлю кодекс и ссылку на этот пост.

Вот рабочий код

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

РЕДАКТИРОВАТЬ

Для тех, для кого этот пост не работает, смотрите этот пост . Вам нужно будет посмотреть, как родительская тема добавляет стили. Код в этом вопросе строго верит, что стили в родительском элементе загружены правильно, как и должно быть. Если нет, посмотрите на альтернативы в связанном ответе и попробуйте их

Питер Гусен
источник
1
Буду тестировать. Кажется возможным, что WP не заботится о том, что таблица стилей загружается дважды, или что мы пропускаем какое-то обоснование.
mmcglynn
Поскольку это по теме, я столкнулся с парой проблем с использованием этого метода, подробно здесь .
dMcClintock
Таблица стилей не будет загружена дважды, если вы используете один и тот же идентификатор. Но это создает другую проблему - я хочу поставить дочернюю таблицу стилей в очередь, чтобы она загружалась после другого css, чтобы я мог ее переопределить ... Но это только дублирует стиль (или игнорирует, если используется тот же 'id')
php-b- грейдер
1
Я могу сказать, что основная проблема этого метода заключается в том, что дочерний стиль не использует номер версии дочерней темы. Кажется, он указывает номер версии родительской темы, что не всегда идеально.
Гарконис
@ Pieter-ГУСНО я последовал пример на ребенке тему , которая использует номер версии детской темы: wp_get_theme()->get('Version'). Однако в итоге я продублировал CSS для версии WP и версии дочерней темы: <link rel="stylesheet" id="bushwick-style-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=4.9.8"...>и <link rel="stylesheet" id="bushwick-child-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=1.3.6"...>. Каково было бы решение в этих случаях?
ИванРФ