Разное

Как создать тему для WordPress самому: уроки с видео. Как создать wordpress шаблон, создаем wordpress тему Wordpress создание тем

Как создать тему для WordPress самому: уроки с видео. Как создать wordpress шаблон, создаем wordpress тему Wordpress создание тем

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

Итак, чтобы создать тему, нужно сделать следующие шаги:

1. Понять как там чего где подключается, что за что отвечает и из чего(каких файлов) вообще состоит тема.
2. Создать платформу, площадку для будущей темы - пустые файлы в папке с названием темы.
3. Узнать все команды WP. В шаблонах почти все действия (вывод рубрик, меток, содержания и т.д.) выполняются посредством встроенных в WP PHP функций.
4. Постепенно наполнять файлы, шаг за шагом.
5. Смотреть, что получилось, делать многочисленные правки и устранять баги.

А теперь о каждом шаге поподробней. Перед тем, как читать дальнейший материал, заранее скачайте тему: mytheme . Данная тема не содержит ничего лишнего.

Шаг 1. Что из себя представляет тема WordPress.
Тема WordPress - это набор файлов, которые подключаются один за другим в зависимости от запроса пользователя. Внутри файла содержится помесь html и php кода, html (ну и css) код отвечает за визуализацию, php - за вывод необходимого содержимого. Если пользователь кликнул в меню сайта на какую-то категорию, то будет подключен файл archive.php, который, в свою очередь, посредством специальных команд-функций (о них мы узнаем позже), подключает другие файлы: шапку, подвал сайта, блок навигации. Конечным итогом данных несложных операций является готовая страница, которая отдается пользователю.

Шаг 2. Создаем каркас нашей темы.
Наша тема будет состоять из следующий файлов:

* Название файла - что отображается:
* header.php - “шапка”.
* footer.php - “подвал”.
* index.php - главная.
* archive.php - архив.
* page.php - страница.
* single.php - одиночная запись.
* sidebar.php - блок, на котором будет выводиться навигация: категории, страницы, архив и т.д.
* comments.php - комментарии.
* search.php - результаты поиска.
* 404.php - страницы 404 ошибки (”не найдено”). - данный файл не обязателен.
* function.php - php функции темы. - данный файл не обязателен.
* style.css - таблицы css стилей.

Теперь давайте создадим папку с названием MyTheme и созданим в ней все файлы, перечисленные выше, просто созданим, наполнять ничем пока не надо.

Теперь копируем эту папку в wp-content/themes/ установленного WP. Наполнять содержимым эти файлы мы будет уже из панели администрирования вордпресса - Дизайн -> Выбираете только что созданную тему -> Редактировать. Редактирование из админки, на мой взгляд, является наиболее удобным, и потом, изчезает опасность слетания кодировки (при редактировании обыкновенными блокнотопдобными программами, не поддерживающими UTF-8, русские символы превращаются в крякозабру).

Итак, каркас темы у нас есть, осталось только его наполнить.

Шаг 3 и 4. Наполняем каркас нашей темы.
Этот шаг следует разделить на несколько подшагов. Сейчас я буду приводить название файла, а следом PHP функции (команды), которые отвечают за вывод того или иного содержания.

Перед дальнейшим прочтением материала, создайте простой статичный html шаблон, где будет отображено то, как будет выглядеть сайт на главной страничке.

header.php
Думаю, не нужно объяснять, что шапка - это верхняя часть сайта, в которой, как правило, выводится логотип, краткое описание сайта, возможно - меню. В нашей шапке мы будем выводить название сайта и описание сайта.

Название сайта выводит функция

Bloginfo("name");

За вывод описания отвечает функция

Bloginfo("description");

Название сайта будет логично сделать кликабельным, тоесть сделать ссылкой на главную страницу. Ссылка на главную страницу сайта возвращается функцией

Echo get_option("home");

Заметьте, некоторые функции выводят результат своего выполнения сразу, а некоторые просто возвращают значение и его нужно выводить командой echo.

В файл header.php мы также поместим технический html код. В необходимо выводить заголовок () сайта. Нужный заголовок возвращается функцией</p><p>Wp_title(); </p><p>Также обязательной является подстановка кодировки, в которой будет отдана страница. Кодировка возвращается функцией</p><p>Bloginfo("charset"); </p><p>Разумеется, здесь же необходимо поместить ссылку на таблицу стилей, на rss и прочую техническую информацию. Для всего существуют свои функции.</p> <p>Готовый файл header.php у нас будет выглядеть вот так (показано ниже), там вы сможете увидеть прочие функции и на интуитивном уровне понять что за что отвечает.</p> <p>Заходим через админку в редактор файла header.php, вставляем код из нужного файла архива mytheme.</p> <p><i><b>footer.php </b> </i><br> В этом файле содержится подвал сайта. На нем мы выведем название сайта и год.<br> Заходим через админку в редактор файла footer.php, вставляем код из нужного файла архива mytheme.</p> <p><i><b>sidebar.php </b> </i><br> Теперь давайте реализуем сайдбар, в котором будет выводиться навигация по сайту. Навигацию для простоты понимания, мы будем реализовывать посредствои виджетов.</p> <p>Заранее приведу готовый sidebar.php, а потом расскажу о нем поподробнее.</p><p>PHP код в сайдбаре создает новый блок для виджета под названием “Sidebar” (его мы установим в следующем файле), наполнить его содержимым можно в редакторе тем, в разделе виджеты. Там все должно быть понятно, позже, добавляя виджеты, вы сможете смотреть что именно добавляется на сайте с каждым новым виджетом и понять суть всего происходящего.</p> <p>Для большей гибкости, навигацию часто делают не посредством виджетов, а посредством следующих функций:</p><p>Wp_get_archives("type=monthly"); wp_list_pages("title_li=" . ("Страницы:")); wp_list_categories("title_li=" . __("Категории:")); wp_meta(); </p><p>Думаю, вам должно быть интуитивно понятно, какая из функций что выводит.</p> <p><i><b>functions.php </b> </i><br> Данный файл содержит функции, которые автоматически подключаются к шаблону, а некоторые WP самостоятельно выполняет перед генерацией страницы.</p> <p>В сайдбаре мы использовали виджет под названием “Sidebar”, теперь необходимо его установить в functions.php. Виджеты устанавливаются функцией register_sidebar, которой в качестве параметры передается массив значений, необходимый для управления отображением блоков.</p> <p>В нашем случае, чтобы установить виджет, нужно добавить в functions.php следующий код:</p><p> <?php if(function_exists("register_sidebar")) { register_sidebar(array("name"=>"Sidebar" "before_widget" => "", "after_widget" =>"", "before_title" => "<h3>", "after_title" => "</h3>",)); } ?> </p><p>Как видите, мы установили виджет под названием ‘name’=>’Sidebar’, до и после виджета нам не нужно никакого html кода, поэтому следующие 2 значения оставили пустыми, заголовок блока с элементом виджета мы помещаем в теги <h3>, что наглядно продемонстрировано в последних двух значениях.</p> <p>Итак, виджет определен, немного позже вы сможете поиграться им и оценить по достоинству эту замечательную возможность WordPress.</p> <p><i><b>index.php </b> </i><br> Этот файл отвечает за вывод того, что пользователь видит на главной странице сайта. Сейчас мы впервые узнаем, как подключать другие шаблоны (шапку, подвал, сайдбар и т.д.). А подключаются другие шаблоны следующим образом:</p> <p>Подключение шапки header.php:</p><p>Get_header(); </p><p>Подключение сайдбара sidebar.php:</p><p>Get_sidebar(); </p><p>Подключение подвала footer.php:</p><p>Get_footer(); </p><p>Откройте index.php из архива mytheme.</p> <p>В коде index.php вы увидели некоторые новые функции. Думаю, и без разъяснения понятно, что каждая из них делает и какие параметры ей передаются. Самой важной функцией является</p><p>В параметре этой функции - надпись, которая выводится в том случае, если содержание записи необходимо обрезать. Описывать остальные функции не считаю нужным, так как должно быть понятно, что, где и как. Главное - понять принцип подключения шаблонов функциями get_***();</p> <p><i><b>archive.php, page.php, single.php </b> </i><br> А теперь мы плавно переходим к следующим файлам. Во все файлы, кроме 404.php, style.css и comments.php можно вставить тот же код, что и в index.php. Да, да, тоже самое. Как так? Давайте разберемся. Все станет понятно, когда вы поглубже вникните в php код index.php. Давайте посмотрим, что же там происходит.</p> <p>Мы видим функция <?php if (have_posts()) : ?> возвращает true в случае, если записи по существующему критерию существуют, в противном случае возвращается false. Мы также видим, что если WordPress есть что показать, он выполняет цикл <?php while (have_posts()) : the_post(); ?>, в котором он выводит все записи, удовлетворяющий критерию. Например, если пользователь кликнул на категорию “Авто”, WP вытаскивает из базы данных все записи этой категории, помещает в have_posts(), а если пользователь кликнул на какую-либо страницу, - WP вытаскивает из базы данных ту самую страницу и также помещает ее в функцию have_posts(), которую мы обходим циклом (в данном случае 1 раз) и выводим.</p> <p>Если have_posts() вернет false, тоесть если ни 1 записи, подходящей под критерии нет, то отобразится</p><p> <h2 align="center">Не найдено</h2><p align="center">Извините, ничего не найдено.</p> </p><p>Если посидеть несколько минут и разобрать алгоритм, все встанет на свои места.</p> <p>Хотя нет, просто код файлов page.php, single.php не полностью соответствует index.php, в эти файлы необходимо также добавить comments_template(); в то место, гле вы хотите видеть комментарии к записи. Эта функция подключает в шаблон comments.php, описанный ниже.</p> <p><b>comments.php </b><br> На первых порах лучше всегда использовать стандартную форму комметариев, по этому возьмите ее из архива mytheme.</p> <p><i><b>404.php </b> </i><br> Этот файл подключается, если пользователь пришел на что-то несуществующее, например, несуществующую категориию. Сюда просто пишем любое сообщение об ошибке, если есть желание, старыми способами подключаем шапку, подвал и прочие части темы. Данный файл не обязателен!</p> <p><i><b>style.css </b> </i><br> Ну а тут совсем все просто. Здесь пишем таблицы стилей, они будут автоматически подключаться к каждой странице.</p> <p><b>Шаг 5. Делаем дополнения и правки. </b><br> У вас есть готовая тема, которую вы можете самостоятельно переделывать и доделывать как хотите.</p> <p>Эта статья поведает вам о том, как создать самую простую тему для WordPress. Хотя Codex и предоставляет обширную документацию по этому вопросу, но мне она кажется несколько сложной для новичка. Поэтому в данном «туториале» я расскажу принципы работы тем для WordPress и покажу как адаптировать под них сырой HTML-шаблон. При этом от вас не требуется знание PHP, но хорошо если вы владеете Photoshop и CSS для создания дизайна.</p> <h2>1. Frontend блога</h2> <p>До того, как мы начнём, давайте взглянем на стандартную тему WordPress и разберёмся из чего она состоит. Отметим элементы (шапка, заголовок поста, форма поиска, навигация, подвал и т. д.).</p> <p>Стандартный Frontpage (<i>index.php </i>) </p> <p><img src='https://i2.wp.com/images.netpeak.ua/blog/maybe01_default-single.gif' align="center" height="480" width="470" loading=lazy></p> <p>Стандартный Single (<i>single.php </i>) </p> <h2>2. Photoshop-макеты</h2> <p>Основываясь на внешнем виде стандартной темы, разработайте Photoshop-макеты для вашего блога. Для примера я использую GlossyBlue — одну из моих бесплатных тем. Скачайте demo.zip , чтобы увидеть готовый файл Photoshop.</p> <p><img src='https://i0.wp.com/images.netpeak.ua/blog/maybe01_photoshop-mockup.gif' align="center" width="100%" loading=lazy></p> <h2>3. HTML и CSS</h2> <p>Когда PSD-дизайн готов, создайте HTML+CSS шаблон каждой страницы. Следуя шагам этой инструкции, вы можете использовать мои HTML файлы GlossyBlue из <i>demo.zip </i>. Распаковав архив, вы увидите <i>index.html, single.html </i>и<i> page.html </i>. Далее я буду использовать их для превращения в шаблон.</p> <p><img src='https://i1.wp.com/images.netpeak.ua/blog/maybe01_html-css-template.gif' align="center" height="152" width="386" loading=lazy></p> <p><b>Зачем сперва создавать статический HTML? </b> Главным образом это нужно потому, что это значительно упростит процесс разработки. Обычно я создаю HTML файл для каждого шаблона, проверяю их валидность (HTML и CSS разметку) во всех браузерах. После этого остаётся лишь вырезать и вставить код WordPress. Так что можно уже не беспокоиться об ошибках в HTML или CSS.</p> <h2>4. Как работает тема WordPress</h2> <p>Если вы перейдёте к папке стандартной темы (<i>wp-content/themes/default </i>), то увидите много php-файлов (называемых файлами шаблонов) и один файл <i>style.css </i>. Для формирования страницы WordPress обычно использует несколько файлов шаблонов (<i>index.php </i> <i>, header.php, sidebar.php, </i>и<i> footer.php </i>).</p> <p><img src='https://i2.wp.com/images.netpeak.ua/blog/maybe01_how-theme-works.gif' align="center" height="273" width="289" loading=lazy></p> <p>Подробнее в Codex: «Архитектура сайта» и «Иерархия шаблонов» .</p> <h2>5. Дублирование файлов шаблонов</h2> <p>Скопируйте папку HTML из GlossyBlue в папку <i>wp-content/themes </i>. После этого перейдите в директорию темы default , скопируйте <i>comments.php </i> и <i>searchform.php </i> в папку <i>glossyblue </i>.</p> <p><img src='https://i1.wp.com/images.netpeak.ua/blog/maybe01_copy-files.gif' align="center" height="177" width="341" loading=lazy></p> <h2>6. Style.css</h2> <p>Перейдите в папку темы default , откройте файл <i>style.css </i>. Скопируйте закомментированный в начале файла текст и вставьте в <i>style.css </i> темы GlossyBlue . Если хотите, можете изменить название и данные об авторе. <br><img src='https://i2.wp.com/images.netpeak.ua/blog/maybe01_css-commented-code.gif' width="100%" loading=lazy></p> <h2>7. Разделение файлов</h2> <p>Теперь нам нужно понять где разделить HTML-файлы на части: <i>header.php , sidebar.php , и footer.php </i>. На скриншоте ниже видно упрощённую версию моего index-файла, а также принцип его деления.</p> <p><img src='https://i1.wp.com/images.netpeak.ua/blog/maybe01_splitting-files.gif' align="center" width="100%" loading=lazy></p> <h2>8. Header.php</h2> <p>Откройте <i>index.html </i>. Вам нужно вырезать участок от верха до места, где заканчивается , вставить его в новый php-файл и сохранить как <i>header.php </i>. <br><img src='https://i0.wp.com/images.netpeak.ua/blog/maybe01_header-code.gif' width="100%" loading=lazy> Перейдите в папку темы default , откройте новый <i>header.php </i>. Скопируйте и замените теги, где этого требует php-код: title, link, таблицы стилей, h1 и div class=description.</p> <p><img src='https://i0.wp.com/images.netpeak.ua/blog/maybe01_header.gif' align="center" width="100%" loading=lazy></p> <p><b>Меню навигации </b> (<span>wp_list_pages </span>) Замените тэги <span>li </span> в <span>ul id=nav </span> на ;</p> <p><img src='https://i2.wp.com/images.netpeak.ua/blog/maybe01_navigation-menu.gif' align="center" width="100%" loading=lazy></p> <h2>9. Sidebar.php</h2> <p>Вернитесь к <i>index.html </i>, вырежьте код с того места, где начинается <span>form id=searchform </span> и до закрытия тега <span>div id=sidebar </span>, поместите его в новый php-файл и сохраните как <i>sidebar.php </i>.</p> <ul><li>Замените <span>form id=searchform </span> со всем содержимым на .</li> <li>Замените теги <span>li </span> категорий на </li> <li>Замените теги <span>li </span> архивов на </li> </ul><p><img src='https://i0.wp.com/images.netpeak.ua/blog/maybe01_sidebar-code.gif' align="center" width="100%" loading=lazy></p> <h2>10. Footer.php</h2> <p>Вернитесь к <i>index.html </i>. Извлеките оттуда код от <span>div id=footer </span> включительно с тегом div id=footer и до конца <span>/html </span> затем поместите в новый <i>footer.php </i>.</p> <p><img src='https://i0.wp.com/images.netpeak.ua/blog/maybe01_footer.gif' align="center" width="100%" loading=lazy></p> <p><b>Недавние записи </b> Тут я использовал query_post для отображения 5 последних записей в блоге.</p> <p><img src='https://i1.wp.com/images.netpeak.ua/blog/maybe01_recent-posts.gif' align="center" width="100%" loading=lazy></p> <p><b>«Последние комментарии» </b> «Последние комментарии» сгенерированы плагином (включён в папку темы)</p> <p><img src='https://i0.wp.com/images.netpeak.ua/blog/maybe01_recent-comments.gif' align="center" width="100%" loading=lazy></p> <h2>11. Index.php</h2> <p>Теперь в вашем <i>index.html </i> должен остаться только <span>div id=content </span>. Сохраните файл как <i>index.php </i>. Впишите строки: <span>get_header </span>, <span>get_sidebar </span>, и <span>get_footer </span> в том порядке, как они встречаются в шаблоне. <br><img src='https://i0.wp.com/images.netpeak.ua/blog/maybe01_index.gif' width="100%" loading=lazy></p> <h2>12. Разбор цикла</h2> <p>Цикл последовательно отображает записи блога в зависимости от ваших настроек. Скриншот ниже иллюстрирует его работу. Изначально цикл проверяет наличие записей и если таковых не находит, то выдает сообщение <b>«Not Found» </b>.</p> <p><img src='https://i0.wp.com/images.netpeak.ua/blog/maybe01_the-loop-explain.gif' align="center" height="201" width="327" loading=lazy></p> <h2>13. Копирование цикла</h2> <p>Перейдите к директории темы default , откройте <i>index.php </i>. Скопируйте цикл из стандартного <i>index.php </i> в свой — между <span>div id=content../div </span>. После этого замените статический текст тегами шаблона WordPress: post date, title, category, comments, next и previous link.</p> <p><img src='https://i2.wp.com/images.netpeak.ua/blog/maybe01_the-loop.gif' align="center" width="100%" loading=lazy></p> <h2>14. Предпросмотр темы</h2> <p>Поздравляю! Вы создали публичную часть (основную часть шаблона). Теперь зайдите в административную панель, перейдите к закладке <b>Design </b>, вы должны увидеть тему GlossyBlue . Активируйте её и перейдите к публичной части, чтобы посмотреть результат в действии.</p> <h2>15. Single.php</h2> <p>Пришло время создать шаблон <i>single.php </i>. Если хотите, можете повторить шаги, перенося код из стандартной темы. Но мне кажется более простым использовать только что созданный <i>index.php </i>, сохранив его как <i>single.php </i>. Откройте <i>single.php </i> из стандартной темы и скопируйте теги шаблона в нужные места. Далее подключите <span>comments_template </span>. На следующем скриншоте отображены внесенные мною изменения:</p> <p><img src='https://i1.wp.com/images.netpeak.ua/blog/maybe01_single-zoom.gif' align="center" height="516" width="470" loading=lazy></p> <h2>16. Page.php</h2> <p>Теперь новый <i>single.php </i> сохраните с названием <i>page.php </i>. Уберите дату записи, форму комментариев, ссылки следующий/предыдущий. Вот, собственно, и всё — ваш шаблон <i>page.php </i>готов .</p> <h2>17. Удаление файлов HTML</h2> <p>Удалите все файлы HTML из папки <i>glossyblue </i>(они нам больше не понадобятся). Технически этого достаточно для создания базовой темы WordPress. Вы, наверное, заметили, что в стандартной теме больше PHP-файлов. Что же, на самом деле, они вам не так уж необходимы, если требуется простая тема. Например, если <i>search.php </i> или <i>404.php </i> не будет в папке темы, WordPress автоматически использует <i>index.php </i> для отображения страницы. Читайте Template Hierarchy для более подробного рассмотрения.</p> <h2>18. Шаблон страницы WordPress</h2> <p>А теперь последний пример — я покажу вам как использовать Page Template для создания страницы Архива, которая будет содержать список всех записей на вашем блоге (удобно для карты сайта). Скопируйте <i>archives.php </i> из папки стандартной темы. Удалите ненужный код и получите что-то вроде этого:</p> <p><img src='https://i2.wp.com/images.netpeak.ua/blog/maybe01_archives-template.gif' align="center" height="210" width="293" loading=lazy></p> <p><i> </i> <i> </i> <i> </i> <i> </i> <i> </i></p><p>Типы постов на WordPress являются самым широким полем деятельности для разработчиков. Изначально WordPress включает в себя 5 основных типов постов: запись, страница, вложение, ревизия и навигационное меню.</p><p>Записи и страницы являются основными типами постов для размещения контента на сайте. И между ними есть несколько отличий.</p><p><b>Записи </b>, как правило, отображаются в обратном порядке на главной странице блога, а страницы отображаются без даты публикации. Категории и тэги также могут быть привязаны к записям, а к страницам нет (хоть и это можно сделать в настройках).</p><p><b>Страницы </b> можно структурировать по порядку. Это особо полезно для организации контента для владельцев сайта и посетителей.</p><p>Дизайн страниц так же легко можно изменить, если использовать различные шаблоны страниц. Они позволят изменить стиль любой страницы на вашем сайте.</p><p>Давайте рассмотрим более детально, какие шаблоны страниц существуют, и как их можно использовать для сайта.</p><h2>Почему бы не использовать разные шаблоны страниц?</h2><p>В темах WordPress обычно используется шаблон <b>page.php </b>, который определяет стиль всех страниц сайта. Большинство разработчиков тем создают шаблон начальной страницы по такому же принципу. В этом шаблоне отображается контент страницы и по умолчанию определяется, какие элементы дизайна будут на ней присутствовать (например, шапка, сайдбар, футер, прочее).</p><p>По умолчанию шаблон страницы (page.php) настроен таким образом, что весь необходимый контент отображается на странице.</p><p>Создание уникального шаблона страницы позволяет выйти за рамки стандартов WordPress и изменить отображение содержимого на сайте на свое усмотрение. Например, вы могли бы изменить дизайн страниц, удалив сайдбар. Также можно изменить привычный шрифт и использовать другую шапку, а не ту, которую предлагает домашняя страница.</p><p>Наиболее известный пользовательский шаблон страницы - это <b>Archive </b> (шаблон архивной страницы <b>archive.php </b>). Он есть во многих темах WordPress и содержит весь контент сайта, который разделен на страницы, категории, тэги, даты архивов, авторские архивы.</p><p>Многие шаблоны архивов также отображают полный список записей в блоге и поле для поиска записей на сайте. По сути, шаблон архива - это карта сайта, с помощью которой пользователь может найти то, что ищет.</p><p>В темах можно найти и другие типы шаблонов страниц, как например:</p><ul><li>Контактную форму</li><li>Страницы без сайдбара (боковой панели)</li><li>Лендинговую страницу (посадочную страницу)</li><li>Индекс блога</li> </ul><p>Возможности шаблонов страниц безграничны. Все зависит от того, насколько удобным вы хотите сделать свой сайт для конечного пользователя.</p><h2>Как выбрать шаблон для страницы?</h2><p>Добавить шаблон для страницы очень просто. В редакторе страницы справа вы увидите окошко (виджет) под названием «<b>Атрибуты страницы </b>». Оно размещено под окошком «<b>Опубликовать </b>».</p><p>В атрибутах страницы можно выбрать родительскую страницу и порядок ее размещения на сайте в соответствующем поле. А опция между ними позволяет изменить шаблон. Все что нужно сделать - это выбрать шаблон для страницы и обновить ее.</p><p><img src='https://i2.wp.com/hostenko.com/wpcafe/wp-content/uploads/Capture97.png' height="366" width="301" loading=lazy></p><p>Шаблон также можно изменить другим способом - через список всех страниц. Нужно только нажать на «<b>Свойства </b>».</p><p><img src='https://i2.wp.com/hostenko.com/wpcafe/wp-content/uploads/Capture237.png' height="56" width="320" loading=lazy></p><p>Затем изменить шаблон в опциях меню справа.</p><p><img src='https://i1.wp.com/hostenko.com/wpcafe/wp-content/uploads/Capture327.png' height="166" width="330" loading=lazy></p><p>Опции шаблона не будут отображаться, если в вашей теме используется только стандартный шаблон страницы.</p><h2>Создаем базовый шаблон страницы для сайта</h2><p>Создать новый шаблон страницы для вашего сайта на WordPress легче, чем вы думаете. Для этого не нужно иметь опыт в разработке и создании тем или плагинов.</p><p>Нужно только использовать код <b>page.php </b> уже существующего шаблона темы в качестве основы для нового шаблона страницы. К примеру, вы используете старую стандартную тему Twenty Twelve . Файл <b>page.php </b> имеет следующий код:</p><p> <?php /** * The template for displaying all pages * * This is the template that displays all pages by default. * Please note that this is the WordPress construct of pages * and that other "pages" on your WordPress site will use a * different template. * * @package WordPress * @subpackage Twenty_Twelve * @since Twenty Twelve 1.0 */ get_header(); ?> <div id="primary" class="site-content"> <div id="content" role="main"> <?php while (have_posts()) : the_post(); ?> <?php get_template_part("content", "page"); ?> <?php comments_template("", true); ?> <?php endwhile; // end of the loop. ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?> </p><p>Можно использовать этот код для создания шаблона новой страницы. Для этого нужно только убедиться, что комментарий к коду размещен вверху нового файла. Это определит данный файл как шаблон страницы:</p><p> /* Template Name: My Custom Page Template */ </p><p>Шаблон вашей страницы будет выглядеть следующим образом:</p><p> <?php /* Template Name: My Custom Page Template */ Далее идет код шаблона страницы </p><p>Давайте рассмотрим процесс создания базового шаблона страницы и попробуем создать шаблон страницы в полную ширину <b>без использования сайдбара </b>. Тема Twenty Twelve изначально включает в себя шаблон в полную ширину, но мы сделаем вид, что это не так, потому что нам это нужно для нашего обучения.</p><p>В стандартном шаблоне сайдбар страницы отображается с правой стороны:</p><p><img src='https://i0.wp.com/hostenko.com/wpcafe/wp-content/uploads/default-page-template.jpg' width="100%" loading=lazy></p><p><i>Стандартный шаблон страницы в теме Twenty Twelve </i></p><p>Создать шаблон новой страницы без сайдбара просто.</p><p>Для начала нужно создать новый файл, используя любой текстовый редактор (Блокнот или Notepad++ подойдет). Его можно назвать как-то по-простому, например, <b>nosidebar-page.php </b> или <b>full-page.php </b> (о названиях файлов поговорим немного позже). Затем загрузите файл на ваш сайт таким образом, чтобы он находился рядом с файлом page.php.</p><p>По сути, наш шаблон - это шаблон от <b>page.php </b> темы Twenty Twelve, только с удаленным кодом <?php get_sidebar(); ? >.</p><p>Он выглядит так:</p><p> <?php /* Template Name: Full Width Page with No Sidebar */ get_header(); ?> <div id="primary" class="site-content"> <div id="content" role="main"> <?php while (have_posts()) : the_post(); ?> <?php get_template_part("content", "page"); ?> <?php comments_template("", true); ?> <?php endwhile; // end of the loop. ?> </div><!-- #content --> </div><!-- #primary --> <?php get_footer(); ?> </p><p>После загрузки файла шаблона в вашу тему его можно использовать для всех страниц. Можно также привязать страницу к этому шаблону, чтоб удалить ее сайдбар.</p><p><img src='https://i1.wp.com/hostenko.com/wpcafe/wp-content/uploads/assign-page-template-nosidebar.jpg' height="330" width="325" loading=lazy></p><p>Но это еще не все. Пока мы только удалили сайдбар. Нам нужно сделать так, чтоб контент размещался <b>по всей ширине страницы </b>. А пока он занимает только две третьих страницы:</p><p><img src='https://i0.wp.com/hostenko.com/wpcafe/wp-content/uploads/page-template-sidebar-removed.jpg' width="100%" loading=lazy></p><p>Если вы посмотрите на код нашего шаблона, то увидите, что основная часть контента находится под действием определенного класса CSS:</p><p> <div id="primary" class="site-content"> </p><p>За стиль основной части контента отвечает вторая часть class="site-content" . Если проверить файл стилей (<b>style.css </b>) темы, то можно заметить, что этот класс находится почти в самом низу:</p><p>Site-content { float: left; width: 65.104166667%; } </p><p>Для того чтобы расширить контент на всю страницу, нам нужно изменить ширину области контента с 65% на <b>100% </b>. Но не нужно изменять класс контента сайта, т.к. он по-прежнему используется в других шаблонах, как например, стандартная страница <b>page.php </b> и шаблон записей <b>single.php </b>. Изменение цифры процента для контента сайта повлияет на все записи и страницы на вашем сайте, которые занимают всю ширину страницы.</p><p>Поэтому нам нужно создать новый класс, который употребляется специально для страниц с полной шириной:</p><p>Site-content-fullwidth { float: left; width: 100%; } </p><p>После обновления файла <b>style.css </b> с вышеуказанным классом нам нужно изменить наш шаблон с полной шириной страницы и быть уверенными, что мы создали ссылку на класс CSS с шириной в 100%:</p><p> <div id="primary" class="site-content-fullwidth"> </p><p>Наш финальный шаблон будет выглядеть так:</p><p> <?php /* Template Name: Full Width Page with No Sidebar */ get_header(); ?> <div id="primary" class="site-content-fullwidth"> <div id="content" role="main"> <?php while (have_posts()) : the_post(); ?> <?php get_template_part("content", "page"); ?> <?php comments_template("", true); ?> <?php endwhile; // end of the loop. ?> </div><!-- #content --> </div><!-- #primary --> <?php get_footer(); ?> </p><p>Этот обновленный шаблон подтверждает, что контент на нашем сайте будет отображаться на всю страницу:</p><p><img src='https://i1.wp.com/hostenko.com/wpcafe/wp-content/uploads/page-template-full-width.jpg' width="100%" loading=lazy></p><p><i>Теперь контент на сайте отображается по всей странице </i></p><p>Все, что указано выше, можно сделать в любой теме WordPress. Для этого удалите сайдбар из созданного шаблона страницы и убедитесь, что вы меняете нужный класс таблицы стилей.</p><h2>Как называть шаблоны страниц</h2><p>Согласно WordPress Template Hierarchy , WordPress отображает шаблоны для страницы в следующем порядке:</p><ul><li>Пользовательский шаблон (Custom Template)</li><li>page-{slug}.php</li><li>page-{id}.php</li><li>page.php</li><li>index.php</li> </ul><p>Вам будет проще, если вы будете иметь представление о порядке этих шаблонов, потому что так вы поймете, почему страница оформлена тем или иным образом.</p><p>Этот порядок означает, что на WordPress всегда будет отображаться шаблон для страницы, если он был прикреплен к ней. Если к странице не был добавлен ни один из шаблонов, то WordPress будет искать page-{slug}.php.</p><p>Если шаблон page-{slug}.php не найден, WordPress ищет шаблон по ID страницы. К примеру, если ID страницы = 15, то WordPress будет искать шаблон страницы с названием 15.php.</p><p>Если шаблон не привязан к странице и нет совпадений с ID страницы, то WordPress ищет по стандартному шаблону страницы page.php. И если страницы шаблона page.php не существует, то для поиска используется index.php.</p><p>Многие разработчики называют свои шаблоны тем, используя формат page-name.php. К примеру, шаблон страницы контактов называют page-contact.php. По большому счету вы можете давать шаблонам названия на свое усмотрение и использовать любые конфигурации, будь то page-name.php, name-page.php или name.php. В любом случае, в будущем вы сможете эти названия изменить.</p> <p>В этой статье я расскажу о способах создания шаблонов для постоянных страниц WordPress. Каждый способ несет в себе плюсы и минусы. Но прежде чем начать, коротко о том, что такое страницы и чем они отличаются от записей.</p> <p>В WordPress можно создавать страницы (page) и записи (post). Отличаются они тем, что записи: попадают в ленту на главной странице; для записей указываются категории; записи не могут быть древовидными, а страницы: используются для такого содержимого как "Обо мне", "Контакты", "Карта сайта"; не имеют категорий, а имеют древовидную структуру. Записи обычно предназначены для хронологической информации (по времени добавления), а страницы для древовидной структуры не зависимой от времени. Для примера, эта статья опубликована как "запись" в рубрике "Кодекс", а ссылки в меню шапки ведут на страницы: Функции .</p> <p>Страницы похожи на записи - они расположены в одной таблице базы данных и данные у них почти одинаковы: заголовок, текст, дополнительные поля и т.д. И то и другое - это записи, но разных типов: страницы древовидные и организуются путем создания родительских и дочерних страниц, а записи объединяются рубриками и метками. В WordPress можно создавать дополнительные типы записей древовидные или нет.</p><p>Создание страниц в WordPress </p><p>Часто нужно создать отдельный шаблон страницы, чтобы вывод информации отличался от остальных страниц. Создавая шаблон страницы в WordPress, можно совершенно изменить страницу: удалить сайдбар, подвал, шапку, можно изменить страницу до неузнаваемости. Например, на этом сайте так изменяется страница на которой выводятся коды файлов WordPress .</p> <p><span class="RNFRCz0whuw"></span></p> <h2> Способ 1: шаблон страницы через файл с произвольным названием и подключением его в админ-панели (классический способ)</h2> <p>Это самый распространенный способ создать шаблон страницы в WordPress. Для этого нужно создать.php файл, например, tpl_my-page.php в папке темы и в самом начале файла вписать пометку, что созданный файл является шаблоном для страниц:</p><p> <?php /* Template Name: Мой шаблон страницы */ ?> <!-- Здесь html/php код шаблона --> </p><p>Теперь при создании страницы в админ-панели в блоке «Свойства страницы» мы сможем выбрать "шаблон":</p> <p><img src='https://i2.wp.com/wp-kama.ru/wp-content/uploads/2014/10/svojstva-stranitsy.png' align="center" height="329" width="300" loading=lazy></p> <p>С версии WordPress 4.7. такие шаблоны страниц можно создать для любого типа записи, а не только для page. Для этого дополните комментарии строкой: Template Post Type: post, page , где post, page - это названия типов записей к которым относится шаблон.</p><p> /* Template Name: Мой шаблон страницы Template Post Type: post, page, product */ </p> <p><b>Преимущества: </b></p> <ul><p>Создав один шаблон, мы можем удобно применять его для разных страниц. Например, можно создать шаблон без боковой панели и использовать его на разных страницах.</p> <li>Можно получить только записи с указанным шаблоном. Например, можно вывести все страницы с шаблоном «Услуги» (файл servises.php). Иногда это удобно. Название файла шаблона хранится в метаполе _wp_page_template , поэтому чтобы вывести страницы с указанным шаблоном нужно создать запрос по метаполю (см. WP_Query).</li> </ul><p><b>Недостатки: </b></p> <p>После создания файла шаблона в папке темы, нужно зайти в админ-панель и установить шаблон для страницы. При разработке это не всегда удобно. Поэтому если подразумевается использовать шаблон только для одной страницы, используйте второй метод.</p> <p><b>Как это работает: </b></p> <p>Когда вы заходите в админ-панель на страницу редактирования записи древовидного типа, WordPress просматривает все файлы шаблона на наличие в них строки:</p><p>Template Name: *** </p><p><i>Строка может располагаться где угодно и как угодно в файле. </i></p> <p>Все файлы с подобными строками собираются и выводятся в выбор шаблона в блок "Атрибуты страницы".</p> <p>При публикации страницы, в произвольное поле _wp_page_template записывается название файла шаблона или default , если шаблон не указан:</p> <p>Wp_page_template = default <br> _wp_page_template = tpl_my-page.php</p> <p>Далее, когда пользователь посещает страницу, WordPress проверят метаполе _wp_page_template , если шаблон установлен, то используется файл шаблона. В противном случае поиск шаблона страницы продолжается по иерархии .</p> <h2> Способ 2: шаблон страницы через файл с конкретным названием (иерархия файлов шаблона)</h2> <p>При создании страницы ей устанавливается ярлык (слаг, альтернативное название). Он используется в УРЛ страницы. И его можно изменить:</p> <br><img src='https://i2.wp.com/wp-kama.ru/wp-content/uploads/2014/10/pages-3admin.png' align="center" width="100%" loading=lazy><p>Для создание шаблона этим способом, вам нужно узнать слаг страницы и создать файл в папке темы. Допустим, наш слаг как на картинке равен contacts , тогда создадим в теме файл page-contacts.php . и заполним его нужным кодом (можно скопировать содержимое из файла шаблона page.php и отредактировать под себя). Все, теперь при посещении страницы мы должны увидеть новый шаблон. Аналогично можно взять ID (пусть 12) страницы и создать файл page-12.php .</p> <p><b>Достоинства: </b></p> <p>Нет необходимости заходить в админ-панель и устанавливать файл шаблона. Шаблон начинает работать сразу после создания файла. Удобно при разработке.</p> <p><b>Недостатки: </b></p> <p>Шаблон создается только для одной, конкретной страницы. Зависит от слага страницы, если он изменится шаблон работать не будет. Если использовать ID, то зависимость от слага пропадает, но становится непонятно в файла темы, к какой странице относится шаблон (если несколько шаблонов с ID).</p> <p>Практически бесполезен при написании шаблонов, а тем-более плагинов. Его можно использовать, когда правишь свой сайт, в котором слаг или ID страницы известны заранее.</p> <p><b>Как это работает: </b></p> <p>WordPeress подбирает какой файл использовать в следующем порядке (файлы должны быть в корне темы):</p> <ul><li>{любое_название}.php (когда используется шаблон страницы)</li> <li>page-{ярлык_записи}.php</li> <li>page-{ID_записи}.php</li> <li>page.php</li> <li>singular.php</li> <li>index.php</li> </ul><h2> Способ 3: шаблон страницы через фильтр "template_include" (коддинг)</h2> <p>Это продвинутый способ, он более сложный, но вместе со сложностью он открывает широкие возможности. С помощью этого способа можно задать шаблон любой странице, записи, категории, любой публикации на сайте или вообще группе любых публикаций. Смотрите примеры с описанием:</p><p> // фильтр передает переменную $template - путь до файла шаблона. // Изменяя этот путь мы изменяем файл шаблона. add_filter("template_include", "my_template"); function my_template($template) { # аналог второго способа // если это страница со слагом portfolio, используем файл шаблона page-portfolio.php // используем условный тег is_page() if(is_page("portfolio")){ if ($new_template = locate_template(array("page-portfolio.php"))) return $new_template ; } # шаблон для группы рубрик // этот пример будет использовать файл из папки темы tpl_special-cats.php, // как шаблон для рубрик с ID 9, названием "Без рубрики" и слагом "php" if(is_category(array(9, "Без рубрики", "php"))){ return get_stylesheet_directory() . "/tpl_special-cats.php"; } # шаблон для записи по ID // файл шаблона расположен в папке плагина /my-plugin/site-template.php global $post; if($post->ID == 12){ return wp_normalize_path(WP_PLUGIN_DIR) . "/my-plugin/site-template.php"; } # шаблон для страниц произвольного типа "book" // предполагается, что файл шаблона book-tpl.php лежит в папке темы global $post; if($post->post_type == "book"){ return get_stylesheet_directory() . "/book-tpl.php"; } return $template; } </p><p>Такой код нужно разместить в файл темы functions.php или в плагин, или подключить как-то еще. Как видно из примера во время фильтра template_include уже работают условные теги, установлены глобальные переменные: $wp_query , $post и т.д.</p> <p><b>Достоинства: </b></p> <ul><p>Можно установить шаблон для любой страницы или группы страниц. Практически полный карт-бланш в действиях.</p> <li>Можно создать шаблон при написании плагина.</li> </ul><p><b>Недостатки: </b></p> <p>Необходимость писать код и отдельно его подключать (например, в functions.php темы).</p> <p>В этой статье мы узнаем, как создать wordpress тему. Для начала мы создадим HTML + CSS шаблон, который поместим в структуру wordpress темы. После того, как вы дочитаете эту статью, вы сможете создать собственный шаблон для wordpress, а точнее вы его создадите по ходу чтения и выполнения практических заданий. Вы будете знать как устроена тема и сможете самостоятельно реализовать ядро wordpress темы из других HTML/CSS шаблонов. Начнем?</p> <h2>Вступление – структура wordpress темы</h2> <p>Структура wordpress темы, предельно проста. В теме мы имеем файл <b>index. </b><b>php, </b>он отвечает за сборку кусков шаблона. К этому файлу подключены другие: <b>header. </b><b>php, </b><b>footer. </b><b>php </b>. Эти файлы (куски шаблона) используются на любой странице сайта. Мы знаем, что не все страницы строятся по единому шаблону, поэтому wordpress тема имеет другие файлы, такие как <b>archives. </b><b>php </b>или <b>single. </b><b>php </b>. Также можно создать свой тип страниц, если вы хотите, чтобы он категорически отличался от других на сайте. Это очень удобно.</p> <p>Если вы внимательно рассмотрите структуру темы, и прочитаете содержимое файлов, то интуитивно поймете что к чему. Но все же имеются некоторые моменты, которые мы рассмотрим. Вы всегда сможете вернуться к этой странице и прочитать, как все делается.</p> <p>А теперь рассмотрим создание шаблона поэтапно:</p> <h2>Шаг 1 – style.css</h2> <p>CSS файл, это файл параметров и дизайнерских решений для HTML элементов шаблона. Вы должны переименовать главный css файл (если он у вас не один) на <b>style. </b><b>css </b>. Далее вам необходимо добавить в начале этого файла следующую закомментированную информацию:</p><p> /* Theme Name: Typography Paramount Theme URI: http://сайт/ Description: An image-less template focusing on Typography..0 . General comments/License Statement if any. . */ </p><p>Этот код будет показывать информацию о теме для администраторов. Убедитесь что он в начале файла, и нету никаких пробельных символов перед ним!</p> <p>Далее я создал еще один файл, под именем <b>1. </b><b>css </b>, и поместил его в папку <b>typography-paramount </b>, которую создал в папке wordpress темы. Нужно четко соблюдать эту структуру, чтобы wordpress смог видеть этот файл.</p> <h2>Шаг 2 – header и footer</h2> <p>На этом этапе мы создадим два файла: <b>header. </b><b>php </b>и <b>footer. </b><b>php </b>, о которых упоминалось раньше. Хотя они не основные и включены в тему опционально, они используются в большинстве шаблонов, поэтому мы их создадим.</p> <h4><b>Header.php </b></h4> <p>Начнем с этого файла. Создайте файл и присвойте ему имя <b>header. </b><b>php </b>, после чего вставьте в него поданный код и сохраните. Этот файл будет отображаться на всех страницах нашего шаблона.</p><p> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>-

До сих пор, не было ничего особенного в отличии от простой html/css темы. Но теперь мы заменим некоторые элементы на wordpress теги.

> <?php bloginfo("name"); ?> <?php wp_title(); ?> ; charset=" /> " type="text/css" media="screen,projection" />

Это только некоторые известные мне теги. Намного больше вы найдете на официальном сайте: codex.wordpress.org .

language_attributes() – Выводит тип языка для тега .

bloginfo() – Используется для вывода информации о сайте, все параметры можно найти в кодексе вордпресса.

wp_title() – Возвращает title страницы.

wp_head() – подключает javascript и другие необходимые элементы.

get_option() – получает необходимые опции для работы с базой данных.

Footer.php

Теперь создадим так званный «подвал сайта». Создайте файл footer. php и поместите в него следующий код. Этот футер, будет отображать год, название сайта, и ссылки на rss.

< ?php wp_footer(); ?>

php the_ time(" Y"); ?> - отображает текущий год.

- название блога.

- добавление ссылки на rssленту блога.

wp_footer() – это необходимо для самого ядра wordpress, который добавляет туда нужные ему элементы.


Шаг 3 – основной файл wordpress шаблона

Пришло время создать основной файл wordpress шаблона, который будет подключать верхушку и низ сайта. Создайте файл index. php . Это один из двух обязательных файлов wordpress темы (другой style.css). Вставьте ново созданный файл следующий код:

Этот код, помогает wordpress получить информацию куда подключать header. php и footer. php . Давайте добавим еще несколько строк между этими тегами:

">

at | |

Woops...

Sorry, no posts we"re found.

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

Также добавлен тег , который выводит навигационные ссылки, чтобы пользователи могли читать ранее добавленные посты.

Пример работы wordpress темы

Теперь у нас есть подобие темы, давайте посмотрим пример работы созданной wordpress темы.


Мы имеем четыре файла в нашей теме, для начала это вполне достаточно. В следующей статье добавим файл single. php , которые будет показываться при выводе конкретного поста. Этот файл будет включать в себя , в отличии от файла index. php.

Если у вас еще остались вопросы или недопонимания по поводу создание wordpress шаблона (темы), выразите свои проблемы в комментариях ниже!

Copyright © 2024. Портал о компьютерной технике