WordPress с самого начала позволяет задать определенную иерархию записей в вашем блоге с помощью рубрик. Не секрет, что возможности wordpress далеко уходят за пределы возможности создать просто блог. И сейчас мы рассмотрим типовую ситуацию, которую можно назвать «ситуация с новостями».
Итак, вводная. У нас есть сайт какой то коммерческой компании и заказчик хочет, чтобы на его сайте была лента новостей. При этом, лент по сути две — это новости компании и отраслевые новости, которые копируются у какого либо информ-агентства с соблюдением всех копирайтов при перепечатке. На главной мы хотим видеть только отраслевые новости, а где-нибудь там, в глубинах страницы «о компании», только новости компании.
Шаг первый: выведем на главной статьи только нужной рубрики. Для начала создадим эти рубрики (сategories) в разделе записи в админ-панели сайта. Для определенности, для отраслевых новостей оставим рубрику «Новости» с яклыком «news», а для новостей компании создадим новую рубрику — «Новости компании» с ярлыком — «company-news». Якрык — это подходящее в качестве части url название, которое нам пригодится далее.
На странице админ-панели /wp-admin/options-reading.php (настройки чтения) у нас уже изначально указано, что на главной мы хотим видеть наши последние новости. Но вот какие? Раз в админ панели нет нужного ключа — смотрим в шаблоны темы. Нас интересует файл index.php, который отвечает за вывод шаблона главной страницы.
В нем вы наверняка увидите что то вроде такого кода:
1 2 3 4 5 |
... <div><?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <div <?php post_class(); ?> id="post-<?php the_ID(); ?>"> ...</div> |
Это начало цикла вывода записей. Прямо перед ним вставим всего одну инструкцию на php.
1 2 3 |
... query_posts('category_name=news'); ... |
Задав параметр category_name, равный ярлыку отраслевых новостей, мы ограничим вывод только отраслевыми новостями на главной странице.
Второй шаг: выведем на нужной странице другую рубрику. Он более тернистый. Сейчас нам нужно создать отдельный раздел для ленты новостей компании. На самом деле у каждой рубрики wordpress есть свой уникальный адрес, и если вы не меняли настройки на странице /wp-admin/options-permalink.php, то новости компании будет показаны по адресу — /categories/company-news. Но нам нужно включить этот адрес в ветку меню О компании -> Новости компании. Если не вы не используете дополнительные модули, которые позволяют конструировать произвольное меню, то снова придется обратиться к шаблонам используемой темы.
Существует определенный порядок выбора шаблона в wordpress. Для страниц отображение идет по следующему пути:
- custom_template — где custom_template, это имя файла заданное в списке «Шаблон страницы» при редактировании данной страницы. Если там не появляется нужный шаблон, то смотрите статью как добавить шаблон в список шаблонов. Если шаблон не отображается в списке, то смотрите как добавить файл в список шаблонов.
- page-{slug}.php — где slug, это ярлык (часть url), заданная для страницы в редакторе.
- page-{id}.php — если id нашей страницы с новостями компани — 60, то WordPress будет пытаться найти шаблон page-60.php.
- page.php
- index.php
Эту информацию я взял из официального источника и любезно перевел её для вас. :) Нам нужно сделать следующее:
- скопировать index.php, например, с именем page-company-news.php;
- в редакторе для страницы «новости компании» установить имя шаблона (page-company-news.php);
- а в новом шаблоне page-company-news.php поменять category_name=news на category_name=company-news
Мне кажется, что такая инструкция, поможет даже тем, кто с php не дружит.
Огромное спасибо за информацию. Как раз искал вывод записей на странице только из конкретной рубрики. Вот только тут: «Нас интересует файл index.php, который отвечает за вывод шаблона главной страницы.» На сколько показали мои действия, нужен не index.php, a page.php.
Да, действительно, нужен другой шаблон — home.php. Или, если за главную выбрана статическая страница, то нужен шаблон page.php, где проверяется условие is_front_page(). А вот ссылка на официальный источник — иерархия шаблонов в wordpress.
А можно сделать чтобы на странице отображались не только новости но и сам контент страницы, т. е. сделать своего рода гибрид page.php и index.php (home.php)
Конечно можно. Сначала стандартный цикл while (have_posts()) поставить в шаблоне, а за ним запрос и цикл нужной категории.
…в редакторе для страницы «новости компании» установить имя шаблона (page-company-news.php);
Простите, пожалуйста, объясните этот пункт более детальней.
Спасибо.
Спасибо. Все сделал.
Сайт отличный!
Скажите, а три новостных ленты таким образом можно сделать?
Есть, решил. Простите за флуд.
Вот таких людей уважаю — не сидят сложа руки, сами все находят. :)
Добрый день, еще раз.
Сделал на сайте 3 ленты новостей (разные рубрики).
Стоит плагин WP-PageNavi.
Трабл в том, что страницы теперь не листаются.
Помогите, пожалуйста.
Решение, может пригодится.
Для главной ленты:
Добавил $query_string
Код:
Для остальных двух лент:
Тема обсуждения. Вернее я сам с собой :)
http://mywordpress.ru/support/viewtopic.php?id=17078
Спасибо.
А как организовать отображение содержимого рубрик как на вашем сайте? Мне нужно на сайте сделать так, как у вас, например, раздел «Хобби» или «биография». То есть содержимое рубрики — статическая страница, а не список статей этой рубрики.
А это не рубрики записей, это страницы. Из страниц в wordpress можно составить иерархическое меню. Есть «штатный» виджет для показа меню из страниц сайта, но я пользуюсь Flexi Pages плагином, он более удобный.
а вот мне не помогла инструкция. у меня тема не совсем обычная там не index а attachment.php(в нем все прописано)и не сработало в стандартной теме пожалуйста ну я только первую половину попробовала все какие нужно категирии вывела кроме той которую ненадо. а вот в рабочей теме никак.
инструкция хорошая но вот там мне нужно сделать это а мне не помогает а с php я ток на интуитивном уровне