- get_post_types() WP 2.9.0
- Возвращает
- Использование
- Примеры
- #1 Выведем на экран список названий всех зарегистрированных типов записей
- #2 Выведем на экран список типов записей имеющих страницу во форонте
- #3 Выведем на экран список всех публичных, произвольных (созданных) типов записей
- #4. Пример, получение типа записи по названию
- Заметки
- Список изменений
- value arguments to match against * the post type objects. Default empty array. * @param string $output Optional. The type of output to return. Accepts post type ‘names’ * or ‘objects’. Default ‘names’. * @param string $operator Optional. The logical operation to perform. ‘or’ means only one * element from the array needs to match; ‘and’ means all elements * must match; ‘not’ means no elements may match. Default ‘and’. * @return string[]|WP_Post_Type[] An array of post type names or objects. */» data-tooltip-type=»pre»>Код get_post_types() get post types WP 5.8.1
- Cвязанные функции
- post_type (произвольный тип записи)
- Типы записей
- Как вывести на странице список всех записей сайта?
- Получение и вывод записей/постов WordPress — WP_Query и get_posts()
- Отладка
- Изменение базового запроса
- Параметры GET запроса
- Использование WP_Query для получения записей
- Методы получения записей
- Фильтры записей
- Основные фильтры и параметры запроса
- Фильтр по дереву (иерархии)
- Фильтр по категориям
- Фильтр по тегам (меткам)
- meta_query — фильтр по мета данным
- tax_query — фильтр по таксономиям
- Примеры запросов
- Вывод записей
- Цикл вывода записей
- Дополнительные/мета поля
- post_meta
- WP_Query: query_vars
- setup_postdata($post)
- get_posts() WP 1.2.1
- Возвращает
- Шаблон использования
- Использование
- Аргументы параметра $args
- Примеры
- #1 Выведем записи из рубрики
- #2 Вывод постов с отступом
- #3 Вывод постов с отступом, без нарушения основного цикла.
- #4 Возможность использовать специальные функции Цикла ВП
- #5 Последние посты отсортированные по заголовку
- #6 Случайные посты
- #7 Получить все прикрепленные файлы
- #8 Прикрепленные файлы определенного поста
- #9 Последние записи из той же рубрики
- Заметки
get_post_types() WP 2.9.0
Возвращает существующие (зарегистрированные) типы записей. Можно фильтровать вывод по множеству критериев.
Возвращает
Строку[]|WP_Post_Type[] . Список названий типов записей или массив объектов (вывод настраивается в параметре $output ).
Использование
Массив критериев, по которым будут выбраны типы записей. Значение каждого параметра смотрите в описании функции register_post_type().
- name
- label
- singular_label
- description
- public — Логический, если true, то выбраны будут только публичные типы записей (см. описание register_post_type() ).
- publicly_queryable
- exclude_from_search
- show_ui
- capability_type
- edit_cap
- edit_type_cap
- edit_others_cap
- publish_others_cap
- read_cap
- delete_cap
- hierarchical
- supports
- register_meta_box_cb
- taxonomies
- menu_position
- menu_icon
- permalink_epmask
- rewrite
- query_var
_builtin
Логический. Если true, то будут возвращены встроенные типы записей WP: page, posts. false — вернет только новые типы записей.
Типы записей относящиеся к критерию _builtin :
- post
- page
- mediapage
- attachment
- revision
- nav_menu_item — с версии 3.0
- custom post type — с версии 3.0
По умолчанию: предустановки
Как выводить результат. Возможны 2 варианта:
- names — будет возвращен массив имен;
- objects — будет возвращен массив объектов с данными типа записи.
По умолчанию: ‘names’
$operator(строка) Оператор сравнения для указанных критериев. Может быть: ‘and’ и ‘or’.
По умолчанию: ‘and’
Примеры
#1 Выведем на экран список названий всех зарегистрированных типов записей
Выведет зарегистрированные типы записей:
#2 Выведем на экран список типов записей имеющих страницу во форонте
#3 Выведем на экран список всех публичных, произвольных (созданных) типов записей
#4. Пример, получение типа записи по названию
Здесь используется вывод в виде объекта данных (object). Выводим тип записи с названием property :
Заметки
- Global. Массив. $wp_post_types List of post types.
- Смотрите: register_post_type() for accepted arguments.
Список изменений
value arguments to match against * the post type objects. Default empty array. * @param string $output Optional. The type of output to return. Accepts post type ‘names’ * or ‘objects’. Default ‘names’. * @param string $operator Optional. The logical operation to perform. ‘or’ means only one * element from the array needs to match; ‘and’ means all elements * must match; ‘not’ means no elements may match. Default ‘and’. * @return string[]|WP_Post_Type[] An array of post type names or objects. */» data-tooltip-type=»pre»>Код get_post_types() get post types WP 5.8.1
Cвязанные функции
post_type (произвольный тип записи)
Типы записей
у тебя в описании функции register_post_type есть пример #1 Регистрация нового типа записи
вставляю этот пример в functions.php, далее сразу после него вставляю код
да да, print_r в functions.php, не суть. смысл в том, что массив почему-то пустой.
что-то не так с приоритетами и вордпресс еще не видит созданного post_type?
если этот print_r вставить, например, в файл 404.php, а затем открыть на сайте любую несуществующую страницу, то там массив будет уже со всеми созданными post_type
Источник
Как вывести на странице список всех записей сайта?
Очень часто на форумах поддержки WordPress возникает вопрос о том, как в записи или на странице вывести список всех существующих на сайте записей. Зачем это нужно каждый решает сам. Кто-то таким образом вручную создает карту сайта, а кому-то это надо для замены рубрик. В большинстве случаев, подобная задача решается с помощью сторонних плагинов. Но если вам надо просто вывести список записей и ничего больше, то использование сторонних плагинов тут будет неоправданным. Вывести список всех записей можно с помощью небольшого шорткода [allposts], который вы вольны добавить куда угодно. Совсем недавно я рассматривал вопрос о том, как вывести список всех меток или рубрик сайта в алфавитном порядке, с записями принцип практически тот же. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:
//вывод списка всех записей сайта с помощью шорткода start function wph_allposts_shortcode($atts, $content) < $args = array( 'post_type' =>‘post’, ‘post_status’ => ‘publish’, ‘posts_per_page’ => -1, ‘orderby’ => ‘title’, ‘order’ => ‘ASC’ ); $query = new WP_Query( $args ); if( $query->have_posts() ) < echo '
- ‘; while ( $query->have_posts() ) < $query->the_post(); echo ‘
- ‘ . get_the_title() . ‘ ‘; > echo ‘
‘; > wp_reset_postdata(); > add_shortcode(‘allposts’, ‘wph_allposts_shortcode’); //вывод списка всех записей сайта с помощью шорткода end
При желании вы можете поправить аргументы WP_Query, если вам надо получить список записей с какими-либо дополнительными условиями (фильтрация по рубрикам, датам и т.д.). По умолчанию шорткод выведет список в алфавитном порядке.
Источник
Получение и вывод записей/постов WordPress — WP_Query и get_posts()
Параметры запроса постов и таксономий WordPress. Примеры фильтров и способов рендеринга постов, категорий и кастомных таксономий.
Для каждой страницы ядро WordPress формирует запрос к БД для получения записей на основе параметров GET запроса. Параметры запроса постов устанавливаются в глобальном объекте $wp_query . При необходимости, вы можете модифицировать этот базовый запрос иди же сформировать новый объект запроса к БД — WP_Query .
Внимание!
Не вызывайте ф-цию get_posts() и не используйте класс WP_Query непосредственно в файле functions.php! Получите мучительно долгую отладку неработающего запроса. Используйте запросы WP_Query внутри хуков или в самих шаблонах.
Внимание!
Никогда не используйте функцию query_posts() ! Эта ф-ция используется ядром WP для формирования основного запроса на получение постов по GET параметрам URL/ЧПУ. Вызвав эту ф-цию, вы замените глобальный объект основного запроса — $wp_query . Для дополнительных кастомных запросов всегда используйте WP_Query или обертку get_posts() .
Если вы все же изменили глобальную переменную $wp_query (что не рекомендуется!) с помощью функции query_posts() , верните ее в исходное состояние с помощью wp_reset_query() . И убедитесь, что вы делаете все правильно..
Отладка
SQL запрос объекта WP_Query хранится в свойстве request:
Изменение базового запроса
Задать параметры основного/базового запроса глобальный объект запроса вы можете только через хук pre_get_posts :
Параметры GET запроса
Использование WP_Query для получения записей
Сразу приведу пример полного цикла вывода записей/постов:
Примечание
Ф-ция wp_reset_postdata() восстанавливает глобальную переменную $post из глобального объекта $wp_query:
Далее подробно рассмотрим детали каждого этапа и дополнительных возможностей.
Методы получения записей
Получение одной записи/поста по id или slug:
Примечание
Функция get_post() — это обертка над WP_Post , она принимает дополнительные параметры $output и $filter:
Сформировать новый запрос для получения записей/постов WP_Query :
Получение записей/постов используя функцию get_posts() :
Примечание
Функция get_posts() — это просто обертка над WP_Query . Принимает массив с теми же параметрами для фильтрации постов. В отличие от query_posts() , она не вмешивается в глобальный запрос $wp_query , а создает отдельный экземпляр класса WP_Query . Также ф-ция get_posts() устанавливает некоторые дефолтные значения:
Фильтры записей
Основные фильтры и параметры запроса
Примечание
paged — Номер страницы пагинации. Показывает посты, которые в обычном режиме должны были быть показаны на странице пагинации Х. Переписывает параметр posts_per_page.
page(число) — Номер для статической домашней страницы. Показывает записи, которые в обычном режиме должны были быть показаны на странице пагинации Х главной статической странице (front page).
Примечание
Примечание к типам постов:
Фильтр по дереву (иерархии)
Фильтр по категориям
Примечание
При использовании фильтра post_in , WordPress будет извлекать «прикрепленные» записи, даже если их ID нет в массиве! Чтобы отключить вывод «прилепленных» записей — передайте параметр ignore_sticky_posts .
Фильтр по тегам (меткам)
meta_query — фильтр по мета данным
Параметр meta_query представляет массив вложенных параметров фильтрации записей/постов по мета данным.
tax_query — фильтр по таксономиям
Фильтр по категории кастомных постов:
Фильтр по категории и тегам:
Примеры запросов
Получить дочерние страницы для текущей страницы:
Всего доступно постов:
Добавить фильтр запроса «посты только с изображениями»:
Вывод записей
Цикл вывода записей
Примечание
Используйте wp_reset_postdata() для «сброса» значения глобальной переменной $post к состоянию основного запроса, после завершения любых циклов обхода записей! Поскольку каждый the_post() заменяет глобальные переменные, вы можете обнаружить, что на странице записи, например, переменная $post содержит не основной пост, а какой-то другой. Который скорее всего будет последним постом из какого-то цикла.
Дополнительные/мета поля
post_meta
Получить мета поля:
Получить ссылку на основное изображение поста:
WP_Query: query_vars
Получить объект (пост или таксономия) запроса для текущего маршрута/ЧПУ:
Получить параметры запроса для текущей страницы:
Получить параметр запроса WP_Query текущей страницы (поста или записей раздела):
Получить объект параметров основного GET запроса текущей страницы. Параметры формируются в зависимости от страницы — это может быть набор параметров для получения поста на странице поста, или параметры получения списка постов на страницах категории/архива.
Пример получения название категории для архива:
setup_postdata($post)
Извлекает данные поста и формирует глобальные переменные поста. Использует переданную переменную $post и глобальный объект запроса $wp_query. Создаются следующие глобальные переменные: $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages.
Функция работает только при условии, что вы передаете ей глобальный объект поста с именем $post. Если у вас объект поста находится в другой переменной — установите $post = $myWpPost, после чего передайте $post в эту ф-цию. Я не очень понимаю как работает эта ф-ция, если передавать ей ID поста вместо $post.
$found_posts — количество найденных записей
$query_vars — аргументы запроса
Получение отдельных полей поста (post_type, post_title, post_status, post_content..):
Источник
get_posts() WP 1.2.1
Получает записи (посты, страницы, вложения) из базы данных по указанным критериям. Можно выбрать любые посты и отсортировать их как угодно.
Это обертка для класса WP_Query, т.е. в функцию можно передать такие же параметры.
У этой функции есть предустановленные параметры. Иногда их нужно изменить, чтобы они не мешали. Предустановленные параметры:
- post_type = post — если мы указываем вывод таксономии для типа записи отличного от post, то параметр post_type нужно изменить — он по умолчанию равен post .
- numberposts = 5 — если мы забудем изменить параметр numberposts , то долго можем недоумевать почему выводится только 5 записей вместо нужных 20.
- suppress_filters = true — этот параметр отключает работу некоторых фильтров (хуков). Читать подробнее.
get_posts() — это аналог query_posts(). Отличается тем, что get_posts() не вмешивается в глобальный запрос WP, а создает отдельный экземпляр класса WP_Query . Подробнее читайте здесь.
Возвращает
Пустой массив, если не удалось получить записи.
Массив WP_Post объектов (записей). Каждый объект в массиве выглядит так:
Шаблон использования
Использование
Аргументы параметра $args
Эта функция является оберткой для 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)
numberposts(число) posts_per_page(число) Количество выводимых постов. Установить на 0 , чтобы ограничить вывод максимальным числом постов на страницу (устанавливается в настройках ВП) или поставить -1 чтобы убрать ограничения вывода (LIMIT).
По умолчанию: 5 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’
Какого типа вложения нужно получить. Можно использовать, когда параметр 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 — все статусы
По умолчанию: publish
post_parent(число) Показать только дочерние записи к указанному ID.
По умолчанию: 0 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 и т.д.
По умолчанию: ‘date’
меню 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 нужно отключить.
По умолчанию: true
Примеры
#1 Выведем записи из рубрики
Допустим у нас в категориях есть рубрика «Статьи» (ярлык articles ) в которую добавляются записи ( post_type=post ). Нам нужно вывести 6 таких записей на произвольной странице.
#2 Вывод постов с отступом
Если у вас на главной выводится один, последний пост, а нужно вывести еще 5 предыдущих из категории 1, то можно использовать такой код:
#3 Вывод постов с отступом, без нарушения основного цикла.
Если была использована функция get_posts() и после нее нужно использовать стандартный цикл WordPress, то нужно сохранить глобальную переменную $post , делает это так:
#4 Возможность использовать специальные функции Цикла ВП
Стандартно в цикле основанном на get_posts() невозможно использовать, например, функцию the_content() или the_date() . Эта проблема решается функцией setup_postdata() которой нужно передать переменную $post :
Данные можно также получить через обращение к свойству объекта (объект->свойство_объекта). Например, для этого примера $post->ID будет равно ID поста, $post->post_content будет содержать контент записи. Свойство объекта это колонка таблицы БД posts. Название колонок можно посмотреть тут.
Не забывайте, что на экран данные выводятся через php оператор echo :
#5 Последние посты отсортированные по заголовку
Получим последние посты отсортированные по заголовку в алфавитном порядке. Следующий пример выведет дату, заголовок и цитату поста:
#6 Случайные посты
Получим 5 случайных постов, реализуется за счет параметра ‘orderby’ => ‘rand’ :
#7 Получить все прикрепленные файлы
Используется за пределами Цикла WordPress. Следующий код выведет заголовок, ссылку и цитату прикрепленного файла:
#8 Прикрепленные файлы определенного поста
Код нужно использовать внутри Цикла WordPress, где переменная $post->ID :
#9 Последние записи из той же рубрики
Выведем список последних записей текущей рубрики, в которой находится запись. При этом исключим текущую запись:
Заметки
С версии 2.6 изменен ряд передаваемых значений у параметра orderby — префикс post_ был удален, например, было post_title, стало просто title.
Хотите дешево купить просмотры в Инстаграме на видео или ТВ-трансляцию, но не знаете, где? Попробуйте посетить сайт Doctor SMM, где Вам будет предложена одна из самых низких цен по рунету на просмотры. Торопитесь, так как предложение действует ограниченное время! К тому же здесь Вы сможете очень быстро приобрести ресурс с оптимальным, конкретно для Вашей страницы, скоростным режимом. Развивайте аккаунт быстро и легко!
Источник