Как вывести блог на отдельной странице WordPress. 2 способа.

Как вывести блог на отдельной странице WordPress. 2 способа.

Я видел много сайтов на WordPress, у которых на главной странице отображается какая-нибудь статичная страница, а страница блога находится отдельно, например yourwebsite.com/blog .

Как же это реализовать на своём собственной сайте? На самом деле существует два способа — один простой и один не очень, рассмотрим их оба.

Способ 1. Использование index.php в качестве шаблона блога.

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

Кстати, так как в разных темах содержимое файла index.php разное — оно может быть совсем не предназначено для блога, в таких случаях либо меняем сами свой index.php либо воспользуемся вторым способом, который я описал чуть ниже.

Шаг 1. Создание страницы блога.

Ну, что тут сказать, переходим в Страницы > Добавить новую, указываем какой-нибудь заголовок, например Блог и какой-нибудь URL, например blog, после этого сохраняем. Всё, с шагом 1 покончено.

Шаг 2. Настраиваем отображение страниц в настройках.

Переходим в Параметры > Чтение, настраиваем отображение нужной страницы на главной, а для страницы записей устанавливаем созданную в предыдущем шаге.

Шаг 3. Последний шаг. Добавляем страницу в меню.

Уже после завершения второго шага при переходе по адресу блога (у нас это yourwebsite.com/blog ), у вас будет отображаться страница с записями, использующая шаблон файла index.php .

Тем не менее можно также добавить эту страницу в меню сайта (если поддерживается темой разумеется). Для этого переходим в Внешний вид > Меню, слева в колонке выбираем нашу страницу блога и нажимаем кнопку «Добавить в меню»

Способ 2. Использование собственного шаблона блога. Создание нескольких блогов на одном сайте WordPress.

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

Шагов будет чуть побольше и они будут немного позаковырестей, чем в предыдущем методе. Итак, поехали.

Шаг 1. Создание шаблона страницы

Открываем папку с темой и создаем там файл произвольного названия, например blog-template.php . Внутрь файла вставляем:

Шаг 2. Создаем страницу блога

Этот шаг аналогичен первому шагу из начала поста. Итак, переходим в Страницы > Добавить новую, придумываем название и URL странице, и кроме всего прочего в атрибутах страницы указываем только что созданный нами шаблон.

Шаг 3. Плагин постраничной навигации

Однозначно, что нам понадобится постраничная навигация. Скорее всего у вас уже используется какой-то плагин или функция навигации. Если же навигация не будет работать, рекомендую поставить WP_PageNavi — этот плагин работает отлично, я его протестировал, всё ок.

Шаг 4. Шаблон страницы блога

Это голый шаблон блога, без таких важных функций как get_header(), get_footer() и прочего. Просто в данный момент важно понять саму суть.

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

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 47

Здравствуйте Миша. Спасибо за статью, очень интересно. У меня сразу 2 вопроса. 1.Если проделать все выше сказанное вами, то придется менять чпу, скажем было: http://sait.ru/category/какой-то_пост.html на http://sait.ru/blog/category/какой-то_пост.html , ну чтобы логика не потерялась, соответственно придется делать редирект 301 в .htaccess, или все же не нужно менять структуру? Мне кажется что нужно поменять структуру ЧПУ. 2. Не знаете как правильно сделать редирект?

Добрый день! нет, ЧПУ менять не нужно.

Здравствуйте Миша. Огромное спасибо за блог и понятный и простой стиль изложения. Если Вас когда-нибудь посетят сомнения "нужен ли кому-то этот блог? стоит ли продолжать?" - не сомневайтесь - стоит!

У меня такой вопрос: я не работаю с уже кем-то созданной темой, а пытаюсь написать тему сам. При этом есть задача вывести блог (новости) не на главную страницу, а на созданный мною специально для этого шаблон. В этот шаблон подгружается хедер из файла header-page.php (с таким названием я создал файл специально для размещения хедера на внутренних страницах сайта. т.е. это специальный кастомный хедер для внутренних страниц, на главную страницу подгружается хедер из файла со стандартным названием header.php). В этом хедере (header-page.php) подгружается каждый раз название страницы (раздела) сайта с помощью функцией the_title. В данном случае это название - Блог. Когда я прохожу со страницы Блог по ссылке какого-либо поста чтобы почитать его подробней (в развернутом виде) я перехожу на страницу которая использует шаблон single.php. Вопрос как сделать так чтобы в хедере, когда я нахожусь в одном из постов, отображалось не название данного поста, а по прежнему - название страницы сайт - Блог. Для этого мне нужно создать еще один хедер для подгрузки его именно в single.php со статичным названием страницы Блог, прописанным в HTML? я пробовал так, но в таком случае хедер отображается вообще без заголовка. Как правильно называть файлы дополнительных хедеров? может в этом дело? И как потом правильно подгружать такие кастомные хедеры в какие-либо из внутренних страниц сайта?

Заранее благодарю за ответ и помощь!

Относительно названий файлов дополнительных хедеров - всё ок.

Итак, если я правильно понял, у нас две страницы - single.php и шаблон.php, в которых выводятся названия страниц при помощи the_title() из одного файла header-page.php. Нужно сделать, чтобы и там и там отображалось название страницы - Блог. Есть пара вариантов:

1) Написать там без функции статично - Блог, (вы пишете, что заголовок пропадает вообще - хм, скорее всего тут уже просто ошибка была в третьем файле хедера). А что вы имеете ввиду под заголовком - то, что находится в <title> ?

2) Используя функцию get_the_title() вывести название страницы блога. Тут нужно будет знать ID этой страницы, например так:

📎📎📎📎📎📎📎📎📎📎