Поддержка Темы и шаблоны Почему в дочерней теме создается ссылка на подключение одного файла стиля два ра

  • Решено jurvrn

    (@jurvrn)


    Почему в дочерней теме создается ссылка на подключение одного файла стиля два раза? Ведь по сути подключается один и тоже файл из папки дочерней темы, хоть и указывают parent и child. Опытный путь подветрдил что если создать два файла в папке дочерней темы style и style2 и собственно указать во втором случае в коде style2, то сработают оба файла из дочерней темы.
    Вот таким кодом:
    (плагин Child Themes Generator)

    function jurvrn_easywp_enqueue_child_styles() {
    $parent_style = 'parent-style';
    	wp_enqueue_style($parent_style, get_template_directory_uri() . '/style.css' );
    	wp_enqueue_style(
    		'child-style',
    		get_stylesheet_directory_uri() . '/style2.css',
    		array( $parent_style ),
    		wp_get_theme()->get('Version') );
    	}
    add_action( 'wp_enqueue_scripts', 'jurvrn_easywp_enqueue_child_styles' );
Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, wpcute.ru

    В wp_enqueue_style первый параметр — это идентификатор файла стилей. Именно по нему определяется один это файл или нет. Т.к. у Вас они разные — подключаются оба файла.

    Denis Yanchevskiy (@denisco)? это я экспериментировал. Изначально они были одинаковы в обоих случаях — style.css. Это правильно два раза указывать?
    А если мне надо иметь дочерний основной стиль и дополнительный дочерний стиль — я могу создать два файла style1 и style2 и указать их в том коде один в первом месте, другой во втором случае? Это правильно будет? Но зачем плагин создает ссылки на два одинаковых файла?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, wpcute.ru

    Если Вы используете дочернюю тему, у Вас будет один style.css от родительской темы и один style.css от Вашей дочерней.

    Если Вам нужны дополнительные файлы стилей, Вы можете подключить их аналогично с помощью wp_enqueue_style. Как их называть и где хранить — это на Ваше усмотрение.

    Но зачем плагин создает ссылки на два одинаковых файла?

    Какой?

    Модератор Юрий

    (@yube)

    get_template_directory_uri — родительская
    get_stylesheet_directory_uri() — дочерняя

    Denis Yanchevskiy (@denisco) , плагин Child Themes Generator, создает код

    function jurvrn_easywp_enqueue_child_styles() {
    $parent_style = 'parent-style';
    	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 ),
    		wp_get_theme()->get('Version') );
    	}
    add_action( 'wp_enqueue_scripts', 'jurvrn_easywp_enqueue_child_styles' );

    одинаковые файлы.
    Как мне правильно подключить дочерний файл стилей и дополнительный файл? так:

    function jurvrn_easywp_enqueue_child_styles() {
    $parent_style = 'parent-style';
    	wp_enqueue_style($parent_style, get_template_directory_uri() . '/style-child-1.css' );
    	wp_enqueue_style(
    		'child-style',
    		get_stylesheet_directory_uri() . '/style-child-2.css',
    		array( $parent_style ),
    		wp_get_theme()->get('Version') );
    	}
    add_action( 'wp_enqueue_scripts', 'jurvrn_easywp_enqueue_child_styles' );

    Юрий (@yube), опытным путем выяснил что подключаются именно стили из файлов дочерней темы если в первом случае указать style1 и style2 и создать два таких файла…

    P.S. раньше я подключал стили так. Как правильнее (и не понятно мне причем там FontAwesome…)

    /*подключаем дополнительный стиль новых элементов в теме*/
    
    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-addon.css', array(  ) );
        }
    
    endif;
    
    add_action( 'wp_enqueue_scripts', 'chld_thm_cfg_parent_css', 10 );
    
    /*подключаем мобильный стиль темы */
    
    if ( !function_exists( 'child_theme_configurator_css' ) ):
    
        function child_theme_configurator_css() {
    
            wp_enqueue_style( 'chld_thm_cfg_separate', trailingslashit( get_stylesheet_directory_uri() ) . 'style-mobile.css', array( 'chld_thm_cfg_parent','easywp-maincss','font-awesome' ) );
        }
    
    endif;
    
    add_action( 'wp_enqueue_scripts', 'child_theme_configurator_css', 20 );
    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Почему в дочерней теме создается ссылка на подключение одного файла стиля два раза?

    Бывает, что родительская тема сама подключает файл style.css из дочерней, как это сделано во всех стандартных темах WordPress, в том числе и в Twenty Nineteen.

    Если создана дочерняя тема, то функция get_stylesheet_uri() возвращает URL файла style.css из неё, а не из родительской.

    В этом случае в дочерней теме имеет смысл подключить файл стилей из родительской: get_template_directory_uri() . '/style.css', а вот второй раз подключать свой собственный файл стилей не нужно.

    Sergey Biryukov (@sergeybiryukov), понятно, похоже на мой случай — что родительская тема будет подключать свой же основной стиль как бы по ссылке, которая прописана в дочерней теме.
    А если я хочу ещё свой дополнительный отдельный стиль подключить — то как раз второй файл для меня и будет? А если ещё третий нужен?

    Плагин другой создал вообще такой код:
    и там откуда то ещё и третий файл стилей взялся rtl.css ???? Впрочем по вашей ссылке он там тоже есть…

    <?php
    // Exit if accessed directly
    if ( !defined( 'ABSPATH' ) ) exit;
    
    // BEGIN ENQUEUE PARENT ACTION
    // AUTO GENERATED - Do not modify or remove comment markers above or below:
    
    if ( !function_exists( 'chld_thm_cfg_locale_css' ) ):
        function chld_thm_cfg_locale_css( $uri ){
            if ( empty( $uri ) && is_rtl() && file_exists( get_template_directory() . '/rtl.css' ) )
                $uri = get_template_directory_uri() . '/rtl.css';
            return $uri;
        }
    endif;
    add_filter( 'locale_stylesheet_uri', 'chld_thm_cfg_locale_css' );
    
    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', 10 );
             
    if ( !function_exists( 'child_theme_configurator_css' ) ):
        function child_theme_configurator_css() {
            wp_enqueue_style( 'chld_thm_cfg_separate', trailingslashit( get_stylesheet_directory_uri() ) . 'ctc-style.css', array( 'chld_thm_cfg_parent','easywp-maincss','font-awesome' ) );
        }
    endif;
    add_action( 'wp_enqueue_scripts', 'child_theme_configurator_css', 10 );
    
    // END ENQUEUE PARENT ACTION
    

    до конца не понял.

Просмотр 10 ответов — с 1 по 10 (всего 10)