У цьому уроці ми розповімо, як зробити висновок останніх постів по кожній рубриці WordPress на одній сторінці.
Ось наочна демо-версія того, що ми збираємося зробити в цьому уроці:
І сьогодні ми розглянемо, як це зробити. А саме:
- Визначити всі рубрики для блогу
- Вивести останні пости для кожної з них з мініатюрою зображення, якщо така є
- Переконатися, що немає дублікатів рубрик
- Красиво оформити зовнішній вигляд рубрик
Що нам знадобиться?
Щоб сьогоднішнє керівництво було для вас корисним в практичному сенсі, вам необхідно:
Налаштування дочірньої теми
Почнемо з установки теми. Створимо дочірню тему Twenty Fourteen за допомогою тільки двох файлів: style.css і index.php. Ось так виглядає наша таблиця стилів для нової дочірньої теми:
Ми повернемося до цього файлу в самому кінці при оформленні рубрик, а на даному етапі цього достатньо, щоб WordPress розпізнав дочірню тему.
Створюємо файл головної сторінки
Так як ми поставили перед собою мету вивести останні пости з кожної рубрики на головній сторінці, то нам потрібно створити новий файл index.php в щойно створеної нами дочірньої темі.
Створюємо порожній файл index.php
Для початку скопіюємо файл index.php з теми Twenty Fourteen і відредагуємо код з блоком циклу разом з іншим контентом. Ось як він повинен виглядати:
визначаємо рубрики
Для визначення рубрик в блозі потрібно відразу ж після відкриття тега
При цьому використовується функція get_categories () для складання списку рубрик. За замовчуванням список відображається в алфавітному порядку, а порожні рубрики в нього включені не будуть. І для цього не потрібно додавати ніяких додаткових аргументів.
Потім за допомогою foreach ($ categories as $ category) <> ми заявляємо WordPress, щоб він використовував кожну з цих рубрик та код всередині дужок. Потім потрібно створити запит для кожної з цих рубрик.
Визначаємо аргументи для запитів
Тепер потрібно визначити аргументи для запиту. Усередині дужок потрібно додати наступний код:
Ця дія виведе всього один запис з окремо взятої рубрики.
використовуємо запит
Вставляємо запит за допомогою класу WP_Query:
Це допоможе вивести мініатюру зображення, заголовок і анонс кожного запису у вигляді посилання.
Ось як це виглядає:
Як бачите, виникла невелика проблема. На сторінці відобразилися найостанніші записи в кожній рубриці, але вони іноді повторюються, так як одна і та ж запис може бути доцільною для більш ніж однієї рубрики. І зараз нам потрібно це виправити.
Як уникнути дублювання записів?
Над рядком, де ви можете розмістити фотографії функцію get_categories (). додайте наступний рядок:
Це створить порожній масив $ do_not_duplicate. в якому ми розмістимо ID кожного виведеного поста. А потім перевіримо, що ID кожного з постів, для якого був створений запит, знаходиться в цьому масиві.
Потім додайте новий рядок під вибраним запитом, і в результаті перші два рядки будуть виглядати таким чином:
Так ID актуального поста буде додано до масив $ do_not_duplicate.
І нарешті додаємо новий аргумент в аргументи запитів, щоб уникнути виведення будь-яких посад в цьому масиві. Аргументи повинні виглядати ось так:
Для цього використовувався аргумент 'post__not_in', який шукає масив ID всіх записів.
Збережіть свій файл index.php і дивіться, що вийшло:
Як бачите, записи вже не дублюються.
Оформляємо стилі для головної сторінки
Давайте надамо нашим рубриках привабливий зовнішній вигляд і трохи оформимо головну сторінку. Найпростіший спосіб - додати мініатюру і розмістити її по ліву сторону від запису.
Для цього в файл теми style.css потрібно додати наступний код:
Зараз сторінка виглядає набагато привабливіше, чи не так?
Як застосувати цю техніку під різні типи контенту?
Цю техніку можна застосувати для різних типів контенту або таксономій. наприклад:
висновок
Джерело: code.tutsplus.com
Підкажіть, будь ласка, чи є плагін для відображення останніх постів в віджеті з можливістю довантажити без перезавантаження сторінки попередні останні пости?
Вибачте, що не в тему.