mikkelbreum
  • 0
Новичок

Добавить сгенерированную таблицу стилей из родительской темы после дочерней темы style.Css

  • 0

У меня есть настройка дочерней темы -> родительской темы, где мне нужно загрузить таблицу стилей с именем generate.css в дополнение к файлу style.css, добавленному активной дочерней темой. Сгенерированный файл.css находится в родительской теме и динамически генерируется и предоставляется родительской темой.

Я начал с очевидного пути, просто добавив правило импорта в начало файла style.css дочерней темы:

/* Get Parent BASE CSS */
@import url('../parent-theme/style.css');


/* Get Parent GENERATED CSS */
@import url('../parent-theme/generated.css');

Но это не работает по двум причинам.

1) Я хочу иметь возможность добавить в файл номер версии для очистки кеша:

<link rel='stylesheet'  href='http://www.com/wp-content/themes/parent-theme/generated.css?ver=2389642855'>

2) Я хочу, чтобы файл грузился последним, после дочерних тем style.css

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

Какой хук или механизм WP я мог бы использовать?

Share
  1. Абсолютно!

    В functions.php, как вы сказали. Я назову его cache_busting_styles, потому что мне нравится, как оно звучит.

    Сначала вы устанавливаете стиль через wp_enqueue_style, затем вызываете его во время хука действия wp_print_styles. Кроме того, вам нужно настроить переменную и передать ее туда в качестве номера версии:

    function cache_busting_styles() {
        //however you set up your version number here
        $version = 'cachebustingversion';
        wp_enqueue_style('cachebusting', get_bloginfo('template_url').'/parent-theme/generated.css', '', $version, 'screen');
    }
    add_action('wp_print_styles', 'cache_busting_styles');
    

    wp_enqueue_style принимает 5 аргументов, во-первых, дескриптор, идентификатор, который wordpress связывает с таблицей стилей (должен быть уникальным), во-вторых, URL-адрес файла, в-третьих, другие файлы, от которых он зависит (любые необходимые файлы, которые должны быть загружены вместе с этим файлом, я оставил его нулевым, вы можете добавить все, что хотите, он использует другие дескрипторы таблиц стилей в очереди), четвертая версия, которую он добавляет в конец URL-адреса ссылки, точно так же, как то, что вы ищете (вы можете передать все, что хотите, в это, WordPress по умолчанию помещает сюда свою текущую версию) и, наконец, медиа-аргумент для файла CSS (экран, печать, все и т. д.). Надеюсь, это поможет!

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

    add_action('wp_print_styles', 'cache_busting_styles', 12);
    
    • 0
    • спасибо это здорово! В чем разница между подключением функции, отвечающей за постановку таблицы стилей в очередь, к действию «wp_print_styles», а не к действию «get_header»?

      • 0
    • Разница не так уж и велика, на самом деле. get_header запускается немного раньше, чем wp_print_styles. Мне нравится помещать мой javascript в wp_print_scripts, а таблицы стилей — в wp_print_styles только для целей организации. Я полагаю, что на самом деле было бы целесообразно вместо этого поставить в очередь все скрипты и таблицы стилей во время wp_enqueue_scripts. codex.wordpress.org/Plugin_API/Action_Reference дает порядок действий при запросе домашней страницы, если вы ставите их в очередь до того, как они будут напечатаны, вы в порядке.

      • 0
  2. вы можете просто поставить в очередь сгенерированный стиль.css. Используйте следующий код в файле function.php ваших дочерних тем.

    wp_enqueue_style('name_of_theme', get_bloginfo('template_directory') . '/generated.css', array(), '1.0', 'screen');
    
    • 0

Оставить ответ

You must login to add an answer.