Поддержка Проблемы и решения css дочерней темы

  • Решено dmitriy88

    (@dmitriy88)


    Ранее для подключения стилей дочерней темы использовал такой код

    function themename_scripts() {
    	enqueue_versioned_style( 'nametheme', '/style.css' );
    }
    add_action( 'wp_enqueue_scripts', 'themename_scripts' );
    
    function enqueue_versioned_script( $handle, $src = false, $deps = array(), $in_footer = false ) {
    	wp_enqueue_script( $handle, get_template_directory_uri() . $src, $deps, filemtime( get_template_directory() . $src ), $in_footer );
    }
    function enqueue_versioned_style( $handle, $src = false, $deps = array(), $media = 'all' ) {
    	wp_enqueue_style( $handle, get_template_directory_uri() . $src, $deps = array(), filemtime( get_template_directory() . $src ), $media );
    }

    Я его удалил и теперь использую код из кодекса

    <?php
    add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
    function my_theme_enqueue_styles() {
     
        $parent_style = 'parent-style'; // This is 'twentyfifteen-style' for the Twenty Fifteen theme.
     
        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')
        );
    }

    В исходном коде страницы теперь вижу 2 файла css из дочерней темы
    <link rel='stylesheet' id='child-style-css' href='https://example.com/wp-content/themes/child-theme/style.css?ver=0.1.1' type='text/css' media='all' />
    и
    <link rel='stylesheet' id='twentythirteen-style-css' href='https://example.com/wp-content/themes/child-theme/style.css?ver=2013-07-18' type='text/css' media='all' />

    Как в исходном коде страницы избавиться от записи с id twentythirteen-style-css?

Просмотр 11 ответов — с 16 по 26 (всего 26)
  • вот это работает:

    
    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( 'genericons' ) );
        }
    endif;
    add_action( 'wp_enqueue_scripts', 'chld_thm_cfg_parent_css', 10 );
    

    Задвоение ушло, но нет возможности обновить css через Version

    <link rel='stylesheet' id='twentythirteen-style-css' href='https://example.com/wp-content/themes/child-theme/style.css?ver=2013-07-18' type='text/css' media='all' />

    Version имею в виду, который в самом файле styles.css дочерней темы. А «2013-07-18» правится в файле функции родительской темы, это неправильно править его, чтобы обновить кеш.

    о чем вы?
    я вижу такое на тестовом сайте:

    
    <link rel='stylesheet' id='twentythirteen-style-css' 
     href='http://wptest.ru/wp-content/themes/twentythirteen-child/style.css?ver=2.8.1552832400' 
    type='text/css' media='all' />
    

    версия взята из указанного в style.css дочерней темы.

    А у меня почему-то выводится 2013-07-18. Код полностью ваш вставил, ничего не менял.

    так что указано в Version в style.css дочерней темы?

    /*
    Theme Name: child-theme
    Template:   twentythirteen
    Version:        0.1.3
    */

    Что я делаю не так?

    В чем может быть причина? Я уже и англоязычные ресурсы смотрел, нигде ничего нет такого.

    А может ли этот дубликат файла стилей дочерней темы из кеша браться?

    <link rel='stylesheet' id='twentythirteen-style-css' href='https://example.com/wp-content/themes/child-theme/style.css?ver=2013-07-18' type='text/css' media='all' />

    Уже все что можно перепробовал, не убирается он и все.

    <link rel='stylesheet' id='parent-style-css'  href='https://example.com/wp-content/themes/twentythirteen/style.css?ver=5.1.1' type='text/css' media='all' />
    <link rel='stylesheet' id='child-style-css'  href='https://example.com/wp-content/themes/child-theme/style.css?ver=0.1.6' type='text/css' media='all' />

    style.css?ver=5.1.1 — это файл стилей родительской темы
    style.css?ver=0.1.6 — это файл стилей дочерней темы. В папке на сервере лежит именно он, специально проверил там и открывал по ссылке из исходного кода страницы. Т.е. если я в админке WP редактирую файл стилей дочерней темы, то изменения отображаются именно в данном файле.

    А вот это старый файл дочерней темы, его даже физически нет в папке дочерней темы.

    <link rel='stylesheet' id='twentythirteen-style-css' href='https://example.com/wp-content/themes/child-theme/style.css?ver=2013-07-18' type='text/css' media='all' />

    Как он вообще попадает в исходный код страницы и откуда?

    Разобрался я в итоге. Пишу здесь решение, думаю кому-то пригодится.
    Код в кодексе WP правильный

    add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
    function my_theme_enqueue_styles() {
     
        $parent_style = 'twentythirteen-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')
        );
    }

    Главный нюанс в том, что переменной $parent_style нужно присвоить правильное значение. Для этого идем в functions.php родительской темы и ищем строку вида

    wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' );

    Для нахождения строки можно произвести поиск по слову get_stylesheet_uri
    В этой строке видим параметр ‘twentythirteen-style’, его и присваиваем переменной $parent_style. В моем примере тема Twenty Thirteen.

Просмотр 11 ответов — с 16 по 26 (всего 26)
  • Тема «css дочерней темы» закрыта для новых ответов.