В попередньому матеріалі про фільтрацію виводу публікацій я показував як відкинути зайві матеріали з допомогою оператора if(). Варіант оптимальний, коли Ви редагуєте вже готову тему і не волієте витрачати на це більше 10 хвилин.
Поза тим пристойні девелопери користуються більш елегантним способом виводу матеріалів.
Якщо Ви налаштовуєте вивід від самого початку, то більш доцільним буде скористатись вбудованою функцією.
<?php wp_get_recent_posts( $args, $output ) ?>
Функція wp_get_recent_posts() має два параметри:
- $args — зазвичай подається у вигляді масиву з побажаннями, якими Ви уточнюєте, що хочете бачити на виході;
- $output — вигляд результату: масив або об’єкт. по замовчуванню стоїть вивід результатів масивом.
Щоб передати всю красу, давайте сформуємо запит
$args = array( 'numberposts' => 10, 'offset' => 0, 'category' => 0, 'orderby' => 'post_date', 'order' => 'DESC', 'include' => '', 'exclude' => '', 'meta_key' => '', 'meta_value' =>'', 'post_type' => 'post', 'post_status' => 'draft, publish, future, pending, private', 'suppress_filters' => true ); $recent_posts = wp_get_recent_posts( $args, ARRAY_A );
Спочатку ми зазначаємо в $args умови, яким повинен відповідати результат. Після цього присвоюємо $recent_posts результат, який поверне функція — тобто матеріали в БД, які відповідають нашим вимогам.
Тепер з допомогою звичайного циклу показуємо ці матеріали користувачу
foreach( $recent_posts as $recent ){ echo '<li><a href="' . get_permalink($recent["ID"]) . '">' . $recent["post_title"].'</a> </li> '; } wp_reset_query();
В цьому випадку ми просто вивели перелік назв наших публікацій з посиланнями на повний матеріал.
Що дають такі танці з бубном. Окрім того, що Ви ще на початку фільтруєте матеріали, ви можете маніпулювати їх виглядом: дата, нумерація, автори, статистика коментарів та багато чого іншого.
Особливо в нагоді ця конструкція стає, коли ми працюємо з асинхронними запитами — AJAX. Це ідеальний варіант для динамічного формування фільтру.