Метабокси в WordPress, створення та видалення

В основному метабокси в WordPress потрібні для зручності (ну крім стандартних, зрозуміло), тому що всі налаштування, які ви можете додати у власному метабоксі, можна замінити використанням довільних полів.

remove_meta_box() - видалення метабоксів

  • $id (рядок) ідентифікатор метабоксу, його можна знайти у вихідному коді сторінці, трохи нижче я перерахую айдішники всіх стандартних метабоксів.
  • $page (рядок) тип постів, на сторінці створення/редагування яких потрібно видалити метабокс, наприклад post, page.
  • $context (рядок) розташування метабоксу, наприклад normal, advanced або side

Проста вставка цієї функції кудись не прокотить, тому наводжу приклад: .

Код вставляти уfunctions.php поточної теми.

Опис стандартних метабоксів у WordPress

Для того, щоб не потрібно було паритися і нишпорити в коді, перерахую айдішники стандартних метабоксів.

wordpress

створення

метабокси

створення

wordpress

метабокси

видалення

Способи додавання метабоксів

register_post_type()

Я думаю ви знаєте про типи записів у вордпрес, так ось, для їх створення використовується ця функція. У ній можна відразу і визначити які метабокси дані тип буде підтримувати.

У прикладі перераховано лише мінімум необхідних параметрів, але він однаково робітник.

register_taxonomy_for_object_type()

Функція приписує таксономію вже створеного типу записів, отже, додається і метабокс:

  • $taxonomy (рядок) (обов'язковий) назва таксономії, наприклад post_tag,
  • $object_type (рядок) (обов'язковий)Тут вкажіть тип посту, для якого потрібно привласнити таксономію, наприклад post, page, game;

Цю функцію теж просто так не заюзати, тому приклад:

add_post_type_support()

Дозволяє додати якийсь із стандартних боксів.

  • $post_type (рядок) (обов'язковий) тип посту (максимум 20 символів до речі),
  • $supports (рядокмасив) назви стандартних метабоксів, які перераховані двома прикладами вище;

add_meta_box()

А ось тут вже можна повеселитися, ви зможете додати абсолютно будь-який власний метабокс, неважливо, чи це будуть поля для вказівки мета-тегів або завантажувач зображень в галерею.

  • $id (рядок) (обов'язковий) HTML-атрибут id для блоку div майбутнього метабоксу,
  • $title (рядок) (обов'язковий) заголовок,
  • $callback (функція) (обов'язкове) функція, яка буде заповнювати метабокс, потрібно вказати назву функції у вигляді рядка,
  • $post_type (рядок) (обов'язковий) тип записів,
  • $context (рядок) у якій частині сторінки вставити метабокс (normal, side, advanced), за замовчуванням - advanced,
  • $priority (рядок) пріоритет, чим він вищий, тим ближче до верхньої частини сторінки розташовуватиметься метабокс, (high, core, default або low), за замовчуванням — default,
  • $args (масив) аргументи для callback-функції.

На відміну від попередніх способів, тут додавання проходитиме в кілька етапів, подивимося на прикладі:

У результаті на сторінці редагування посту отримуємо такий метабоксик:

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

Додавання метабоксів з використанням класу

Насправді це просто приголомшлива штука!

  • достатньо один раз описати клас і потім скільки завгодно використовувати його для додавання метабоксів на сайті,
  • не доведеться щоразу паритися з приводу HTML полів введення, як у випадку з функцією add_meta_box(),
  • все, що потрібно для створення нового метабоксу - додати кілька параметрів масив;

А тепер у мене подарунок для вас! Вже готовий клас із усіма необхідними типами полів.

Розповім, як його використовувати за два кроки. Перший крок – скопіюйте до себе наступний блок із кодом. Якщо не знаєте, куди його засунути — суніть у functions.php, не помилитеся.

Тепер крок другий – створюємо об'єкти та передаємо їм усі параметри метабоксів.

У наступному блоці коду я створюю два метабокси, один центром з кількома полями, другий теж центром з одним полем — чекбоксом.

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

створення

Звернення до метаданих посту/сторінки

Зрозуміло, що потім всі ці налаштування потрібно якось задіяти на сайті. Для цього відмінно підійде функція:

  • $post_id (ціле) (обов'язкове) ID посту або сторінки,
  • $key (рядок) (обов'язкове) значення довільного поля,
  • $single (логічне) якщо true - повертає рядок, false - масив, за замовчуванням - false;

Приклад використання – виведемо значення довільного поля meta1_field_1, тобто текстового поля з попереднього прикладу:

У міру вдосконалення класу вміст цієї посади оновлюватиметься.

Михайло Рудрастих

Вперше познайомився з WordPress у 2009 році. З 2014року мене можна зустріти на WordCamp - офіційній цукерці з WordPress, іноді там виступаю. Також зараз веду курси з WordPress в Epic Skills.

Якщо вам потрібна допомога з вашим сайтом або розробка з нуля, можу порекомендувати хороших хлопців. Просто напишіть мені.