WordPress цикл (loop) – выводим сообщения блога
Возникла задача для одного из блогов запретить вывод на главную страницу постов из определенной категории. Самое время залезть и немного покопаться в кодексе дабы правильно изменить наш шаблон. Использовать при этом какие-то плагины wordpress, думаю, смысла нет, ведь все решается гораздо проще. Но для начала немного теории.
Итак, wordpress цикл (или loop) используется для отображения каждого из постов вашего блога. С помощью цикла система вордпресс обрабатывает каждый пост и отображает его на текущей страницы, исходя из тех или иных заданных критериев. Любой код HTML или PHP, который указан в цикле, будет применен для всех отображаемых постов. При этом для соответствующих функций в кодексе четко указывается, что мол она может быть использована только в цикле wordpress. Так, например, с помощью цикла на главной странице блога для каждой записи задается оформление (обработка) ее заголовка, категорий и т.п. Таким образом, вы указываете форматирование единожды, а оно применяется ко всем статьям.
Если вы откроете главный файл шаблона index.php, то сможете найти в коде строки, отвечающие за цикл wordpress. Начинается он здесь:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
А заканчивается чаще всего таким кодом:
<?php endwhile; else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?>
В принципе, ничего сложного быть не должно. Дабы закрепить материал предлагаю взглянуть на парочку примеров.
Допустим, что у нас есть задача сделать отдельное оформление для категории постов под номером 3 (цифру ищите в админке блога разделе категорий при наведении на ее заголовок). Для вывода используем все тот же цикл Loop, а для проверки принадлежности к той или иной категории функцию in_category(). Итого получаем:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php if ( in_category('3') ) { ?> <div class="post-cat-three"> <?php } else { ?> <div class="post"> <?php } ?> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> … <?php endwhile; else: ?> <p>Sorry, no posts matched your criteria.</p> <?php endif; ?>
Здесь в центре кода есть условие – если пост принадлежит категории под номером 3, то для его оформления применится стиль post-cat-three, в противном случае обычный. Учитывая тот вариант, что код проверки находится в цикле wordpress, мы производим автоматически проверку для всех постов блога.
Исключаем посты из цикла для определенной категории
Собственно теперь рассмотрим пример, с которого все и началось. С помощью функции query_posts мы можем изменить параметры цикла wordpress для вывода постов блога на главной странице. Например, мы хотим исключить из вывода категории 3 и 8, тогда используем код:
<?php query_posts($query_string . '&cat=-3,-8'); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class="post"> <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <div class="entry"><?php the_content(); ?></div> <p class="postmetadata">Posted in <?php the_category(', '); ?></p> </div> <?php endwhile; else: ?> <p>Sorry, no posts matched your criteria.</p> <?php endif; ?>
Внимание! При этом вы должны убедиться, что используете отдельный файл шаблона для вывода архивов категорий и др., то есть поищите у себя archive.php. В противном случае исключение категорий 3 и 8 будет применено и к архивам, чего мы делать не планировали.
В кодексе для этого есть небольшое решение с помощью функции is_home():
… <?php if ( is_home() ) { query_posts($query_string . '&cat=3,-8'); } ?> …
Пока что на этом все, другие «истории» из кодекс рассмотрю в следующих статьях.
P.S. Постовой. Вы всегда можете бесплатные объявления на нашей Доске DoRus.ru.
Все про отдыху в Крыму – статьи, блоги, фотогалерея, форум, каталог жилья на zagar.net.ua.
Комментариев - 11 к статье “WordPress цикл (loop) – выводим сообщения блога”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Плагин Lightbox Plus – улучшенный эффект для изображений
- Скрываем custom fields для не админов, функция remove_meta_box()
- Видеокурс WordPress Security по защите блога на WordPress
- Плагины смайликов в wordpress блоге
- Обновление WordPress подробно для начинающих
- Лишние ссылки с WordPress прочь
- Вставка PHP кода в WordPress через виджеты
- Безопасность (3)
- Видео (5)
- Возможности (53)
- Начинающим (16)
- Новости (19)
- Оптимизация (12)
- Плагины (61)
- Сервисы (10)
- Хаки и секреты (39)
- Шаблоны (13)
- Записи и посты wordpress, оформление записи






(6,15 из 7, голосов - 20) - 17 полезных приемов и хаков для WordPress






(5,44 из 7, голосов - 9) - Что нового в WordPress 3.1






(5,38 из 7, голосов - 8) - Как добавить дополнительные кнопки в редактор WordPress






(5,25 из 7, голосов - 8) - Ссылка читать далее в wordpress – тег more






(5,00 из 7, голосов - 8) - Интернет магазин на wordpress – плагин UWCart






(4,63 из 7, голосов - 8) - Вывод категорий для поста через функцию get_the_category






(4,50 из 7, голосов - 8)
- Seleckis.lv — Журнал Никиты Селецкого
- Блогинг в стиле web 2.0
- Достопримечательности Львова
- Про блоги для блоггеров
- WordpressPlugins.ru
- Более шестидесяти новых приложений для Timeline в Facebook
- Пользователям ICQ: в любимой программе теперь есть радио!
- Новостной украинский агрегатор Like.ua – что это?
- Foursquare представил миру возможность персонализированного поиска
- Google выставлено публичное обвинение в пиратстве
- Для Windows Phone 7 выпущен новый WebMoney Keeper Mobile
- Ноутбуки с 3D-чипами станут более производительными

Оцените статью:
Категории:
Теги:
Александр, спасибо. Интересует следующий вопрос. Можно ли что-то подобное организовать для каждой страницы тега в wordpress. Т.е. чтобы вверху перед записями по тегу выводилось «приветствие», конечно, оптимизированное под поисковые ключи. Не подскажите?
Полезный пост, но, как ни крути, мне по душе пришелся плагин «simply-exclude» :)
Интересный момент, спасибо. Мне, кстати, тоже нравится плагин «simply-exclude», с ним все проще!
Евгений, конечно можно. Даже придумал способ, создаёте отдельную стр. ну как page.php и после для опред категори выбираете тот шаблон, в котором уже дописано что вам необходимо.
2 способ(нужно знать php получше) можно через функцию вызова, но тоже он смотрит какая категория и к ним загружает то что нужно. (либо из другого файла) p.s. это мой стиль написания ИМХО!
а вообще спс за статью, мб пригодиться.
ведь как я понимаю в 2 строке после цикла, in_category(’3′) , метсо неё ( не помню метку) можем написать пост (3) либо другой и для него будет свой стиль. Так хорошо оформлять первую запись в блоге. Хотя помню был другой споосбо.
И мой вопрос, как сделать цикл, пример- выводиться 10 записей. нужно ввести 2 класса, 1 к честным нововстям(т.е. 2,4,6,8,10) и к нечетным. как с помощью лупа так сделать? подскажите пожалуйста.
Большое спасибо.
Здравствуйте! А подскажите, пожалуйста, как сделать следующую простую вещь: при использовании «хлебных крошек» все отлично работает на страницах статей, статичных страницах, странице поиска и архивов, НО не работает, при переходе по страницам навигации, т.е. так называемых страница page 1, page 2 и т.д. Эти страницы на Вашем блоге отображаются на главной странице в виде квадратиков. Нажимаем на 2, и видим в строке браузера «http://www.q2w3.ru/page/2/» – т.е. мы находимся на 2-й странице. Так вот именно на этих страницах мне не удается добиться корректной работы «хлебных крошек».
Я решил пойти таким путем: встроить в шаблон темы там, где осуществляется вывод страниц начиная со 2-й следующий код:
Главная > Страница , но в силу плохого знания php-функций, не понимаю, что надо прописать в области кода вывода номера текущей страницы.
Подскажите, что туда надо «приляпать»?
Валерий, нужно поискать функцию, которая считывает номер страницы:) Что-то вроде «wordpress get page number» – возможно таковая имеется. Хотя смысла ставить хлебные крошки на страницы архива я не вижу, это в отдельном поста или разделе сайта полезно, а так может и не нужно никому.
Подскажите, а как сделать что бы на главной была просто статья и выводилась последняя новость?
максим, во-первых, можно на главной выводить определенную страницу блога – задается в пункте настроек «Чтение». Но если нужна не страница, а последняя статья, то просто выбираете отображение 1 поста на странице и в тексте не используете «читать далее» – должна выводится полная статья. Еще лучше ставим плагин Different Posts Per Page и настраиваем чтобы на главной была одна запись, на других страницах – сколько нужно.
Ой вывел все криво …
Добрый день! Хочу попросить помоши в коде.
Дело происходит в loop-single.php
1.$my_cat_id // Записываю номер категории в переменную
2.$my_query = new WP_Query( ‘cat=$my_cat_id&showposts=1′); // Пытаюсь вставить номер текущей категории в запрос. Вот тут то вся и проблема , что он так не дает сделать …
3.while ($my_query->have_posts()) : $my_query->the_post(); //Читаю запись
4.Вывожу контент
5.Закрываю цикл
Далее идет еще один loop цикл.
Хотелось бы узнать как передать номер категории в строковый параметр запроса. Спасибо за ответ заранее.
Станислав, с loop помню не все так просто, какая стоит задача вообще? что вы хотите (или что нужно) этим кодом сделать в шаблоне?
Хотел задать условие для loop на вывод контента через $my_query = new WP_Query( ‘cat=$my_cat_id&showposts=1′); . И вставить в условие, выбор категории по значению переменной $my_cat_id. Но у меня этот запрос не работал из-за синтаксических проблем. Но теперь я разобрался, данная выше строка должна выглядить так $my_query = new WP_Query( ‘cat=’ . $my_cat_id . ‘&showposts=1′);
Спасибо за попытку помочь.