Разработка темы wordpress - Подключаем свои стили и скрипты
Подключаем свои стили и скрипты
1. Подключаем стили
Итак, у нас уже есть готовая верстка, теперь ее нужно натянуть на Wordpress, копируем папки /js и /styles в папку темы wp-content/themes/test_themes/
В wp-content/themes/test_themes/ создать functions.php. Для того чтобы подключить к теме свои стили в functions.php пишем:
function register_styles() {
wp_register_style( 'theme_styles', get_template_directory_uri() . '/styles/main_global.css' );
wp_enqueue_style( 'theme_styles' );
}
- register_styles - произвольное имя функции.
- wp_register_style - регистрирует CSS файл в WordPress. После регистрации файл можно добавить в html документ с помощью функции wp_enqueue_style().
Подключать файлы так, а не напрямую в коде, выгодно для дальнейшей оптимизации. Если все файлы подключены через систему регистрации WP, то затем можно использовать плагины, чтобы объединить все стили в один и отдавать их в сжатом виде, на лету. Так можно подключить не один, а несколько файлов стилей.
2. Подключаем скрипты
В functions.php добавляем следующий код:
function register_scripts() {
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', get_template_directory_uri() . '/js/jquery-3.1.1.min.js', array(), '1.0.0', true );
wp_register_script( 'all', get_template_directory_uri() . '/js/all.js', array(), '1.0.0', true );
wp_register_script( 'main', get_template_directory_uri() . '/js/main.js', array(), '1.0.0', true );
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'all' );
wp_enqueue_script( 'main' );
}
- register_scripts - произвольное имя функции.
Регистрация скриптов нужна, чтобы взять под контроль внедряемые скрипты: учесть зависимость одних от других (например, подключать main.js скрипт после того как будет добавлен основной скрипт jQuery) и не выводить одни и те же скрипты по несколько раз.
Описание функций
-
wp_deregister_script() - удаляет ранее зарегистрированный скрипт и дает возможность подключить свой, по умолчанию в Wordpress уже подключен jquery какой-то древней версии.
-
wp_register_script( $handle, $src, $deps, $ver, $in_footer ) - регистрирует файл скрипта, чтобы в дальнейшем подключать его используя функцию wp_enqueue_script(), которая сохраняет последовательность загрузки скриптов.
- $handle (строка) (обязательный) - название скрипта. Должно быть уникальным, так как оно будет использоваться для вызова в дальнейшем в функции wp_enqueue_script().
- $src (строка) (обязательный) - URL, путь до скрипта, например, http://example.com/wp-content/themes/my-theme/my-theme-script.js. Никогда не пишите URL напрямую, если он лежит в файлах движка или плагине, используйте специальные функции путей: plugins_url() для плагинов и get_template_directory_uri() для тем. Удаленные скрипты указывайте без протокола, так: //otherdomain.com/js/their-script.js.
- $deps (массив) - массив названий всех зарегистрированных скриптов, от которых зависит этот. Указанные тут скрипты будут загружены перед текущим. Укажите false, если нет зависимых скриптов.
- $ver (строка) - Версия скрипта, которая будет добавлена в конец пути к файлу в виде аргумента (?ver=1.1). Если версии нет укажите false, тогда WordPress добавит в конец текущую версию WP. Если указать null, никакая версия не будет добавлена. Этот параметр нужен, чтобы корректная версия скрипта была загружена пользователями, в обход кэша.
- $in_footer (логический) - где выводить скрипт: в <head> или <footer>. Обычно скрипты располагаются в <head> части. Если этот параметр будет равен true скрипт будет добавлен в конец тега <body>, для этого тема должна содержать функцию wp_footer() перед закрывающим тегом </body>.
-
wp_enqueue_script() - добавляет скрипт, только если он еще не был добавлен и другие скрипты от которых он зависит зарегистрированы. Зависимые скрипты добавляются автоматически.
Пример подключения
В functions.php добавляем код:
function theme_setup() {
add_action( 'wp_enqueue_scripts', 'register_styles' );
add_action( 'wp_enqueue_scripts', 'register_scripts' );
}
add_action( 'after_setup_theme', 'theme_setup' );
- theme_setup - произвольное имя функции.
- add_action() - регистрирует хук-событие. При регистрации указывается PHP функция, которая сработает в момент события.
- after_setup_theme() - вызывается каждый раз при загрузке страницы, сразу после того, как тема инициализирована. Обычно используется для того, чтобы установить базовые возможности темы.
Например, есть страница с картой google maps или любой другой, соответственно нам нужно подключить api карты и стили (в данном примере подключаем карту mapbox ). В functions.php добавляем условие:
//регистрируем скрипты
wp_register_script('mapbox-api', 'https://api.mapbox.com/mapbox.js/v3.1.0/mapbox.js', false, '1.0', false);
wp_register_style( 'mapbox-style', 'https://api.mapbox.com/mapbox.js/v3.1.0/mapbox.css', false, '1.0' );
//подключаем на нужной странице
<?php if ($post->post_name == 'neighborhood') :
wp_enqueue_style('mapbox-style');
wp_enqueue_script('mapbox-api');
endif; ?>
- $post->post_name - возвращает ярлык страницы (slug), и если он равен значению ярлыка определенной страницы (в данном примере это “neigborhood”, только на этой странице надо показать карту), то подключим необходимые нам скрипты.
Таким же образом подключаются стили.