Функція add_post_meta()
Додає довільне поле для певного поста / запису.
Для додавання поля можна також використовувати функцію update_post_meta (). Вона часто зручніше і працює універсально, оновлює поле або створює нове, якщо такого поля немає.
add_post_meta () зручніше використовувати, коли використовуються кілька довільних полів з однаковими ключами. Для цього у функції є параметр $unique (унікальний), який за замовчуванням дорівнює false, тобто за замовчуванням створюється не унікальний ключ, що означає що таких ключів може бути декілька.
add_post_meta () працює на основі add_metadata ().
Повертає
true якщо операція по додаванню поля пройшла вдало або false, якщо поле додати не вдалося.
Використання
<? php add_post_meta ($ post_id, $ meta_key, $ meta_value, $ unique); ?>
$ Post_id (число) (обов’язковий)
ID поста, довільне поле до якого потрібно додати.
За замовчуванням: немає
$ Meta_key (рядок) (обов’язковий)
Назва (ключ) довільного поля.
За замовчуванням: немає
$ Meta_value (рядок)
Значення довільного поля.
За замовчуванням: немає
$ Unique (логічний)
true – унікальний (тільки один), false – не унікальна. Якщо поставити параметр в true, то при додаванні поля, спочатку буде перевірятися чи існує вже поле з таким же ключем, якщо існує, то полі не буде додано.
За замовчуванням: false
Приклади
1. Базове використання. Додамо довільне поле “my_key” зі значенням 47, до поста 68:
<? php add_post_meta (68, 'my_key', 47); ?>
2. Додавання або оновлення унікального довільного поля.
Додамо довільне поле, якщо таке поле ще не існує або оновимо існуюче. Важливо розуміти, що якщо четвертий параметр add_post_meta стоїть в true, то полі не буде оновлено, якщо воно вже існує (приклад нижче).
<? php add_post_meta (7, 'fruit', 'banana', true) or update_post_meta (7, 'fruit', 'banana'); ?>
для цього потрібно використовувати такий варіант:
if (! update_post_meta (...)) add_post_meta (...))
3. Якщо ми хочемо бути впевнені, що поля з ключем “my_key” не існує, перед тим як додавати його:
<? php add_post_meta (68, 'my_key', '47', true); ?>
4. А ось приклад, що дозволяє додати нам кілька довільних полів з однаковими ключами “my_key”:
<? php add_post_meta (68, 'my_key', '47'); ?> <? php add_post_meta (68, 'my_key', '682'); ?> <? php add_post_meta (68, 'my_key', 'The quick, brown fox jumped over the lazy dog. "); ?>
Створення системних (захованих) довільних полів
Якщо ви розробник і вам потрібно створити довільне поле, яке не буде видно користувачам, але при цьому буде працювати як звичайне довільне поле, то знайте що WordPress не показує довільні поля починаються з “_” (нижнього підкреслення). Не показує означає, що вони ігноруються на сторінці редагування постів або при використанні функції шаблону the_meta ().
Тому, якщо потрібно раптом потрібно сховати довільне поле, то потрібно створювати поле з ключем починаються з “_”, наприклад:
<? php add_post_meta (68, '_color', 'red', true); ?>
додасть унікальне довільне поле _color зі значенням red і це полі не буде виводиться в адмінці на сторінці редагування постів / постійних сторінок.
Функція add_metadata()
При розробці сайту виникає потреба додати мета (додаткові) дані до будь-якого об’єкту (запис, коментар, користувач).
Ця функція є свого роду API для управління метаданими. Так як, для неї можна створити довільну таблицю в БД і записувати / видаляти дані з неї.
Споріднені функції:
update_metadata ($ meta_type, $ object_id, $ meta_key, $ meta_value, [$ prev_value])
– Можна використовувати замість add_metadata (), так як вона спочатку перевіряє існування ключа;
delete_metadata ($ meta_type, $ object_id, $ meta_key, [$ meta_value], [$ delete_all])
– Видаляє дані по ключу;
get_metadata ($ meta_type, $ object_id, [$ meta_key], [$ single])
– Отримує дані з БД, по ключу.
add_metadata () використовується в add_user_meta (), add_post_meta ().
Функція повертає false / true, залежно від того чи вдалося додати метадані.
Використання
<? php add_metadata ($ meta_type, $ object_id, $ meta_key, $ meta_value, $ unique); ?>
$ Meta_type (рядок) (обов’язковий)
Тип об’єкта, мета дані для якого потрібно додати. Може бути: comment, post або user (завжди в однині).
За замовчуванням: немає
$ Object_id (число) (обов’язковий)
ID об’єкта, мета дані для якого додаються.
За замовчуванням: немає
$ Meta_key (рядок) (обов’язковий)
Ключ – назва типу додаткових даних.
За замовчуванням: немає
$ Meta_value (рядок) (обов’язковий)
Значення ключа додаткових даних.
За замовчуванням: немає
$ Unique (логічний)
Визначення унікальності ключа.
false – означає, що для цього об’єкта може бути визначено декілька однакових ключів.
true – означає, що ключ для цього об’хекта може бути тільки один, тобто якщо такий ключ вже існує, то функція не додасть ніяких даних.
За замовчуванням: false
Таблиці метаданих в Базі Даних WP
add_metadata () передбачає існування потрібних таблиць в БД, таблиць куди метадані будуть записуватися. За умовчанням в WordPress існує 3 такі таблиці для різних об’єктів (записи, коментарі та користувачі):
wp_commentmeta
Метадані для кожного коментаря
wp_postmeta
Метадані для постів. Сюди записуються звичні в WordPress “довільні поля поста”
wp_usermeta
Додаткові дані про користувача.
Створення довільних таблиць в БД
Якщо потрібно записувати будь-які інші дані (для інших об’єктів), то можна створити свою таблицю і користуватися add_metadata () і похідними їй функціями (update_metadata (), delete_metadata (), get_metadata ()), для створеної таблиці.
Структура створюваної таблиці:
meta_id
bigint (20) UNSIGNED NOT NULL auto_increment
object_id
Назва поля буде [названіе_об’екта] _id. bigint (20) UNSIGNED NOT NULL
meta_key
varchar (255)
meta_value
longtext
Приклади
1. Приклад створення додаткових даних для коментаря 45:
<? php add_metadata ('comment', 45, 'vocation', 'Будівельник', true)?>
2. Створення довільної таблиці метаданих.
Створювати такі таблиці може знадобиться розробникам плагінів. Створення відбувається на етапі активації плагіна, через функцію register_activation_hook (). Потрібно розуміти, що подібні таблиці можуть створюватися й іншими плагінами, тому робіть перевірку на існування таких.
Приклад створення таблиці метаданих: term:
global $ wpdb; $ Result = false; // Створюємо таблицю в БД, якщо її не існує $ Sql = sprintf ('CREATE TABLE IF NOT EXISTS `% stermmeta` ( `Meta_id` bigint (20) UNSIGNED NOT NULL auto_increment, `Term_id` bigint (20) UNSIGNED NOT NULL, `Meta_key` varchar (255), `Meta_value` longtext, PRIMARY KEY (`meta_id`) ) ', $ Wpdb-> prefix); $ Result = $ wpdb-> query ($ sql);
Замітка! Після того як таблиця створена, її потрібно зареєструвати в об’єкті $ wpdb, для того щоб потім простіше було з нею працювати через клас $ wpdb.
Для реєстрації визначте властивість класу $ wpdb-> termmeta в якому вкажіть назву таблиці (робити це потрібно через хук init або перед використанням довільних функцій):
global $ wpdb; $ Wpdb-> termmeta = $ wpdb-> prefix.'termmeta ';
Додавання даних в таблицю Term
Тепер, коли таблиця створена, додати дані туди можна так:
add_metadata ('term', $ _GET ['tag_ID'], 'gender', 'M', true); add_metadata ('term', $ _GET ['tag_ID'], 'age', '29', true); add_metadata ('term', $ _GET ['tag_ID'], 'favourite_colour', 'Green', true);
Функція wp_get_nav_menu_items()
Отримує елементи меню навігації у вигляді масиву, який потім можна обробити.
Повертає всі елементи (посилання) зазначеного меню навігації, яке створюється в панелі: “зовнішній вигляд” > “Меню” (Appearance > Menus). (більше…)
Функція register_nav_menus()
Реєструє кілька навігаційних меню одночасно.
Навігаційні меню налаштовуються в адмін-панелі створеного сайту і виводяться в шаблоні функцією wp_nav_menu (). При налаштуванні, в меню можна зручно включати будь-які посилання: на рубрики, мітки, сторінки, пости, зовнішні посилання і т.д.
Функцію прийнято викликати під час події after_setup_theme. (більше…)
Функція register_nav_menu()
Реєструє навігаційне меню (тільки одне меню).
Таке меню зручно тим, що його можна дуже гнучко редагувати в адмін панелі, додаючи в нього посилання на будь-які розділи і сторінки сайту, а також і будь-які інші посилання. Меню виводитися в шаблоні функцією wp_nav_menu (). (більше…)
Функція wp_nav_menu ()
На кожному сайті потрібно меню, на WordPress при створенні сайту для виведення меню нам потрібна функція wp_nav_menu () котра виводить навігаційне меню, створене в панелі: “дизайн> меню” (Appearance> Menus).
Яке саме виводити меню (їх може бути декілька), вказується в параметрі “theme_location”. (більше…)
Функція wp_get_nav_menus()
Повертає масив (об’єктів) всіх зареєстрованих меню.
wp_get_nav_menus () – це обгортка для функції get_terms (), яка отримує дані таксономії ‘nav_menu’. Тому дані меню це нова таксономія ‘nav_menu’, а пункти меню – це записи. (більше…)
Функція get_tags()
При створенні сайтів на WordPress інколи виникає необхідність вірсортувати публікації по певним міткам. В якості таких міток можуть виступати теги.
Отримує масив об’єктів, з даними про мітки. Дані можна отримувати за різними критеріями (задається в параметрі $ args). (більше…)
Функція WP get_terms()
При розробці сайтів на WordPress інколи потрібно отримати всі елементи (терміни) зазначеної таксономії.
get_terms () використовується в wp_get_nav_menus (), get_tags (), get_all_category_ids (), get_categories (). (більше…)
Функція get_all_category_ids()
Отримує ідентифікатори (ID) всіх категорій.
Повертає масив, що містить ID усіх категорій.
get_all_category_ids () працює на основі get_terms ().
Використання (більше…)