@zeaovede

Кто и как подключает скрипты и стили на своем wordpress?

У меня сайт из 20 страниц. 10 из них имеют одинаковые стили и скрипты подключения.

Мое подключение:

function main_style() {
if ( is_page ( array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ) )) {
...
}

Готово.
Еще 9 страниц имеют другие скрипты и стили, по такой же схеме подключил. Готово.
И тут мне понадобилось подключить стили и скрипты для страницы, которая отвечает за вывод всех записей (страница блога, которая выводится через настройки - чтение). У меня стандартный шаблон wordpress и за вывод отвечает index.php.

Первое с чем столкнулся, это с отсутствием id для данного шаблона.
Снова делаю все по старой схеме только уже без указания id страницы. Готово.
Заглядываю в код страницы от 1 до 19 и вижу теперь дубли скриптов и стилей. В общем полная шляпа. Подключились скрипты и стили для всех страниц и по заданному id. Я избрал данную тактику, чтобы не нагружать отдельные страницы лишними скриптами и стилями, но тут пошло все не по плану
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
is_home() — проверяет показывается ли страница с последними постами

Хочу отметить функцию get_theme_file_uri(), которую редко используют из-за кучи старых гайдов. Она ищет файл сначала в дочерней теме, если его там нет, то берет его из основной

В качестве версии файла, четвертым параметром удобно передавать время последнего его изменения с помощью filemtime(). Это нужно, чтобы браузер не кешировал измененные файлы и всегда показывал только актуальную версию

Т.к. я часто меняю что-то программно, то и id у меня могут измениться, а вот за слагами я слежу для SEO, поэтому во всех проверках типа is_page() проверяю слаги постов. Но это уже вкусовщина

function custom_scripts_init() {

	// общие стили
	wp_enqueue_style( 'common-styles', get_theme_file_uri( 'assets/css/common.min.css' ) , array(), filemtime( get_theme_file_path( '/assets/css/common.min.css' ) ) );

	// общие скрипты 
	wp_enqueue_script( 'common-scripts', get_theme_file_uri( 'assets/js/common.min.js' ), array( 'jquery' ), filemtime( get_theme_file_path( '/assets/js/common.min.js' ) ), true );

	// скрипты для страницы постов
	if ( is_home() ) {
		wp_enqueue_script( 'home-scripts', get_theme_file_uri( 'assets/js/home.min.js' ), array( 'jquery' ), filemtime( get_theme_file_path( '/assets/js/home.min.js' ) ), true );
	}

	// скрипты для массива страниц
	if ( is_page( ['sample-page', 'contacts'] ) ) {
		wp_enqueue_script( 'page-scripts', get_theme_file_uri( 'assets/js/page.min.js' ), array( 'jquery' ), filemtime( get_theme_file_path( '/assets/js/page.min.js' ) ), true );
	}

}
add_action( 'wp_enqueue_scripts', 'custom_scripts_init' );
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@IvanMogilev
Backend developer: Wordpress,Yii
Делаю так же, разделяю ифами в functions, только еще использую - is_singular is_front_page и т.д
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы