Функція add_post_meta()

Додає довільне поле для певного поста / запису.

Для додавання поля можна також використовувати функцію update_post_meta (). Вона часто зручніше і працює універсально, оновлює поле або створює нове, якщо такого поля немає.

add_post_meta () зручніше використовувати, коли використовуються кілька довільних полів з однаковими ключами. Для цього у функції є параметр $unique (унікальний), який за замовчуванням дорівнює false, тобто за замовчуванням створюється не унікальний ключ, що означає що таких ключів може бути декілька.

add_post_meta () працює на основі add_metadata ().

Повертає

true якщо операція по додаванню поля пройшла вдало або false, якщо поле додати не вдалося.

Використання

$ Post_id (число) (обов’язковий)

ID поста, довільне поле до якого потрібно додати.
За замовчуванням: немає

$ Meta_key (рядок) (обов’язковий)

Назва (ключ) довільного поля.
За замовчуванням: немає

$ Meta_value (рядок)

Значення довільного поля.
За замовчуванням: немає

$ Unique (логічний)

true – унікальний (тільки один), false – не унікальна. Якщо поставити параметр в true, то при додаванні поля, спочатку буде перевірятися чи існує вже поле з таким же ключем, якщо існує, то полі не буде додано.
За замовчуванням: false

Приклади

1. Базове використання. Додамо довільне поле “my_key” зі значенням 47, до поста 68:

2. Додавання або оновлення унікального довільного поля.

Додамо довільне поле, якщо таке поле ще не існує або оновимо існуюче. Важливо розуміти, що якщо четвертий параметр add_post_meta стоїть в true, то полі не буде оновлено, якщо воно вже існує (приклад нижче).

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

3. Якщо ми хочемо бути впевнені, що поля з ключем “my_key” не існує, перед тим як додавати його:

4. А ось приклад, що дозволяє додати нам кілька довільних полів з однаковими ключами “my_key”:

Створення системних (захованих) довільних полів

Якщо ви розробник і вам потрібно створити довільне поле, яке не буде видно користувачам, але при цьому буде працювати як звичайне довільне поле, то знайте що WordPress не показує довільні поля починаються з “_” (нижнього підкреслення). Не показує означає, що вони ігноруються на сторінці редагування постів або при використанні функції шаблону the_meta ().

Тому, якщо потрібно раптом потрібно сховати довільне поле, то потрібно створювати поле з ключем починаються з “_”, наприклад:

додасть унікальне довільне поле _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, залежно від того чи вдалося додати метадані.

Використання

$ 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:

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

Приклад створення таблиці метаданих: term:

Замітка! Після того як таблиця створена, її потрібно зареєструвати в об’єкті $ wpdb, для того щоб потім простіше було з нею працювати через клас $ wpdb.

Для реєстрації визначте властивість класу $ wpdb-> termmeta в якому вкажіть назву таблиці (робити це потрібно через хук init або перед використанням довільних функцій):

Додавання даних в таблицю Term

Тепер, коли таблиця створена, додати дані туди можна так:

Функція 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 ().
Використання (більше…)