WordPress вывести посты php

Вывод постов на странице, постраничная навигация

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

Вывести посты на странице в WordPress — это значит создать шаблон страницы (page template) и забацать туда цикл, query_posts.

Для чего нужно такое вытворять? Рассмотрим несколько вариантов:

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

query_posts('post_type=artwork');

Вообще можно скомбинировать любые условия, используя эту статью. Параметры, которые описаны для WP_Query также подойдут и для query_posts.

Теперь я думаю порядок действий вам понятен? Создаете шаблон страницы, пихаете наверх query_posts, потом цикл, потом постраничную навигацию…

Кстати о ней. Просто так она не будет работать. Как это исправить?

Пожалуй стоит описать порядок действий более подробно.

  1. Создать шаблон страницы.
  2. Определить номер текущей страницы.
  3. Использовать query_posts с необходимым набором аргументов, при этом не забыв включить в него номер текущей страницы.
  4. Добавить цикл.
  5. Добавить функцию постраничной навигации, например wp_pagenavi().

А теперь полностью готовый код:

 /* * Template name: Моя галерея */ $current_page = (get_query_var('paged')) ? get_query_var('paged') : 1; $params = array( 'posts_per_page' => 7, // количество постов на странице 'post_type' => 'artwork', // тип постов 'paged' => $current_page // текущая страница ); query_posts($params); $wp_query->is_archive = true; $wp_query->is_home = false; while(have_posts()): the_post(); /* в тело цикла вставьте HTML одного анонса записи, например:  

*/ endwhile; wp_pagenavi(); // функция постраничной навигации

Это конечно же обобщенный пример, поэтому не забудьте про get_header() и get_footer(), если они у вас используются.

Плагин постраничной навигации WP-PageNavi

В предыдущем примере я использовал функцию wp_pagenavi() . Она отвечает за постраничную навигацию и является составляющей частью плагина WP-PageNavi (русское название: Список страниц).

Если вы используете данный код как есть и при этом у вас не установлен WP-PageNavi, то вероятнее всего вы получите ошибку.

Плагин очень легко устанавливается через админку сайта и так же легко настраивается — так что для этих целей рекомендую использовать именно его.

Постраничная навигация на сайте.

Миша

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

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

Источник

get_posts() │ WP 1.2.0

Эта функция — аналог query_posts(). Отличается тем, что она не вмешивается в глобальный запрос WP, а создает отдельный экземпляр класса WP_Query. Подробнее читайте здесь.

Возвращает

  • Пустой массив, если не удалось получить записи.
  • Массив WP_Post объектов (записей). Каждый объект в массиве выглядит так:
array( [0]=> object(WP_Post)#4692 (24) < ["ID"] =>int(822) ["post_author"] => string(1) "1" ["post_date"] => string(19) "2016-07-07 10:28:57" ["post_date_gmt"] => string(19) "2016-07-07 07:28:57" ["post_content"] => string(6225) "Контент статьи" ["post_title"] => string(37) "Мертвое море (14 фото)" ["post_excerpt"] => string(15) "Цитата о статье" ["post_status"] => string(7) "publish" ["comment_status"] => string(4) "open" ["ping_status"] => string(4) "open" ["post_password"] => string(0) "" ["post_name"] => string(95) "mertvoe-more-14-foto" ["to_ping"] => string(0) "" ["pinged"] => string(0) "" ["post_modified"] => string(19) "2016-07-07 10:28:57" ["post_modified_gmt"] => string(19) "2016-07-07 07:28:57" ["post_content_filtered"] => string(0) "" ["post_parent"] => int(0) ["guid"] => string(0) "" ["menu_order"] => int(0) ["post_type"] => string(4) "post" ["post_mime_type"] => string(0) "" ["comment_count"] => string(1) "0" ["filter"] => string(3) "raw" > [1] => object(WP_Post) < . >[2] => object(WP_Post) < . >)

Шаблон использования

// параметры по умолчанию $my_posts = get_posts( array( 'numberposts' => 5, 'category' => 0, 'orderby' => 'date', 'order' => 'DESC', 'include' => array(), 'exclude' => array(), 'meta_key' => '', 'meta_value' =>'', 'post_type' => 'post', 'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса ) ); global $post; foreach( $my_posts as $post ) < setup_postdata( $post ); // формат вывода the_title() . >wp_reset_postdata(); // сброс

Использование

$args(строка/массив) Список аргументов, в соответствии с которыми будет получен результат.
По умолчанию: предустановленные

Аргументы параметра $args

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

  • numberposts (число)
  • posts_per_page (число)
  • offset (число)
  • category (число/строка/массив)
  • category_name (строка)
  • tag (строка)
  • include (строка/число/массив)
  • exclude (строка/число)
  • meta_key и meta_value (строка)
  • meta_query (массив)
  • date_query (массив)
  • post_type (строка/массив)
  • post_mime_type (строка/массив)
  • post_status (строка)
  • post_parent (число)
  • nopaging (логический)
  • orderby (строка)
  • order (строка)
  • suppress_filters (true/false)

Количество выводимых постов. Установить на 0 , чтобы ограничить вывод максимальным числом постов на страницу (устанавливается в настройках ВП) или поставить -1 чтобы убрать ограничения вывода (LIMIT).

posts_per_page имеет больший приоритет чем numberposts .

offset(число) Отступ от первого поста (записи). category(число/строка/массив)

Укажите ID категории из которой нужно получить посты. Можно указать ID со знаком минус -3 , тогда эта категория будет исключена (будут получены все записи, кроме записей из категории 3). Можно указать несколько ID через запятую в виде строки 3,5,12 или -3,-5,12 ).

В значении нужно передавать ID, а не название категории.

Смотрите также описание параметра cat у WP_Query .

category_name(строка) Показывать посты только из этой категории (указывается название или альтернативное имя(slug) категории).
По умолчанию: » tag(строка) Получить записи имеющие указанные в этом параметре метки. Нужно указывать альтернативное имя (slug) метки. Если указать несколько имен (меток) через запятую, то будут получены записи соответствующие любой метке, а если разделить пробелами, то будут получены записи имеющие все указанные метки.
По умолчанию: » include(строка/число/массив)

ID постов, которые нужно получить. Если указывается строка, то ID нужно разделять запятыми или пробелами. Пример, получит 6 постов: ‘45,63,78,94,128,140’.

Важно: Указав этот параметр, бессмысленно указывать параметры posts_per_page , offset , category , exclude , meta_key , meta_value и post_parent .
По умолчанию: »

exclude(строка/число) ID постов которые нужно исключить из выборки, указывать через запятую или пробел.
По умолчанию: » meta_key и meta_value(строка)

Получить посты имеющие указанное произвольное поле (meta_key) со значением (meta_value).

Можно указать meta_key и meta_value , тогда будут получены посты, у которых есть указанное метаполе и значение которого равно указанному значение.

Или можно указать только meta_key , тогда будут получены все записи у которых это метаполе есть и не важно какое там значение.

meta_query(массив) Выборка записей по произвольным полям. Подробнее см. в описании WP_Query (meta_query).
По умолчанию: [] date_query(массив) Выборка записей по датам. Подробнее см. в описании WP_Query (date_query).
По умолчанию: [] post_type(строка/массив)

Какого типа посты нужно получать, может быть:

  • any — все типы, кроме revision и типов у которых указан параметр exclude_from_search=true .
  • attachment — прикрепленные записи.

по умолчанию WP_Query ставит статус ‘post_status’=>’publish’ , а вложения имеют статус ‘post_status’=>’inherit’ , поэтому чтобы вывести вложения нужно еще изменить параметр post_status на ‘inherit’ или ‘any’.

Какого типа вложения нужно получить. Можно использовать, когда параметр post_type = attachment .

  • image/jpeg
  • image/png
  • image/gif
  • image — для любых картинок
  • audio/mpeg
  • application/pdf
  • application/zip

Вместо одно миме типа можно указать несколько в массиве. Полный список миме типов смотрите здесь.

Статус записи. Можно передать несколько статусов через запятую. Может принимать:

  • publish — опубликовано
  • private — личная запись
  • draft — черновик
  • future — запланировано
  • pending — на модерации
  • inherit — вложение, любое вложение получает этот статус. Ставиться автоматически, при $post_type=’attachment’
  • any — все статусы

post_parent(число) Показать только дочерние записи к указанному ID.
По умолчанию: » — необрабатывается nopaging(логический) Включить или отключить пагинацию, если стоит true параметр $numberposts игнорируется.
По умолчанию: false orderby(строка)

Сортировать результат по указанным полям. Можно указывать несколько полей сортировки, через пробел. Допустимые поля:

  • author — сортировать по ID авторов.
  • content — сортировать по контенту.
  • date — сортировать по дате создания записи.
  • ID — сортировать по ID записи. Указываются ID в массиве или через запятую.
  • menu_order — сортировать по полю menu_order . Используется для постоянных страниц и вложений (картинки, файлы и т.п.).
  • mime_type — сортировать по MIME типу. Используется для вложений.
  • modified — сортировать по дате изменения.
  • name — сортировать по альтернативному имени (slug).
  • rand — случайная сортировка. Создает повышенную нагрузку на БД.
  • status — сортировать по статусу (черновик, опубликовано и т.п.)
  • title — сортировать по названию.
  • parent — сортировать по ID родителя (parent ID).
  • password — сортировать по паролю.
  • type — сортировать по типу (пост, страница и т.д. ).
  • comment_count — по количеству комментариев.
  • meta_value — по значению указанного произвольного поля.
  • post__in — учитывает порядок указанных ID в параметре include.

Префикс post_ у полей таблицы опускается для удобства. Например вместо date можно написать post_date , вместо content post_content и т.д.

order(строка) В каком направлении упорядочить, указанное в параметре $orderby , поле:
ASC — по порядку (от меньшего к большему: а,б,в).
DESC — в обратном порядке (от большего к меньшему: в,б,а).
По умолчанию: ‘DESC’ suppress_filters(true/false)

При true (по умолчанию) пропускает все хуки изменения SQL запроса, такого типа posts_* или comment_feed_* .

Какие именно фильтры отключаются смотрите здесь.

В функциях WP_Query и query_posts() этот параметр отключен по умолчанию (равен false).

suppress_filters = true не виляет на работу фильтра pre_get_posts.

Такое отключение фильтров по умолчанию, может ввести в замешательство, если есть плагины влияющие на вывод записей, через фильтры SQL запроса, например WPML. В таких случаях suppress_filters нужно отключить.

Источник

Читайте также:  Ibm mq client java
Оцените статью