Как загрузить сценарии/стили, специфичные для страницы


Я знаю, что в соответствии с процессом загрузки Wordpress по умолчанию сначала вызывается functions.php, после чего идут все темы. Но в настоящее время я собираюсь полностью переработать свою тему, чтобы оптимизировать ее. Моя идея состоит в том, чтобы иметь один базовый css-файл для общих свойств, нормализации, цветов. Или сохранить один файл css, но в этом случае мне нужно жестко закодировать регистр переключения в functions.php, чтобы определить страницу. И еще один, специфичный для каждой страницы, потому что в этом нет смысла загружать огромный css файл стилей со всеми определенными стилями.

Итак, мой вопрос в том, какое лучшее место для подключения для загрузки определенного скрипта/стиля?

Должен ли это быть header-xxx.php или другой файл? Может быть, есть способ реализовать эту идею более масштабируемым и элегантным способом?

Я был бы признателен за любую помощь.

Author: CROSP, 2016-08-25

2 answers

Все зависит от масштаба ваших настроек и от того, как вы будете организовывать свои материалы. Но есть 2 основных способа сделать это. functions.php и файлы шаблонов

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

Вы могли бы поставить все свои вещи в очередь условно в пределах вашего functions.php файл (if( is_page( 'blah') { //... enqueue stuff }) или вы можете использовать файлы шаблонов для оформления определенных категорий/тегов/сообщений/страниц и т.д.

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

Но определенно, если вы хотите разбить свою таблицу стилей на файлы меньшего размера, вам нужно будет использовать

Та же логика будет применяться к сценарию с соответствующими функциями регистрации/постановки в очередь

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

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

Независимо от этого, кэширование 1 или нескольких ресурсов является хорошим подходом и повысит восприимчивость вашего сайта с точки зрения скорости сайта.

Если вам нужно больше указаний о том, как использовать эти функции, просто дайте нам знать.

РЕДАКТИРОВАТЬ

Основные причины сценарии регистрации следующие

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

ПРИМЕЧАНИЕ

Сценарий/стиль, который был зарегистрирован, не обязательно должен быть поставлен в очередь, если он указан как $deps файла, который вы в данный момент ставите в очередь.

Пример (не обязательно, как вы должны это делать, но так, чтобы вы понимали цель)

Я зарегистрировался

  • общий стиль.css
  • навигация.css
  • кнопки.css

Теперь эти стили зарегистрированы, поэтому, если я перейду на конкретную страницу и захочу применить там другой стиль. Я ставлю в очередь на этой странице (либо с помощью условного оператора в functions.php или в шаблоне моей страницы) specific-style.css вот так.

add_action( 'wp_enqueue_scripts', 'my_specific_style' );
function my_specific_style(){
  wp_enqueue_style( 'specific-style', get_stylesheet_directory_uri() . '/path/to/specific-style.css', array( 'common-style', 'navigation', 'button') );
}

Обратите внимание, что массив в wp_enqueue_style представляет собой массив дескрипторов уже зарегистрированных стилей. WP будет удобно загружать все 4 файла в правильном порядке, чтобы учитывать зависимость.

Вы можете каскадировать зависимости, просто регистрируя каждый сценарий/стиль с правильной зависимостью

Т.е. кнопки.css зависит от навигации.css, которая зависит от общего стиля.css

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

 11
Author: bynicolas, 2016-08-25 19:19:40

" рефактор", " оптимизировать", " масштабируемый", " элегантный". Большие опасения! Ты на правильном пути. Однако разделение CSS-файла на несколько не является решением этих проблем. Вот почему:

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

Меньшее количество запросов является одним из наиболее важных способов оптимизации скорости веб-сайта. (см. Стив Соудерс или эту статью).

Дальнейшая оптимизация заключается в минимизации вашего CSS. (см. Сообщение Google PageSpeed .) Спасибо @bynicolas за предложение.

Конечно, вы можете сказать, но как насчет элегантности? Вот хорошая новость: Дерзость и МЕНЬШЕ. Они позволяют писать меньше кода, разбивать его на несколько файлы, которые скомпилированы в один CSS-файл, и многое-многое другое.

 5
Author: zendka, 2016-08-25 19:40:33