Начинаем создавать тему
Урок 2
Содержание
В этом уроке мы с вами разберёмся, как создать свою тему для WordPress с нуля. Ну почти с нуля – мы же планируем натягивать на WordPress свою HTML-вёрстку.
Первым делом вам нужно будет определиться, хотите ли начинать разработку на основе стартовых тем или же полностью с нуля. Про стартовые темы мы обязательно поговорим, но я не привык их использовать, поэтому не буду использовать и в уроке тоже.
Ну что, погнали! 💪
Как вы заметили, что помимо текстового урока, тут также есть и видеоурок. Он абсолютно бесплатный, вам достаточно лишь зарегистрироваться на сайте для доступа к нему.
В видеоуроке мы сразу же начнём работать с готовой вёрсткой, которая выглядит вот так:
Для доступа к файлам вёрстки необходимо приобрести курс.
Сделаем первые шаги по натяжке этой вёрстки на WordPress, заменим статичные данные в HTML на динамичные при помощи таких функций WordPress, как wp_head(), wp_footer(), get_stylesheet_directory_uri(), get_stylesheet_uri(), bloginfo(), wp_get_document_title(), language_attributes(). Объясняю принцип действия каждой функции.
Чтобы скачать тему WordPress, которая получилась у нас в процессе этого урока, необходимо приобрести курс.
Когда мы создаёт тему с нуля, мы ручками создаёт директорию, в ней потом создаём два файла – index.php
и style.css
– смотрите следующий шаг.
Возможно стартовые темы придумали те люди, которые, так же как и я, не умеют создавать файлы на MacOS 😅
Первоначально стартовые темы задуманы для упрощения этого процесса – чтобы вам вроде как пришлось меньше писать один и тот же код. Вроде как. Когда я только начинал свою карьеру в создании WordPress-тем, и когда даже не знал о существовании стартовых тем (а может их и вовсе не было), я задумывался о создании своего собственного «темплейта», то есть стартовой темы, при помощи которой я бы мог сэкономить себе время.
Сейчас в мире не существует такой стартовой темы, которая бы подошла под мои уникальные ежедневные задачи, да и как вы убедитесь в процессе этого курса, они также не подходят и для переноса вёрстки на WordPress. Опс. Меня за это захейтят.
Тем не менее, если вдруг вы приноровитесь к использованию какой-либо стартовой темы в своей работе – круто, молодцы! Я ничего не имею против, к тому же самую популярную стартовую темы Underscores разработали ребята из Automattic (компания, которая стоит за WordPress.com). Если вы почувствовали некоторый эмоциональный подтекст в моих словах, это только потому что я встречал людей, которые считают, что разрабатывать нужно ТОЛЬКО на стартовых темах, и обучаться тоже на них.
Для начала создайте какую-нибудь папку в /wp-content/themes
— это и будет ваша будущая тема, я например создал kurs
(очень оригинально). Каждая тема должна содержать по крайней мере 2 файла — это index.php
и style.css
— создаём их внутри этой папки.
Если вы забыли/забили на style.css
, то в админке во Внешний вид > Темы ожидайте такую ошибку:
Если же отсутствует файл index.php
, то:
Тут WordPress ещё что-то болтает про дочерние темы, не обращайте внимания, вам про них ещё рано читать.
Итак, после того, как вы создали все необходимые файлы, наша тема начнёт отображаться в админке:
До тех пор, пока мы ещё не изучили другие файлы шаблона, index.php
у нас будет отвечать за вывод любой страницы сайта, а style.css
, понятное дело, содержать стили (хоть это и не обязательно), но главное, чтобы в файле style.css
вы добавили метаданные и описание темы.
Если вы не хотите, чтобы ваша тема так и отображалась в админке без названия и описания, давайте добавим немного информации в style.css
, поместив её в комментарии CSS /* */
.
/*
* Theme name: Тема для курса
* Author: Миша
* Author URI: https://misha.agency
* Version: 1.0
*/
Но дело в том, что существуют и другие параметры темы, которые вы можете использовать, вот их список:
Для того, чтобы в качестве изображения темы не отображался «фотошоповский фон», мы создадим файл screenshot.png
и отправим его прямиком в папку с темой (рекомендуемое разрешение 1200px на 900px).
Что касается расширения файла, то сгодится и jpg и gif, и jpeg, но в официальной документации WP рекомендуется всё же использовать screenshot.png
.
Вот что у меня получилось:
После того, как вы начинаете добавлять первый HTML в теме, то вам сразу же нужно сделать две вещи:
</head>
,</body>
.Что-то типо этого:
<!DOCTYPE html> <html> <head> <?php wp_head() ?> </head> <body> <?php wp_footer() ?> </body> </html>
Это обязательное условие для всех тем WordPress, благодаря этим функциям работают плагины (даже банально плагин для вставки кода Google Analytics на сайт), подключаются различные дополнительные CSS и JS в тему и так далее. Чуть более подробно описываю предназначение этих функций на видео.
Трудно представить тему для WordPress, в которой отсутствует файл functions.php
, он используется для включения каких-либо функций темы, например:
Также он сам может содержать какой-то дополнительный функционал, ну либо файлы, подключенные в него через include()
/ require()
.
Главное правило по functions.php
— сам по себе файл не должен ничего выводить! 💀 То есть никогда не оставляем первую строку пустой! 👿
<?php
И никогда не обрываем PHP-код пустыми строками где-то посередине кода! 👿
?> <?php
Это очень распространённая ошибка. Очень!
Пока что можете создать пустой файл functions.php
в папке с вашей темой.
После того, как мы вставили в наш шаблон функции wp_head() и wp_footer(), у нас появилась админ панель сверху сайта, которая налезла на вёрстку.
Такое случается практически всегда, когда в вашей вёрстке присутствуют фиксированные меню.
В видеоуроке я решил не заморачиваться и просто скрыл админ-панель при помощи этой строки кода в functions.php
:
add_filter( 'show_admin_bar', '__return_false');
Также я показал, как это делать через настройки сайта. Однако, как поступить, если она вам нужна и вы не хотели бы её скрывать?
В этом случае нужно сделать некоторые небольшие изменения в CSS вёрстки, когда у нас фиксированное меню, оно имеет CSS-свойство top:0
, верно?
top:32px
.top:46px
.После добавления соответствующих CSS-стилей вы можете заметить, что изменения применяются даже тогда, когда админ-панель не отображается на сайте! (например для незарегистрированных пользователей). Что делать?
<body>
функцию body_class() примерно так: <body <?php body_class() ?>>
– суть этой функции в том, что она добавляет различные CSS-классы в зависимости от того, зареган пользователь или нет, от того, на какой странице мы находимся и так далее.<body>
– .admin-bar
, для того, чтобы применять соответствующие стили только для ситуаций, когда админ бар отображается на сайте.Также можете почитать на моём сайте урок, в котором я переносил админ бар в нижнюю часть страницы.
Если вы делали шаги в этом уроке, но после того, как вставили или изменили какой-то код, у вас стал отображаться белый экран, и вы не знаете из-за чего, то вы можете поступить следующим образом:
wp-config.php
, который лежит в корне вашей установки WordPressWP_DEBUG
и устанавливает его равным true
(таким его и можно оставить до конца нашего курса).Список уроков