Як працювати з метаданими коментаря wordpress

У цій серії ми розглянули ряд API-інтерфейсів метаданих, пропонованих WordPress. Це включає Post Meta API і User Meta API. Сьогодні ми збираємося завершити серію, подивившись на WordPress Comment Meta API.

Зверніть увагу, що це останній API метаданих WordPress. Починаючи з WordPress 4.4, тепер з'явився API метаданих Term. Щоб повністю зрозуміти це, важливо зрозуміти таксономию, терміни і їх відносини в контексті WordPress. У наступній серії я розповім саме про це.

Якщо ви все загрузли, тоді давайте почнемо.

У цій серії ми використовували визначення метаданих WordPress в якості основи для розуміння того, як ця інформація може надаватися в контексті нашого середовища.

Метадані обробляються за допомогою пар ключ / значення. Ключ - це ім'я елемента метаданих. Значення - це інформація, яка буде відображатися в списку метаданих для кожного окремого запису, з якою пов'язана інформація.

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

Як і в інших API, розглянутих в цій серії, ми розглянемо чотири основні функції:

  • add_comment_meta
  • update_comment_meta
  • get_comment_meta
  • delete_comment_meta

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

В іншій частині цієї статті я припускаю наступне:

  • У вас локальна середовище розробки з веб-сервером, сервером бази даних і PHP.
  • У вас встановлено копію WordPress.
  • У вас є копія tutsplus-metadata.php. створена в каталозі вашої теми, і вона включена в файл functions.php вашої теми.
  • У вас є готовий доступ до вашої IDE і доступному інтерфейсу бази даних.

Нарешті, всі метадані, з якими ми будемо працювати, зберігаються в таблиці бази даних wp_commentmeta. тому все скріншоти, які ви бачите в базі даних, будуть цієї конкретної таблиці.

Як працювати з метаданими коментаря wordpress

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

Це добре, тому що це дасть нам чистий список, який можна використовувати при вивченні різних функцій API. Зверніть увагу, що для всіх наведених нижче прикладів ми збираємося упевнитися, що все це відбувається в пості Hello World !. Цей пост має ідентифікатор 1. Якщо ви хочете використовувати іншу сторінку, просто замініть 1 на ідентифікатор повідомлення, про який йде мова.

Коли все готово, давайте почнемо дивитися на те, що є.

Як працювати з метаданими коментаря wordpress

Додавання унікальних метаданих

Функція add_comment_meta приймає три параметри і необов'язковий четвертий параметр. Якщо ви передаєте true як четвертий параметр, метадані будуть додаватися тільки в тому випадку, якщо зазначений мета-ключ не існує.

Зауважте, що я передав параметр true. Тому кожен раз, коли я оновлюю сторінку, WordPress побачить, що я хочу, щоб це значення було унікальним, щоб він не додавав більше інформації в таблицю бази даних, пов'язану з цим мета-ключем.

Додавання неунікальний метаданих

Якщо, з іншого боку, я хочу пов'язати кілька значень з одним і тим же мета ключем, я б видалив параметр true. Наприклад, використовуйте наступний код:

А потім оновіть сторінку, скажімо, три рази. Якщо все йде як годиться, ви можете побачити три нові записи, кожна з яких містить випадкове число, що генерується викликом rand () в аргументі meta value.

Як працювати з метаданими коментаря wordpress

Досить легко рухаємося, так? Якщо вам потрібно одне значення, пов'язане з одним ключем, то передайте true як необов'язковий четвертий аргумент; В іншому разі не вказуйте нічого.

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

Це може призвести до плутанини в коді (оскільки він читається так, як якщо б він оновлював те, що не існує), але також дозволяє вам забезпечити, щоб для даного мета-ключа існувала тільки одна запис.

Що відбувається, коли є мета-ключ, пов'язаний з декількома мета-значеннями? В цьому випадку вам потрібно знати значення, яке ви хочете замінити. У деяких випадках ви можете точно знати, що це таке. В інших випадках вам може знадобитися отримати інформацію, щоб знайти її (про це ми розповімо в наступному розділі).

Припускаючи, що ми хочемо оновити одну з створених нами записів, наприклад один з випадкових чисел, зазначених у наведеному вище прикладі, ми можемо знайти його з використанням інтерфейсу бази даних:

Як працювати з метаданими коментаря wordpress

І вкажіть це як попереднє значення в наступному коді:

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

Замість цього вам може знадобитися запустити запит або отримати набір значень перед їх оновленням. Це призводить нас до наступної теми.

Можливо, можна поглянути на це в такий спосіб: якщо кілька метаданих були додані з тим же мета-ключем (який ми розглянули в розділі «Додавання унікальних метаданих» вище), то швидше за все ви захочете отримати всю колекцію записів.

Якщо, з іншого боку, ви хочете отримати тільки один запис, тому що знаєте, що вона унікальна або тому, що вона була створена за допомогою функції update_comment_meta, тоді ви хочете, щоб WordPress повертав її вам в одному значенні.

Функція get_comment_meta вимагає три аргументи і необов'язковий четвертий в залежності від того, що ви хочете отримати.

отримання масиву

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

Отримання одного значення

Наприклад, припустимо, що є три записи, пов'язані з одним мета-ключем, і ви хочете тільки отримати одне значення. Ваш код буде виглядати наступним чином:

І підсумкове значення буде виглядати приблизно так:

Крім того, якщо ви знаєте, що дані унікальні, то код буде як і раніше виглядати так само, як і яке значення.

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

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

Якщо ви не вкажете мета-значення, все записи, пов'язані з мета-ключем, будуть видалені. Якщо, проте, ви вказуєте метазначеніе, то тільки один запис буде видалена.

Видалення унікальних значень

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

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

Як працювати з метаданими коментаря wordpress

Як працювати з метаданими коментаря wordpress

Видалення неунікальний значень

В інших ситуаціях, скажімо, існує кілька значень, пов'язаних з одним мета-ключем. Ми бачили це багато разів в цій статті. Якщо ви хочете видалити всі записи, пов'язані з мета-ключем, вам не потрібно вказувати метазначеніе.

Як працювати з метаданими коментаря wordpress

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

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

Повний вихідний код

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

Для боротьби з цим я рекомендую один з двох наступних сценаріїв:

Будь-який з них полегшить роботу з усім кодом, який ми розглянули досі.

висновок

Незалежно від того, чи працюєте ви з API метаданих або одним з інших API, кожен розробник WordPress повинен завжди мати швидкий доступ до WordPress Codex для швидкого вивчення того, які API-інтерфейси доступні і як їх використовувати.

Оскільки ми працювали з цією серією, ви повинні побачити, як API, розроблений навколо метаданих, є послідовним. Це робить простий у використанні потужний API для розширення деяких основних функцій WordPress.

Крім того, я згадав, що в WordPress 4.4 з'явився ще один API метаданих. Я планую розповісти про це в наступній серії, але для цього буде потрібно вивчити деякі інші функції, засновані на ній.

На даний момент ми розглянули багато матеріалу, щоб допомогти вам підвищити ваші існуючі навички WordPress. До наступної статті пам'ятайте, що всі мої курси і підручники доступні на моїй сторінці в профілі. і ви можете прочитати більше статей про розробку WordPress і WordPress в моєму блозі.

WordPress має активну екосистему. Є теми, плагіни, бібліотеки і багато інших продуктів, які допоможуть вам побудувати ваш сайт і проект. Відкритий вихідний характер платформи також робить його відмінним варіантом, за допомогою якого ви можете поліпшити свої навички програмування. У будь-якому випадку ви можете подивитися, що у нас є на ринку Envato.

Не соромтеся слідувати за мною в Twitter, а також в @tommcfarlin. де я розповідаю про різні практиках розробки програмного забезпечення, багато з яких мають відношення до веб-розробки, і багато хто з них спеціально орієнтовані на WordPress.