Метабокси в WordPress

Що таке метабокси?

Щоб не бути голослівним скажу, що WordPress є стандартні метабокси і ви часто їх використовуєте. Найчастіше ви бачите метабокси “Discussion» (Обговорення) та Custom Fields (Довільні поля). Ті, хто вже деякий час працював з WordPress, знають що відключати і підключати стандартні метабокси можна в пункті Screen Options (Налаштування екрану).

Коли ви розробляєте сайти, ви використовуєте плагіни і багато хто з них використовують API метабоксів. Цією технологією часто користуються в SEO плагінах для додавання полів введення заголовка, опису та ключових слів. До речі перевірено експериментально мета тег ключових слів на сторінках можна зовсім не додавати на видачу не помітив, щоб впливало.

Приклад метабоксу в плагінах.

 

pageparentdiv – метабокс с выбором родительской страницы и шаблона страниц wordpress tagsdiv-post_tag – метабокс метки wordpress

Перед тим як створювати свої метабокси, необхідно навчитися видаляти зайві.

remove_meta_box() – видалення метабоксу.

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

Для роботи функції її необхідно розмістити у functions.php. Для прикладу приберемо шар з ім’ям автора authordiv.

Якщо ви вставите цей код, то в Scrin Optn (налаштуваннях екрана) не буде вибору метабоксу автора. Також і під час редагування статті ви не побачите цей метабокс.

Розглянемо ще які стандартні метабокси можуть бути використані для розробки плагінів.

Ідентифікатори метабоксів можна було б знайти і в коді, але є ряд стандартних, які думаю, важливо перерахувати. Перерахую айдішники стандартних метабоксів.

commentstatusdiv – налаштування обговорення.

commentstatus metabox

commentsdiv – відображає коментарі до поточної посади.

commentsdiv metabox стандартные метабоксы WordPress

slugdiv – ярлик запису.

metabox slug - метабокс язык записи WordPress

revisionsdiv – редакції.

revisionsdiv – редакции.

authordiv – автор запису.

author – автор записи

postcustom – додавання / редагування довільних полів.

postcustom – добавление/редактирование произвольных полей WordPress

postexcerpt – цитата.

postexcerpt – метабокс wordpress цитата

trackbacksdiv – зворотні посилання.

trackbacksdiv – метабокс обратные ссылки в wordpress

categorydiv – метабокс список рубрик WordPress.

categorydiv – метабокс список рубрик

tagsdiv-post_tag – мітки.

tagsdiv-post_tag – метабокс метки wordpress

postimagediv – мініатюра запису.

postimagediv – миниатюра записи wordpress.

pageparentdiv – метабокс із вибором батьківської сторінки та шаблону сторінок.

pageparentdiv – метабокс с выбором родительской страницы и шаблона страниц wordpress

submitdiv – блок із кнопкою «опублікувати».

submitdiv – метабокс с кнопкой «опубликовать».

Додавання метабоксів за допомогою register_post_type()

Додавання метабоксів register_post_type()

Думаю ви чули про типи матеріалів у WordPress. Стандартні типи – це сторінки, пости і ті, які ви можете створити самі. Так ось, для створення типом матеріалів використовується ця функція. У ній же можна відразу визначити які метабокси створені типи будуть підтримувати.

Рядок Support показує, які метабокси має використовувати новий тип даних.

Також можна для нового типу даних додавати категорію та теги за допомогою масиву taxonomies.

Повний вид коду для нашого нового типу даних:

Також метабокси можна додавати за допомогою функції register_taxonomy_for_object_type()

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

Цю функцію можна використовувати, якщо таксономія спочатку визначати не треба.

Можна також додати підтримувані метабокси не відразу під час функції register_post_type(), а при подальшій обробці коду. Для додавання підтримки метабоксів використовуйте функцію add_post_type_support() замість масиву 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-функції.

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

Якщо після вставки коду ви спробуєте створити запис у нашому новому типі даних Books, то при створенні ви побачите новий метабокс із нашим вмістом.

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

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

Опис класу:

параметри як $option ) { if (поточний_користувач_може( $варіант[«шапка»], $пост->ID )) { ?>

 

 

 

 

 

префікс . $варіант["ім'я"] . '" id="' . $це->префікс . $варіант["ім'я"] . """; if ( get_post_meta( $пост->ID, $це->префікс . $варіант["ім'я"], true ) == «увімкнено» ) echo ‘ checked=”checked”’; echo ‘” style=”width: auto;” />'; луна '«; перерву; } регістр «вибрати»: { луна '

 

 

 

 

 

« . $варіант[ «опис» ] . «

«; луна '

 

«; перерву; } за замовчуванням: { // за замовчуванням type=”text” echo ‘

« . $варіант[ «опис» ] . «

«; луна '«; перерву; } } ?>

Створення об’єкту класу:
Стільки коду … Напрошується питання – навіщо це все? Начебто попередній спосіб був простішим.

Досить один раз докладно описати клас і після цього створювати скільки завгодно об’єктів (це і будуть метабокси), лише змінюйте параметри, що передаються йому, в тому числі і масив $options, не доведеться писати купу HTML-коду, все буде вставлятися за шаблоном. Змінні, які не використовуються конструктором, можна буде поміняти вже після створення об’єкта, наприклад:

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

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

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

Ще хотів би підкреслити що дані які записувалися в метабокс зберігатися в “Довільних полях”, а те що я вказав вгорі це виведення тих самих довільних полів.


Купити хостинг WordPress
/* Репетитор по wordpress
Послуги репетитора онлайн. Список курсів, які я веду
  • Базовий курс з веб-дизайну;
  • Верстка сайтів;
  • Загальний курс CMS WordPress та продовження курсу з розробки шаблонів;
  • Розробка сайтів на PHP.
Докладніше читайте на сторінці репетитор по WordPress
*/

Ніколаєнко Максим

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


Вам також може сподобатися...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.

Шаблони для WordPress
Найкращий хостинг в Україні
Стабільний хостинг для Drupal