Задавайте вопросы по курсам WordPress

Метабокси в WordPress

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

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

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

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

 

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

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

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

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

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

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

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

Опис класу:

options as $option ) { if (current_user_can( $option[‘cap’], $post->ID )) { ?>

 

 

 

 

 

prefix . $option[‘name’] . ‘” id=”‘ . $this->prefix . $option[‘name’] . ‘”‘; if ( get_post_meta( $post->ID, $this->prefix . $option[‘name’], true ) == “on” ) echo ‘ checked=”checked”‘; echo ‘” style=”width: auto;” />’; echo ‘‘; break; } case “select”: { echo ‘

 

 

 

 

 

‘ . $option[ ‘description’ ] . ‘

‘; echo ‘

 

‘; break; } default: { // за замовчуванням type=”text” echo ‘

‘ . $option[ ‘description’ ] . ‘

‘; echo ‘‘; break; } } ?>

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

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

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

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

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

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


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

Николаенко Максим

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


You may also like...

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

Ваша e-mail адреса не оприлюднюватиметься.

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

Шаблоны для WordPress
Самый лучший хостинг в Украине
Стабильный хостинг для Drupal