WordPress Газета дочерняя тема загружает CSS дважды

Я использую WordPress с газетной темой (как дочерняя тема). Я заметил, что мой пользовательский CSS из дочерней темы загружается дважды.

Я проверил function.php, и мне интересно, является ли вторая функция корнем моей проблемы?

if ( !function_exists( 'chld_thm_cfg_parent_css' ) ):
function chld_thm_cfg_parent_css() {
wp_enqueue_style( 'chld_thm_cfg_parent', trailingslashit( get_template_directory_uri() ) . 'style.css', array(  ) );
}
endif;
add_action( 'wp_enqueue_scripts', 'chld_thm_cfg_parent_css', 1001 );

if ( !function_exists( 'child_theme_configurator_css' ) ):
function child_theme_configurator_css() {
wp_enqueue_style( 'chld_thm_cfg_child', trailingslashit( get_stylesheet_directory_uri() ) . 'style.css', array( 'chld_thm_cfg_parent','td-theme','td-theme-demo-style' ) );
}
endif;
add_action( 'wp_enqueue_scripts', 'child_theme_configurator_css' );

Спасибо за вашу помощь.

Изменить 1: я нашел эти две строки кода через инспектор кода сайта. Как вы думаете, это может быть?

<link rel='stylesheet' id='td-theme-css'  href='.../wp-content/themes/Newspaper-lesser-old-child/style.css?ver=8.1.1504096948' type='text/css' media='all' />
<link rel='stylesheet' id='chld_thm_cfg_child-css'  href='.../wp-content/themes/Newspaper-lesser-old-child/style.css?ver=8.1.1504096948' type='text/css' media='all' />

1

Решение

Мы видим, что таблица стилей включается дважды с разными идентификаторами …:

<link rel='stylesheet' id='td-theme-css'
href='.../wp-content/themes/Newspaper-lesser-old-child/style.css?ver=8.1.1504096948' type='text/css' media='all' />
<link rel='stylesheet' id='chld_thm_cfg_child-css'
href='.../wp-content/themes/Newspaper-lesser-old-child/style.css?ver=8.1.1504096948' type='text/css' media='all' />

…так что мы можем использовать идентификаторы td-theme а также chld_thm_cfg_child чтобы найти проблему.

Вам нужно взглянуть на функции, вызываемые в wp_enqueue_scripts действие в вашем functions.php в родительской и дочерней темах.

Вы уже нашли, где ваши таблицы стилей ставятся в очередь в вашей дочерней теме, и по идентификатору видно, что она загружается с помощью следующего кода из вашего дочернего functions.php:

if ( !function_exists( 'child_theme_configurator_css' ) ):
function child_theme_configurator_css() {
wp_enqueue_style( 'chld_thm_cfg_child', trailingslashit( get_stylesheet_directory_uri() ) . 'style.css', array( 'chld_thm_cfg_parent','td-theme','td-theme-demo-style' ) );
}
endif;
add_action( 'wp_enqueue_scripts', 'child_theme_configurator_css' );

Так что теперь нам нужно отследить другой экземпляр. Вот где сложность
потому что вы не включили код постановки в очередь от родителя.

Потенциальные причины & Решения:

  1. Родительская тема использует get_stylesheet_directory_uri

Насколько я могу сказать, идентификатор td-theme происходит от темы газеты. Это говорит о том, что он использует get_stylesheet_directory_uri вместо get_template_directory_uri() загрузить таблицу стилей.

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

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

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

  1. Если ваша дочерняя тема включает его вместо родительской темы

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

wp_enqueue_style( 'td-theme', get_stylesheet_directory_uri() . '/style.css',
array(), $version);
wp_enqueue_style( 'chld_thm_cfg_child', get_stylesheet_directory_uri() . '/style.css',
array(), $version);

В вашем случае это не является проблемой, потому что вы используете другой идентификатор («chld_thm_cfg_parent») для загрузки родительской таблицы стилей.

Если это было случай, чтобы исправить это, вы должны использовать get_template_directory_uri для родительской таблицы стилей и get_stylesheet_directory_uri для ребенка, например:

/* load parent stylesheet from parent theme folder with get_template_directory_uri */
wp_enqueue_style( "td-theme", get_template_directory_uri() . '/style.css' ,
array(), $version);

/* load child stylesheet from child theme folder withget_stylesheet_directory_uri
Note: we include the parent's id in the dependencies array so it gets loaded first */
wp_enqueue_style( "chld_thm_cfg_child", get_stylesheet_directory_uri() . '/style.css',
array("parent-id"), $version);

(Обратите внимание, что это может привести к тому, что родительская тема будет включена дважды, в зависимости от того, как она включена в родительскую тему — но опять же, не видя реального кода, трудно точно знать).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]