Wordpress как вывести записи на определенной странице. Различные возможности вывода записей на странице WordPress. Выводим произвольное поле в панели администратора

Всем привет дорогие друзья! С вами в открытом режиме говорит и рассказывает и показывает на практике Макс Метелев.

И сегодня на закуску вам с утра порция полезного материала следующего содержания – мы с вами научимся выводить список страниц wordpress с картинками. Урок очень простой и интересный. Поехали.

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

Помимо основного способа вывода страниц wordpress с превьюшками мы покажем как вывести дочерние страницы и родительские.

Будет выглядеть это примерно так:

Первое, что вам нужно сделать это установить и активировать плагин Page-list. Он работает прямо «из коробки», потому в настройки в мы лезть не будем, так как их там нет.

Данный плагин поставляется со списком шорткодов с обширным списком параметров. Начнем с того, что сделаем простой вывод всех страниц сайта, т.е сделаем обычную карту

Создайте новую страницу в WordPress и добавьте в нее следующий шорткод [ pagelist ]

Этот шорткод покажет простой вложенный всех ваших страниц.

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

add_filter("widget_text","do_shortcode");

add_filter ("widget_text" , "do_shortcode" ) ;

Отображение дочерних страниц для родительской в WordPress

Все что вам нужно это добавить нужный шорткод [ subpages ] на страницу родителя.

Также вы можете использовать короткие коды для вставки в текстовые виджеты.

Добавление родственных страниц на Вордпресс

Родственные страницы это, по сути, дочерние, которые имеют одного общего родителя. Вывод таких страниц wordpress осуществляется с помощью следующей конструкции [ siblings ]

Вывод страниц с превьюшками и отрывком текста

Плагин Page-list идет в комплекте со следующим кодом [ page_ext ] . Этот код для вставки дает расширенные возможности для отображения списков страниц в WordPress.

Вы можете использовать его, чтобы отобразить структуру страниц с характерным изображением статьи и небольшим отрывком текста из нее. Как здесь:

[ pagelist_ext show_image = "1" image_width = "50" ]

Вы можете самостоятельно задавать размер изображения, используя параметр image_width

Также вы можете контролировать длину отрывка текста используя параметр limit_content

Например можете задать 100 знаков, пример [ pagelist_ext limit_content = "100" ]

Если вы не хотите отображать текст возле миниатюры к статье, тогда используйте следующий короткий код для страницы [ pagelist_ext show_content = "0" ]

Спасибо за внимание и удачного изучения!

Я видел много сайтов на 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() и прочего. Просто в данный момент важно понять саму суть.

/* * Template name: Блог */ $current_page = (get_query_var("paged" ) ) ? get_query_var("paged" ) : 1 ; // определяем текущую страницу блога $args = array ( "posts_per_page" => get_option("posts_per_page" ) , // значение по умолчанию берётся из настроек, но вы можете использовать и собственное "paged" => $current_page // текущая страница ) ; query_posts( $args ) ; $wp_query ->is_archive = true ; $wp_query ->is_home = false ; while (have_posts() ) : the_post() ; ?>

/* содержимое поста */ ?>

// функция постраничной навигации

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

Статья для новичков и тех, кто уже немного знаком с WordPress, которая должна развенчать все мифы использования разных вариантов циклов в WordPress.

О Цикле WordPress и с чем его едят я уже писал и вскользь упоминал о разных вариантах циклов в описаниях функций . В этой статье я сделаю следующий шаг и расскажу о 3-х вариантах построения циклов для вывода записей и о плюсах и минусах каждого из них.

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

Разработчики WordPress предоставляют следующие варианты построения циклов вывода записей:

  1. Стандартный цикл и цикл на основе query_posts() ;
  2. WP_Query() ;
  3. Дополнительный цикл на основе get_posts() .

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

Для лучшего понимания и визуального восприятия работы функций запроса, изучите эту схему:

1) Стандартный Цикл и цикл на основе query_posts()

Я объединил 2 вида циклов (с query_posts() и начинающийся с if(have_posts()), потому что технически они абсолютно одинаковые.

Давайте вспомним, как выглядит стандартный Цикл WordPress :

id="post-">

">

Записей нет.";

Такой код мы можем встретить в файлах index.php, category.php и т.д. Эти файлы отвечают за вывод на странице списка записей. Этот цикл перебирает по очереди посты, которые выводятся на странице и во время перебора, используя Теги Шаблона (предназначенные для использования внутри Цикла), мы можем вывести различные данные поста (заголовок, текст, метаданные и т.д.).

Обратите внимание: в стандартном Цикле мы не указываем никаких данных для выборки записей, а сразу начинаем цикл с if(have_posts()){ while(have_posts()){… Это говорит о том, что данные уже существуют и их нужно просто обработать и вывести на экран.

«Уже существующие» данные сохраняются в глобальную переменную $wp_query и для каждого типа страниц WordPress определяются автоматически, т.е. WordPress заранее делает запрос к БД, на основе того какой тип страницы сейчас отображается (категория, метка, статья, постоянная страница и т.д.) и результат запроса записывается в $wp_query , а затем от туда выводится в цикле. Интересно, что такой запрос делается функцией query_posts(), которую мы разберем ниже.

Обычный Цикл WordPress используется для базовых страниц WP (категории, метки, архивы по дате).

Цикл на основе query_posts()

query_posts() позволяет изменить базовый запрос и вывести нужный нам вариант записей.

Вариант 1

Мы можем изменить базовый запрос (сделать еще один запрос и перезаписать данные предыдущего запроса) и, например, вырезать ненужные категории из вывода или изменить количество выводимых записей, порядок сортировки и т.д.

В этом примере мы создали новый запрос к БД, в котором использовали параметры базового запроса + свои параметры: исключили категории 6 и 9 (cat=-6,-9), а также отсортировали записи по порядку (order=ASC) и вывели 20 записей на странице вместо, установленных в настройках 10 (posts_per_page=20). Полный список параметров, которыми можно сформировать нужный нам вывод, смотрите в описании функции query_posts() .

Преимущества такого изменения в том, что если мы, например, изменим количество выводимых записей на странице с 10 (по умолчанию) на 20, то пагинация на странице автоматически подстроится под это изменение, потому что query_post() меняет данные глобальной переменной $wp_query, а пагинация строится именно на основе этих данных. Это лишь один из примеров, показывающий что query_posts() и поведение других функций на странице взаимосвязаны.

Вариант 2

Можно не использовать параметры базового запроса ($query_string), а полностью переписать базовый запрос:

Query_posts("cat=-6,-9&order=ASC");

Однако, такой подход по сути сотрет базовый запрос и создаст новый, который может быть составлен неправильно, поэтому полностью переписывать базовый запрос нужно аккуратно, со знанием дела.

Необходимость wp_reset_query()

Сбрасывать измененный запрос при использовании query_posts() нужно, потому что query_posts() переписывает глобальную переменную $wp_query которая отвечает за некоторые свойства страницы. Давайте посмотрим на примере.

Предположим нам на странице категории 6 (ID категории), нужно вывести данные только поста 9 (ID поста):

В этом примере мы не сбросили запрос и функция query_posts() переписала глобальную переменную $wp_query . Теперь, кода мы проверим какая это страница (а это страница категории: is_category() == true), мы увидим, что это уже совсем не страница категории, а страница поста: is_single() == true . Т.е. следующий код вернет нам «Это страница поста», хотя на самом деле это страница категории:

If(is_category()) echo "Это страница категории"; // не сработает if(is_single()) echo "Это страница поста"; // сработает

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

Когда использовать query_posts()?

Когда нужно немного изменить основной (базовый) запрос WordPress. В идеале: для исключения рубрики/метки (например, на главной странице); изменение направления сортировки; ограничения количества выводимых постов; исключения определенных постов из категории/метки и т.п.

Не нужно использовать query_posts() для создания нескольких циклов на одной странице, для вывода в сайдбар списка постов, для создания дополнительного вывода записей и т.п., для этих целей используйте циклы на основе get_posts(). К тому же, обе функции понимают параметры одинаково! Так зачем "платить" больше?..

2) Цикл на основе WP_Query()

Для вывода записей никак не связанных со страницей или создания множественных (дополнительных) циклов можно использовать циклы на основе класса WP_Query . Выглядят они аналогично циклам с использование query_posts() . Для WP_Query используются те же самые параметры, что и для query_posts().

Интересно, что WP_Query является ядром функций query_posts() и get_posts() , т.е. обе эти функции работают на основе этого класса.

Пример цикла: выведем все записи из категории 9:

have_posts()){ while($query->have_posts()){ $query->the_post(); ?>

">

Пример создания множественных циклов на основе WP_Query() :

have_posts()){ $query1->the_post(); // вывод записей } wp_reset_postdata(); // Цикл 2 $query2 = new WP_Query("cat=-2&nopaging=1"); // все посты, кроме категории 2 while($query2->have_posts()){ $query2->the_post(); // вывод записей } wp_reset_postdata(); // Цикл 3 $query3 = new WP_Query("cat=-3&nopaging=1"); // все посты, кроме категории 3 while($query3->have_posts()){ $query3->the_post(); // вывод записей } wp_reset_postdata(); ?>

Особенность циклов на WP_Query() в том, что мы создаем новый объект $query , который никак не связан с аналогичным глобальным объектом $wp_query и поэтому мы никак не нарушаем структуру текущей страницы.

Также, мы можем использовать новый объект в других целях, не только для вывода записей, но и для различного рода проверок: например, записи какого типа страницы используются в этом новом объекте; можем узнать общее количество записей удовлетворяющих запросу ($query->found_posts) и т.д. Такие данные могут пригодится при создании дополнительных запросов с пагинацией или где-то еще (пример в комментариях).

Зачем нужно использовать wp_reset_postdata() ?

В глобальной переменной $post хранятся данные текущего поста (если показывается страница поста, то данные этого поста). Когда срабатывает часть кода $query->the_post() , то в переменную $post записываются данные текущего поста в цикле и в конце цикла в этой переменной остаются данные последнего поста из этого цикла, а нужно чтобы $post всегда содержала данные текущего поста страницы. Т.е. получается до использования цикла $post->ID (ID текущего поста) было равно, допустим, 10, а после срабатывания цикла, та же самая переменная $post->ID уже равна, допустим, 56 (ID последнего поста из цикле), а нужно чтобы она по-прежнему равнялась 10.

#1. Пример цикла на основе get_posts() . Выведем 5 записей из рубрики 9:

9)); foreach($myposts as $post){ setup_postdata($post); // стандартный вывод записей } wp_reset_postdata(); // сбрасываем переменную $post ?>

Код выведет именно 5 записей, хотя в аргументах мы указали только номер рубрики. Вызвано это тем, что у функции get_posts() есть параметры по умолчанию (см. описание), о которых нужно помнить. Например, если нам нужно вывести все записи из рубрики 9, то мы должны добавить еще параметр "nopaging" => 1 или "posts_per_page" => -1 (разницы нет).

Когда использовать get_posts()

Всегда, когда нужно просто вывести записи из БД в любом месте шаблона. Когда нужно создать несколько циклов. Так как get_posts() принимает те же параметры что и query_posts(), её очень удобно использовать для вывода записей по самым разным критериям.

Выводы

Где и какой из 3-х вариантов циклов использовать:

    query_posts() - если нужно изменить/подправить стандартный вывод записей на страницах WordPress. Можно использовать 1 раз на странице;

    get_posts() - если нужно вывести записи из Базы Данных. Можно использовать сколько угодно раз на странице;

  • WP_Query() - во всех других случаях когда не подошли query_posts() и get_posts(). Класс WP_Query() является ядром query_posts() и get_posts() и может быть использован для каких-либо сложных случаев вывода.

Помните, что параметры для всех вариантов одинаковые и

Используя WordPress , как обычный блоговый движок с готовой темой, подобный вопрос у нас бы не возник. Мы просто не вмешиваемся в алгоритмы работы CMS , записи сами как-то выводятся. В каком случае вывод записей WordPress нас начинает интересовать?

Тогда, когда мы собираемся из статичной HTML верстки сделать уникальную WordPress тему. А точнее, мы хотим предложить свои услуги по натяжки верстки на WordPress . Так вот, без умения выводить записи WordPress в любом месте сайта - вам будет никак не обойтись.

Структура темы под WordPress

Что представляет из себя тема WordPress ? Это набор файлов (шаблоны), состоящих из HTML кода вперемешку с PHP кодом. В любой теме, как минимум должны быть два файла: index.php и CSS файл стилей. HTML код - это и есть верстка уникального дизайна, а PHP код состоит из функций и тегов, уже описанных в ядре WordPress , файлы ядра мы никогда не трогаем.

Запомните, что весь HTML код должен находится за пределами открывающих и закрывающих тегов PHP . Напротив, весь PHP код пишется только внутри тегов. Например выведем имя автора записи в цикле WordPress:

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

Теги шаблонов вывода записей WordPress

the_permalink
the_title
the_time
the_content
the_author
the_excerpt
the_category

С помощью этих тегов шаблонов выводятся статьи на главной странице WordPress в шаблоне index.php .

">

Выводим дату создания записи:

Давайте выведем саму статью - контент, внутри тега div:



Внимание! Ничего не вывелось. Почему? Поскольку эти теги шаблонов выводят только внутри цикла, вне цикла они не работают. Мы должны весь этот код, поместить внутри цикла. Весь PHP и HTML код внутри цикла повторится столько раз, сколько будет у нас записей. Смотрите код ниже.



Сюда помещаем, весь код выше. Мы находимся внутри цикла.



Давайте разберем, что означает код выше. Мы задаём условие, если в базе данных имеются записи, то будет выводится заголовок, дата создания и контент записи.

Если посты есть, то в цикле while выполняется функция the_post , которая занимается выводом всех записей , до тех пор, пока они есть.

Закончили цикл и условие.


Цикл будет работать до тех пор, пока имеются записи, количество вывода записей на страницу задаётся в настройках блога. Если записей больше, то на страничке появятся элементы пагинации. Таким образом на блоге будут выведены все записи, и WordPress автоматически создаст страниц столько, сколько надо.

Мы познакомились лишь с некоторыми функциями для построения темы для WordPress - это функции вывода записей . Однако здесь важно понять принцип, а не пытаться запомнить или заучить.

Практика

Рассмотрим вывод записей на примере темы Twenty Seventeen . Записи выводятся через тег шаблона get_template_part в цикле шаблона index.php , который передаёт в параметрах содержимое шаблона content.php .

if (have_posts()) :
/* Start the Loop */
while (have_posts()) :
the_post();
get_template_part("template-parts/post/content", get_post_format());
endwhile;
endif; ?>

В шаблоне content.php выводится заголовок поста с ссылкой на сам пост и контент.

Хотите вывести последние записи в WordPress? Вывод свежих записей помогает пользователям легко найти новинки вашего блога. Вы можете вывести последние посты в боковой панели (сайдбаре), внутри контента с помощью шорткода, в конце записи, и в области футера или там, где вам душе угодно. В этой статье мы вам покажем, как вывести последние посты в WordPress с помощью плагинов, виджетов, шорткодов и ручным способом с помощью функции вывода последних записей.

Использование виджета свежих записей

WordPress имеет свой виджет вывода свежих записей, который можно вставить в боковую панель (сайдбар) вашего сайта, или любую другую готовую область для виджетов. Просто перейдите в: Внешний вид » Виджеты и перетащите виджет в область для виджетов вашего сайта.

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

Использование плагина Recent Posts Widget Extended

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

Что делать, если вы хотите отобразить последние записи с миниатюрами и небольшими анонсами записей? Что делать если вы хотите вывести свежие записи из определенной рубрики или метки?

В таком случае вам пригодится плагин Recent Posts Widget Extended.

Recent Posts Widget Extended . После активации просто перейдите в: Внешний вид » Виджеты и перетащите виджет Recent Post Extended в сайдбар.

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

Увеличить шрифт можно убрав галочку с «использовать стили по умолчанию» и задав собственные значения.

Выводим последние записи с помощью шорткода

Вывести последние записи в сайдбар довольно легко, но что если необходимо вывести последние посты внутри какой-либо записи или страницы WordPress? Самый очевидный и простой способ отобразить свежие записи внутри поста или страницы — это с помощью специального шорткода.

Первое, что вам нужно сделать — это установить и активировать плагин Display Posts Shortcode . После активации, плагин сразу заработает, никаких настроек не имеется.

Откройте необходимую страницу или пост в редакторе WordPress, и в нужное место вставьте шорткод . В шорткоде можно использовать целый ряд параметров. Ниже приведены некоторые примеры:

Вывод 5 последних записей с миниатюрами и анонсами:

Вывод последних страниц, вместо постов:

Сортировка по названию, вместо даты:

Вывод последних страниц из конкретной родительской страницы:

С полным списком параметров вы можете ознакомиться на странице документации плагина.

Также эти шорткоды можно использовать внутри текстового виджета, но прежде, вам нужно будет включить поддержку шорткодов в текстовом виджете. Для этого добавьте ниже приведенный код в function.php вашей темы:

Add_filter (‘widget_text’ , ‘do_shortcode’);

Вывод свежих записей вручную

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

Просто добавьте нижеприведенный код в то место, где вы хотите отобразить свежие записи.


    // Define our WP Query Parameters

    // Start our WP Query
    have_posts()) : $the_query -> the_post(); ?>

    // Display the Post Title with Hyperlink

  • »>
  • // Display the Post Excerpt

  • // Repeat the process and reset once it hits the limit
    endwhile;
    wp_reset_postdata();
    ?>

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

Надеемся, что статья помогла вам узнать как вывести последние записи в WordPress.

mob_info