Поддержка Проблемы и решения Почему не перебивается родительский стиль?

  • background стиля основной темы перебивает дочерний стиль. Помогает только !important.
    Почему так происходит, и тем более 3 раза стиль к элементу подключается…
    Сам по себе дочерний стиль подключается нормально после родительского в function.php.
    Но все правки приходиться делать через !important

    стили

Просмотр 15 ответов — с 1 по 15 (всего 21)
  • Модератор Yuri

    (@yube)

    background стиля основной темы перебивает дочерний стиль.

    Либо у родительского больше вес, либо нарушен порядок подключения стилей.

    И да, тут, говорят, не инстаграм, а технический форум.

    хотел показать все ньансы отображения кода
    порядок подключения стилей такой:

    <?php
    
    if ( ! defined( 'ABSPATH' ) ) {
        exit;
    }
    
    add_action('wp_enqueue_scripts', 'my_child_theme_styles' );
    
    function my_child_theme_styles() {
    	wp_enqueue_style('parent-theme-css', get_template_directory_uri() .'/style.css' );
    	wp_enqueue_style('child-theme-css', get_stylesheet_directory_uri() .'/style.css', array('parent-theme-css') );
    }

    P.S. получается что стиль из настроек темы (которые настраиваются через шаблон) идет последним, уже после дочернего стиля, поэтому дочернему стилю приходится задавать !important, чтобы он снова стал «главным». Как поставить настройки темы перед/после дочернего стиля?

    add_action(‘wp_enqueue_scripts’, ‘my_child_theme_styles1’, 21 );
    // первая фция стилей
    add_action(‘wp_enqueue_scripts’, ‘my_child_theme_styles2’, 22 );
    // 2-я

    — приоритет (21 и 22) задается 3-м аргументом.

    ну или стили подключить в подвале. Гугол знает много хитростей.

    Кстати «перевес» можно и не через important задавать, а через родительский класс или body или корень :root. Это «человечней».

    тут на пальцах рассказывал про подобное https://www.youtube.com/watch?v=SttnGLN9gV4&list=PL0-MjO6mYVbIpunmE5MhbTuBSCDSLDYlT&index=2

    Перечитайте еще раз тему, проблема у вас все та же

    Otshelnik-Fm (@otshelnik-fm), подписался. Как будет правильней: распределить по приоритету все стили или оставить стили в том порядке как есть, но задать приоритет отдельным элементам. Как быстрее: чтобы отображение на экране не прыгало со стиля на стиль?
    tuxfighter (@tuxfighter)
    PS. речь не о приоритете стилей, а о приоритете стиля именно того, что настраивается через кастомайзер, то есть дочерним стилем не перебивается именно те элементы, которые настроены через сам шаблон темы

    Правильно — добиться загрузки корректирующих стилей позже. И тогда с перевесом не придется заморачиваться. Просто бывают ситуации когда увы никак. Тогда и вступают в силу «перевес» или в крайнем important

    Модератор Yuri

    (@yube)

    а о приоритете стиля именно того, что настраивается через кастомайзер

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

    Otshelnik-Fm (@otshelnik-fm)

    Смысл кастомайзера, точнее, дополнительных стилей, заданных в нем

    уточняю — говорю не о стилях, вписанных вручную в настройки темы, а про то, что настраивается через сам шаблон, через «окошки»

    приоритет не сработал

    	wp_enqueue_style('parent-theme-css', get_template_directory_uri() .'/style.css', 21 );
    	wp_enqueue_style('child-theme-css', get_stylesheet_directory_uri() .'/style.css', array('parent-theme-css'), 22 );

    по Ctrl+U вот что показывает (Юрий (@yube) научил)

    </style>
    <link rel='stylesheet' id='dashicons-css'  ......>
    <link rel='stylesheet' id='admin-bar-css'  ... />
    <link rel='stylesheet' id='wp-block-library-css'  ... />
    <link rel='stylesheet' id='wp-block-library-theme-css'  .../>
    <link rel='stylesheet' id='parent-theme-css-css'  .../>
    <link rel='stylesheet' id='child-theme-css-css' ... />
    <link rel='stylesheet' id='jquery-sidr-dark-css' ... />
    <link rel='stylesheet' id='bootstrap-css'  .... />
    <link rel='stylesheet' id='elixar-style-css'  .. />
    <style id='elixar-style-inline-css' type='text/css'>

    то есть мой дочерний стиль едет где-то в середине…
    tuxfighter (@tuxfighter), придется обратиться к своей старой теме, спс

    указал так

    	wp_enqueue_style('parent-theme-css', get_template_directory_uri() .'/style.css', 10 );
    	wp_enqueue_style('child-theme-css', get_stylesheet_directory_uri() .'/style.css', array('parent-theme-css', 'jquery-sidr-dark-css', 'bootstrap-css', 'elixar-style-css', 'elixar-style-inline-css', 'elixar-theme-skin-red-css'), 20 );

    но из потока стилей дочерний вообще пропал???
    а борюсь я получается что со стилем ‘elixar-style-inline-css’

    PS из предыдущей своей темы я сумел сделать нужный порядок из нескольких дочерних стилей.
    Вот он — код function.php (в песочнице)
    А сейчас не получается распределить стили

    про то, что настраивается через сам шаблон, через «окошки»

    видимо я один не понимаю, что значит эта фраза

    это например — скриншот
    но в данной теме имею в виду, те стили которые не редактируются через консоль и содержаться в отдельном файле стилей ‘elixar-style-inline-css’ (так как тема free у неё нет доступа ко всем настройкам напрямую)
    И эти настройки, через окошки темы — сохраняются и считываются из таблицы базы данных сайта. Надо чтобы они учитывались после дочернего стиля

    редактируются через консоль

    Вы имеете ввиду кустомайзер?
    Вообще-то он для того и придуман, чтобы перебивать вообще все стили.
    Снова костыльный велосипед?

    tuxfighter (@tuxfighter), вы уже увидели что это не окно отдельного костомайзера «Дополнительные стили» в настройках, а сами настройки. Дело в том, что в элемент «карусель» можно задать страницу только через настройки темы. В ручную задать отображение страницы для меня пока сложно.
    Пытался делать через футер загрузку стиля, но тоже без нужного результата

    function my_child_theme_styles() {
    	wp_enqueue_style('parent-theme-css', get_template_directory_uri() .'/style.css');
    }
    add_action('wp_enqueue_scripts', 'my_child_theme_styles' );
    
    function prefix_add_footer_styles() {
        wp_enqueue_style('child-theme-css', get_stylesheet_directory_uri() .'/style.css');
    };
    add_action( 'get_footer', 'prefix_add_footer_styles' );

    Дело в том, что в элемент «карусель» можно задать страницу только через настройки темы.

    авторам этого решения нужно выдавать расстрел через повешение.

Просмотр 15 ответов — с 1 по 15 (всего 21)
  • Тема «Почему не перебивается родительский стиль?» закрыта для новых ответов.