Статьи

Как создать WordPress тему с нуля: первые шаги

Темы WordPress дают пользователям WordPress возможность полностью изменять внешний вид веб-сайта WP, а также добавлять к нему функциональные возможности. В этой серии из трех частей мы представим темы WordPress, показывающие, как они работают, как они структурированы, архитектуру PHP за ними и другую соответствующую информацию. Затем мы отправимся в путешествие по созданию темы WordPress.

Эта первая статья готовит нас к этому путешествию, обсуждая теорию, стоящую за темами WordPress.

Слово или два об основах

WordPress задумывался как блог-движок или простая, ориентированная на блоги система управления контентом. Первоначально он был выпущен в 2003 году Мэттом Малленвегом и Майком Литтлом. С тех пор его пользовательская база не перестала расти. WordPress — это веб-приложение на основе PHP, которое использует MySQL в качестве своей базы данных и обычно запускается за серверной программой, такой как NGINX или Apache.

WordPress — это просто набор PHP-файлов, которые работают вместе как приложение. Интерпретатор PHP использует эти файлы для создания веб-страниц для посетителей. Это производит HTML, чтобы быть более точным.

Роль движка шаблонов в WordPress заключается в том, чтобы дать нам возможность написать (в основном) презентационные инструкции — инструкции о том, как именно структурировать и стилизовать HTML-контент, который будет выводить WordPress. Эти инструкции инкапсулированы в темах WordPress.

Каждая тема состоит из папки с файлами PHP, CSS, а иногда и JavaScript. Файлы, которые должна иметь каждая тема WordPress — как минимум — это style.css и index.php . Это технический минимум, необходимый для работы темы, но ни одна серьезная тема WordPress не остается только с этими двумя файлами.

Базовый шаблон и файлы Partials

Минимальный файл index.php перехватывает все запросы, у которых нет соответствующих специализированных файлов шаблонов в теме. front-page.php , home.php , page.php , taxonomy.php , author.php , archive.php — это некоторые из шаблонов, которые мы можем использовать в наших темах для дальнейшей структуризации определенных страниц или запросов в нашей теме.

Например, файл archive.php будет определять структуру вывода HTML, когда посетитель запрашивает некоторые страницы, на которых отображается список сообщений. page.php будет указывать, как отображать отдельные страницы и так далее.

Частичные файлы инкапсулируют повторяемые части страниц на веб-сайте WordPress. Например, верхний и нижний колонтитулы обычно одинаковы для всех страниц веб-сайта, поэтому темы WordPress разделяют эти части страницы на header.php и footer.php . comments.php будет использоваться для отображения комментариев, где это применимо.

Затем эти файлы требуются из файлов шаблонов, которые мы объяснили.

Таким образом, мы придерживаемся принципа СУХОЙ и не повторяем код во всех этих файлах.

Иерархия шаблонов

В системе шаблонов WordPress есть иерархия файлов шаблонов, которые WordPress будет пытаться использовать для каждого запроса. Эта иерархия основана на специфике. WordPress будет пытаться использовать наиболее конкретный файл для каждого запроса, если он существует. Если он не существует, он будет искать следующий, менее конкретный файл и так далее.

Чтобы объяснить это по запросу страницы — когда посетитель посещает определенную страницу на веб-сайте WordPress — WordPress сначала попытается найти шаблон, назначенный ему автором страницы, в wp-admin . Это может быть совершенно собственный файл шаблона, даже полностью статичный.

Если такого шаблона нет или он не был назначен, WordPress попытается найти файл шаблона с фрагментом этой конкретной страницы в имени файла. Это выглядело бы как page-mypageslug.php — каким бы ни был наш mypageslug .

Следующим файлом, который WordPress попытается использовать, будет файл с идентификатором этой конкретной страницы в своем имени файла — например, page-48.php .

Если ни один из этих специфичных для страницы файлов не существует, WordPress попытается использовать page.php — используется для всех страниц , если не указано иное.

Если он не находит page.php , он попытается использовать singular.php . Этот файл шаблона используется, когда — для сообщенийsingle.php не найден, а также для страниц, где page.php не найден.

Теперь, если ничего из этого не найдено в нашем примере запроса страницы , WordPress вернется к index.php .

Это, вкратце, объясняет иерархию шаблонов WordPress. Все эти файлы шаблонов, которые мы упоминали, обычно включают (требуют) партиалы, такие как header.php , footer.php и другие по мере необходимости. Они также могут указать свои конкретные партиалы для использования — например, специфичный для страницы заголовок.

Следующее, что вам нужно знать, чтобы разбираться в них, — это тип поста WordPress.

Типы сообщений WordPress

Контент в WordPress существует в виде типов записей . Встроенные типы — посты и страницы . Это логичные. WordPress также имеет встроенный тип сообщения вложения , навигационные меню и ревизии . Это также, технически, типы сообщений.

Мы также можем указать наши собственные типы сообщений, будь то в наших темах или наших плагинов. Нам нужно использовать следующее:

 register_post_type( $post_type, $args ) 

Здесь мы указываем имя типа записи, как оно структурировано, как оно представлено в wp-admin и так далее.

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

Подробнее об иерархии шаблонов можно узнать здесь .

style.css

style.css является важным файлом в каждой теме WordPress, и его функция выходит за рамки стиля. Этот файл используется для предоставления основной информации о теме в WordPress. Без этого WordPress не сможет зарегистрировать тему в качестве темы.

Кодекс WordPress предоставляет больше информации обо всех деталях этого файла. Для краткости мы рассмотрим только некоторые из них. В комментариях к заголовку этого CSS-файла мы предоставляем WordPress информацию о следующем:

  • название темы
  • автор
  • описание
  • URI темы
  • версия
  • лицензия
  • и другие детали

WordPress использует эти детали для правильного отображения темы в бэкэнде.

Например, мета-заголовок в теме «Двадцать семнадцать» выглядит так:

 /* Theme Name: Twenty Seventeen Theme URI: https://wordpress.org/themes/twentyseventeen/ Author: the WordPress team Author URI: https://wordpress.org/ Description: Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device. Version: 1.7 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: twentyseventeen Tags: one-column, two-columns, right-sidebar, flexible-header, accessibility-ready, custom-colors, custom-header, custom-menu, custom-logo, editor-style, featured-images, footer-widgets, post-formats, rtl-language-support, sticky-post, theme-options, threaded-comments, translation-ready This theme, like WordPress, is licensed under the GPL. Use it to make something cool, have fun, and share what you've learned with others. */ 

style.css файл style.css , очевидно, используется для style.css наших страниц WordPress.

WordPress Action и фильтр-хуки

Темы и плагины WordPress, WordPress в значительной степени зависят от действий и фильтров . Они являются частью событийной архитектуры . Простым объяснением этого было бы то, что в процессе выполнения страницы, связанной с веб-запросом посетителей, существуют определенные зарегистрированные точки — хуки — которые позволяют нам запускать действия в этих точках. Мы привязываем функции PHP к тем точкам, которые должны быть выполнены. Это боевые действия . Фильтрующие зацепки ориентированы на обработку — изменение — фрагментов данных в цикле выполнения. Итак, если ловушка фильтра зарегистрирована для какого-либо фрагмента данных (переменная PHP), мы можем подключить нашу собственную функцию и изменить или обработать этот фрагмент данных.

Несмотря на то, что это необычно, по сравнению с вездесущим программным шаблоном MVC , опора на подключаемую систему в WordPress сыграла большую роль в популяризации WordPress, поскольку благодаря ей стало очень просто подключать к ней новые функции без необходимости прикасаться — или даже для глубокого понимания — самой core кода.

Крючки описаны здесь более подробно, и мы углубимся в это подробнее в других частях этого руководства.

Петля

Цикл является элементарной частью цикла запроса WordPress. Как говорит Кодекс WordPress:

Цикл — это PHP-код, используемый WordPress для отображения сообщений. Используя Цикл, WordPress обрабатывает каждое сообщение, которое будет отображаться на текущей странице, и форматирует его в соответствии с тем, как оно соответствует заданным критериям в тегах Цикла.

Цикл WordPress — это, в основном, PHP-цикл while, который отображает сообщения в соответствии с запросом посетителей и указанными критериями в файле шаблона, в котором он указан.

Внутри цикла, независимо от того, выводит ли он только один пост или страницу, или их список, мы можем выводить различные части поста, такие как заголовок и контент. Мы можем указать любой вывод HTML или структуру, которую мы хотим. Мы также можем использовать условные теги и так далее.

Самый элементарный пример цикла может выглядеть примерно так:

 if ( have_posts() ) { while ( have_posts() ) { the_post(); // // Post Content here // } // end while } // end if 

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

Условные теги

Условные теги WordPress — это фрагменты кода PHP, которые позволяют нам отображать фрагменты контента только при соблюдении определенных условий. Например, у нас есть header.php всего сайта, который используется на каждой странице веб-сайта, но мы можем захотеть, чтобы определенные фрагменты HTML-кода отображались только на домашней или другой странице.

Итак, в первом примере мы будем использовать is_front_page() , и это будет выглядеть примерно так:

 if (is_front_page()){ # do something } 

Предусмотрено много условных тегов , и они обеспечивают большую гибкость в разработке WordPress.

Это строительные блоки WordPress, но есть также таксономии — которые могут быть встроенными или настраиваемыми, которые мы можем указать — и термины в этих таксономиях. Мы используем их для классификации и сортировки наших сообщений.

Структура темы

В конце этой части и до того, как мы попытаемся создать собственную тему, мы будем использовать инструмент WP-CLI , чтобы создать минимальную тему на основе Underscores, поддерживаемую Automattic, чтобы взглянуть на типичную минимальную тему WordPress. структура:

Отсюда мы можем получить представление о том, как мы можем структурировать файлы тем, папки и т. Д.

Вывод

В этой первой части нашего руководства по тематике WordPress мы ввели терминологию и строительные блоки тем WordPress, которые мы будем использовать в следующих уроках для создания нашей собственной темы WordPress.


В этой серии есть три статьи по созданию темы WordPress с нуля: