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'); } ?> … |
Пока что на этом все, другие «истории» из кодекс рассмотрю в следующих статьях.
комментариев 35 к статье “WordPress цикл (loop) – выводим сообщения блога”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Записи и посты wordpress, оформление записи (5,91 из 7, голосов - 47)
- Проблема с адаптивными изображениями в Gutenberg редакторе WordPress (3,87 из 7, голосов - 45)
- Умный копирайт в footer.php для wordpress (5,63 из 7, голосов - 30)
- Обновление плагинов и тем в WordPress: автоматическое, через FTP, скрытие уведомлений (5,19 из 7, голосов - 31)
- Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress (4,42 из 7, голосов - 31)
- Плагин TinyMCE Advanced – wordpress текстовый редактор (6,35 из 7, голосов - 20)
- Рубрики и категории wordpress, функция wp_list_categories (6,05 из 7, голосов - 20)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
Дарья, судя по шаблону тег more работает для записей (постов), а не страниц в вашем блоге. Я бы создал рубрику «статьи» как это есть с новостями и добавлял бы заметки туда. Вполне вероятно, что more сразу заработает. По теме, кстати, еще была одна статья — ссылка читать далее в wordpress – тег more.
Есть цикл: while (have_posts()) : the_post();
Но сообщения в моей теме выводятся последовательно, то есть один пост по ширине всей страницы. Иными словами, вот пример:
Пост 1
Пост 2
Пост 3
Пост 4
Пост 5
Пост 6
А я хочу выводить их так, чтобы на одной ширине страницы располагалось сразу три поста, то есть:
Пост 1 Пост 2 Пост 3
Пост 4 Пост 5 Пост 6
И так далее, в таком порядке. Как это сделать?
Hert, это все делается в стилях CSS — посты выводятся в блок DIV для которого задается класс со свойством float: left — и тогда все тексты буду отображаться друг за другом, а когда ширина строки закончится пойдут внизу так как вам и нужно. Только кроме выравнивания нужно будет задать для блока ширину width. В общем, можно почитать по это в каком-то из учебников по CSS или скачать готовую тему с подобным расположением и взять стили оттуда.
Есть проблема: самостоятельно пытаюсь сделать сайт в wordpress. Шаблон сделала в Artisteеr 3.1, экспортировала в wordpress. Не смотря на то, что еще в Artisteеr убрала все боковые колонки, при переносе на wordpress проявились и не убираются Архив и bookmarks. Помогите их убрать.
Сразу скажу, я в программировании ОООООООООООООО полный, язык программирования не понимаю, читала ваши статьи ничего не поняла, очень умный язык, не для меня. Обычным языком типа, что куда нажать, удалить если можно подскажите как это сделать. Как виджет, некоторые советуют, не перетаскивается вниз. А вот виджет «Текст», перенесенный в сайтбар вообще не отразился Мучаюсь уже не одну неделю, поэтому осмелилась вам написать. Ответьте на почту пожалуйста. С уважением Галина.
Галина, советую сменит шаблон — это самый простой выход. Я сталкивался с темами сделанными в Artisteеr и это ужас, где что-то понять достаточно сложно. Поищите обычный шаблон, который бы максимально подходил вашему сайту (если это возможно).