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 | Введено. |