get_posts()
Отримує записи (пости, сторінки, вкладення) із бази даних за вказаними критеріями. Можна вибрати будь-які пости та відсортувати їх як завгодно.
Ця функція має попередньо встановлені параметри . Іноді їх потрібно змінити, щоб вони не заважали. Попередньо встановлені параметри:
post_type = post
– Якщо ми вказуємо висновок таксономії для типу запису відмінного від post, то параметр post_type потрібно змінити – він за умовчанням дорівнює post .numberposts = 5
— якщо ми забудемо змінити параметрnumberposts
, то довго можемо дивуватися, чому виводиться лише 5 записів замість потрібних 20.ignore_sticky_posts = true
― не можна змінити!no_found_rows = true
― не можна змінити!
Ця функція – аналог читайте тут .
(дуже повільно) | 50000 разів – 99.1 сек
(дуже повільно)
Хуків немає.
Повертає
WP_Post[]|int[]
.
Порожній масив, якщо не вдалося отримати запис .
Масив 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(); // скидання
Використання
get_posts($args);
-
$args
(рядок/масив) -
Список аргументів, відповідно до яких буде отримано результат.
За замовчуванням: встановлені
Аргументи параметра $args
Ця функція є обгорткою WP_Query , тому вона може приймати такі ж параметри.
-
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 .
За замовчуванням: 0
-
category_name
(рядок) -
Показувати пости тільки з цієї категорії (вказується назва або альтернативне ім’я категорії).
За замовчуванням: ” -
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’.
page
– постійні сторінкиpost
– Постиrevision
– Ревізіїcustom_type
– назва (ярлик) довільного типу записуarray('post','page')
– відразу кілька типів у масиві.
За замовчуванням: ‘post’
-
post_mime_type
(рядок/масив) Якого типу вкладення необхідно отримати. Можна використовувати, коли параметр post_type = attachment .
- image/jpeg
- image/png
- image/gif
- image – для будь-яких картинок
- audio/mpeg
- application/pdf
- application/zip
Замість однієї міми типу можна вказати дещо в масиві. Повний список міме типів дивіться тут .
За замовчуванням: ”
-
post_status
(рядок) Статус запису. Можна передати кілька статусів через кому. Може приймати:
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 записів на довільній сторінці.
<?php global $post; $ myposts = get_posts ([ 'posts_per_page' => 6, 'category_name' => 'articles', 'post_type' => 'post', ]); foreach( $myposts as $post ){ setup_postdata($post); ?> <div class="article-elem"> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </div> <?php } wp_reset_postdata(); ?>
#2 Виведення постів з відступом
Якщо у вас на головній виводиться один, останній пост, а потрібно вивести ще 5 попередніх із категорії 1, то можна використовувати такий код:
<ul> <?php global $post; $ myposts = get_posts ([ 'posts_per_page' => 5, 'offset' => 1, 'category' => 1, ]); foreach( $myposts as $post ){ setup_postdata($post); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php } wp_reset_postdata(); ?> </ul>
#3 Можливість використання спеціальних функцій Цикл ВП
Стандартно в циклі заснованому на get_posts()
неможливо використовувати, наприклад, функцію the_content() або the_date() . Ця проблема вирішується функцією setup_postdata() якої потрібно передати змінну $post
:
<?php $lastposts = get_posts([ 'posts_per_page' => 3 ]); foreach( $lastposts as $post ){ setup_postdata($post); // встановлюємо дані ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_content(); ?> <?php } wp_reset_postdata(); // скидання ?>
Дані можна також отримати через звернення до властивості об’єкта (об’єкт->властивість_об’єкта). Наприклад, для цього прикладу $post->ID
буде дорівнює ID посту, $post->post_content
міститиме контент запису. Властивість об’єкта є колонка таблиці БД posts. Назву колонок можна подивитися тут .
Не забувайте, що на екран дані виводяться через оператор php echo
:
<?php echo $post->ID; ?>
#4 Останні посади відсортовані за заголовком
Отримаємо останні посади відсортовані за заголовком в алфавітному порядку. Наступний приклад виведе дату, заголовок та цитату посту:
<?php global $post; $postslist = get_posts([ 'posts_per_page' => 10, 'order'=> 'ASC', 'orderby' => 'title' ]); foreach( $postslist as $post ){ setup_postdata($post); ?> <div> <?php the_date(); ?> <br /> <?php the_title(); ?> <?php the_excerpt(); ?> </div> <?php } wp_reset_postdata();
#5 Випадкові посади
Отримаємо 5 випадкових постів, що реалізується за рахунок параметра 'orderby' => 'rand'
:
<ul> <?php $args = array( 'posts_per_page' => 5, 'orderby' => 'rand' ); $rand_posts = get_posts($args); foreach( $rand_posts as $post ) : ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> <?php wp_reset_postdata() ?> </ul>
#6 Отримати всі прикріплені файли
Використовується за межами циклу WordPress. Наступний код виведе заголовок, посилання та цитату прикріпленого файлу:
$attachments = get_posts( array( 'post_type' => 'attachment', 'posts_per_page' => 500, 'post_status' => 'any', 'post_parent' => null ))); if ($attachments) { foreach ( $attachments as $post ) { setup_postdata($post); the_title(); the_attachment_link( $post->ID, false ); the_excerpt(); } wp_reset_postdata(); }
#7 Прикріплені файли певного посту
Код потрібно використовувати всередині Цикл WordPress, де змінна $post->ID
:
<?php $ args = array ( 'post_type' => 'attachment', 'posts_per_page' => -1, 'post_status' => null, 'post_parent' => $post->ID ); $ attachments = get_posts ($ args); if ($attachments) { foreach ( $attachments as $attachment ) { echo apply_filters( 'the_title' , $attachment->post_title ); the_attachment_link( $attachment->ID , false ); } } wp_reset_postdata(); ?>
#8 Останні записи з тієї ж рубрики
Виведемо список останніх записів поточної рубрики, де знаходиться запис. При цьому виключимо поточний запис:
<?php $category = get_the_category(); rsort ($ category); $cat_add_id = $category[0]->term_id; $posts = get_posts(array( 'cat' => $cat_add_id, 'posts_per_page' => 4, 'exclude' => $GLOBALS['post']->ID, ))); foreach( $posts as $post ){ setup_postdata($post); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php } wp_reset_postdata(); ?>
#9 Параметри таксономії
Покажемо пости, пов’язані з певною таксономією. Якщо ви вказуєте таксономію, зареєстровану для типу посту, замість цього category
можна використовувати {имя_таксономии}
. Наприклад, якщо у вас є таксономія genre'' и вы хотите показывать только посты из жанра
jazz, ви можете використовувати наступний код.
$ show_albums = get_posts ([ 'posts_per_page' => 8, 'orderby' => 'rand', 'post_type' => 'albums', 'genre' => 'jazz', 'post_status' => 'publish' ]);
Наступний приклад відображає повідомлення, помічені jazz
в таксономії genre
, використовуючи tax_query
:
$ args = array ( 'tax_query' => array( array( 'taxonomy' => 'genre', 'field' => 'slug', 'terms' => 'jazz' ) ) ); $postslist = get_posts($args);
Додаткові приклади див. у розділі “Параметри таксономії” документації WP_Query .
#10 Сортування по порядку з параметраinclude
orderby
також набуває значення post__in
. Якщо використовувати include
для отримання певних постів, то пости будуть отримані в порядку, який ви вказали для include. Наприклад:
$posts = get_posts([ 'include' => '3,8,1,17', 'post_type' => 'attachment', 'orderby' => 'post__in', ]);
#11 Отримайте останні 10 записів:
$args = [ 'numberposts' => 10 ]; $latest_posts = get_posts($args);
Ви також можете передати аргумент post_type, коли потрібно отримати записи з типу посту, наприклад:
$args = [ 'numberposts' => 10, 'post_type' => 'book' ]; $latest_books = get_posts($args);
#12 Масив ID постів
Щоб повернути ідентифікатори замість об’єктів post, скористайтеся аргументом fields
.
$args = ['fields' => 'ids']; $posts = get_posts($args); // if any posts are found $posts will be an array with their ids
Аргумент fields
може бути встановлений у ids
, all
(за замовчуванням) або id=>parent
. Останні два (аргументи) повертають масив об’єктів stdClass.
#13 Параметри довільного поля
Показати посади, пов’язані з певним кастомним полем. Наступний приклад відображає пости з типу постів product
, які мають мета-ключ featured
зі значенням yes
, використовуючи meta_query
:
$args = [ 'post_type' => 'product', 'meta_query' => [ [ 'key' => 'featured', 'value' => 'yes', ] ], ]; $postslist = get_posts($args);
Додаткові приклади див. у розділі “Параметри полів користувача” документації WP_Query .
нотатки
З версії 2.6 змінено ряд значень, що передаються у параметра orderby – префікс
post_
був видалений, наприклад, було post_title, стало просто title.- З версії 3.0 параметрам include та exclude можна передавати і масиви ID.
–
Бажаєте дешево купити перегляди в Інстаграмі на відео чи ТБ-трансляцію, але не знаєте, де? Спробуйте відвідати сайт Doctor SMM , де Вам буде запропонована одна з найнижчих цін по рунета на перегляди. Поспішайте, тому що пропозиція діє обмежений час! До того ж, тут Ви зможете дуже швидко придбати ресурс з оптимальним, конкретно для Вашої сторінки, швидкісним режимом. Розвивайте обліковий запис швидко і легко!
нотатки
- Дивіться: WP_Query
- Дивіться: WP_Query::parse_query()
список змін
З версії 1.2.0 | Введено. |