WordPress – надзвичайно потужна CMS. Її могутність полягає, передусім, широкі можливості налаштування. Змінити дизайн вашого сайту або додати нову функцію – справа кількох хвилин.

WordPress дозволяє налаштувати особю сайту область – область віджетів – для відображення категорій, розділів або хронології постів. Але як бути, якщо ви хочете відобразити у вигляді віджета довільний пост?

На багатьох сайтах така функція доступна під назвою «Кращі пости» («Featured Posts»). У базовій поставці WordPress цієї функції немає, але вона легко може бути створено.

Ця стаття присвячена створенню функції «Кращі пости» за допомогою засобів, наявних у стандартній інсталяції WordPress.

По ходу справи ми зосередимося на реалізації самої функції, тому не зможемо приділити занадто багато уваги дизайну. Пізніше ви зможете редагувати CSS-файли так, щоб секція «Кращі пости» найкращим чином вписалася в дизайн вашого сайту.

Вихідні вимоги

  • інсталяція WordPress;
  • початкові знання PHP;
  • вміння орієнтуватися у документації;
  • трохи вільного часу.

Очікуваний результат

Завантажити всі файли, що використовуються у статті, ви можете тут.

Приступимо

Щоб не морочитися дизайном, ми будемо використовувати тему-пустушку Test-theme, що складається з базового набору шаблонів, що показують потрібний контент без натяку на оформлення. Ви можете завантажити цю тему звідси або використовувати будь-яку іншу тему.

Етапи роботи

  • додавання метабокса на сторінку редагування публікації;
  • збереження даних метабокса;
  • відображення «кращих постів» на головній сторінці.

Етап 1. Створення метабокса

Відкрийте файл functions.php і додайте в нього функцію, реєструючу метабокс. Ця функція відображає прапорець опції на сторінці редактора публікації:

function add_featured_meta_box($post){
$featured = get_post_meta($post->ID, ‘_featured-post’, true);
echo «».__(‘Feature this post?’, ‘foobar’).»»;
echo «»;
}

Коли адміністратор захоче помістити посилання на пост в секцію «Кращі пости», він просто встановить цей прапорець:

Створення розділу «Найкращі публікації» у WordPress

Але якщо ми спробуємо скористатися цією функцією зараз, то зауважимо, що стан прапорця не зберігається.

Етап 2. Збереження даних метабокса

Знову відкриємо файл functions.php і створимо таку функцію:

function save_featured_meta($post_id){
// Do validation here for post_type, nonces, autosave, etc…
if (isset($_REQUEST[‘featured-post’]))
update_post_meta(esc_attr($post_id), ‘_featured-post’, esc_attr($_REQUEST[‘featured-post’]));
// I like using _ before my custom fields, so they are only editable within my form rather than the normal custom fields UI
}
add_action(‘save_post’, ‘save_featured_meta’);

Ця функція перевіряє, чи встановлений прапорець, і відповідно оновлює інформацію в базі даних за допомогою функції update_post_meta(). Ця функція відповідає за збереження інформації в користувацьких полях бази даних WordPress.

Користувальницькі поля додаються в базу даних по мірі необхідності. Тому наша функція насамперед перевіряє, чи існує відповідна клієнтська полі. Якщо ні, поле за допомогою виклику функції add_post_meta().

Етап 3. Відображення секції «Кращі пости»

Щоб відобразити дані на головній сторінці, ми повинні модифікувати файли нашої теми. Скопіюйте розмітку і код, наведені нижче, і вставити їх туди, де ви хочете показати секцію «Кращі пости»:

Featured Posts

5,
‘meta_key’ => ‘_featured-post’,
‘meta_value’ => 1
);
$featured = new WP_Query($args);
if ($featured->have_posts()): while($featured->have_posts()): $featured->the_post(); ?>

By / On / In

‘box’)); ?>

Цей код створює масив, який буде містити в собі список «кращих» постів. Потім цей масив заповнюється з бази даних за допомогою функції WP_Query(). Зрештою, посилання на пости, їх заголовки, автор і інші подробиці відображаються в циклі в потрібному місці сторінки.

Якщо ви відкриєте головну сторінку вашого сайту, то результат буде виглядати приблизно так:

Створення розділу «Найкращі публікації» у WordPress

Висновок

Вітаю! Ви тільки що створили корисне доповнення для вашого сайту і вивчили деякі методи налаштування WordPress на реальному прикладі. Зрозуміло, якщо ви не задоволені результатом чи вважаєте всі ці маніпуляції занадто складними, ви завжди можете скористатися готовим плагіном начебто TSP Featured Posts або Featured Posts Widget.

Сподіваюся, ця стаття була для вас корисною. Ви можете поділитися своїми рецептами створення розділу «Кращі пости» в коментарях.

Переклад статті «Light Your Posts: How to Create Featured Posts Section in WordPress» був підготовлений дружною командою проекту Сайтостроение від А до Я.