Один із факторів, який робить WordPress потужним CMS інструментом – це можливість використовувати таблицю. wp_postmeta для власних полів. Ці поля можуть містити додаткову інформацію, наприклад SEO поля, додані SEO плагіном, або можуть бути використані для відображення додаткового контенту клієнтської частини.
Додаючи до полів цю додаткову інформацію, ви можете створювати власні запити для організації відображення контенту.
Навчання роботі з цими даними - хороший спосіб вивчити базові поняття PHP, такі як масиви, цикли и об'єкти. Щоб повністю опанувати мета-дані WordPress, ви повинні опанувати всі види масивів.
У цьому посібнику я покажу вам різні способи роботи з мета-даними WordPress записів, а також з мета-даними користувачів як приклади роботи з масивами.
Що таке мета-дані записи?
Найтехнічніше визначення мета-даних запису - це будь-яка інформація, що зберігається в таблиці wp_postmeta. За замовчуванням там не так багато інформації, але плагін або тема в будь-який момент можуть додати своє поле, а дані, введені в це поле, зберігатимуться в таблиці wp_postmeta. Хороший приклад - SEO-поля, що додаються SEO-плагіном. Наприклад, згадайте мета-опис вашого посту. Це поле зберігається у таблиці wp_postmeta.
Також власними полями може бути доповнено профілі користувачів WordPress. І як для таблиці wp_posts є таблиця wp_postmeta, Так дані для користувачів зберігаються в таблиці wp_usermeta, а не в таблиці wp_user.
У цій серії статей ми не говоритимемо про те, як додавати власні поля WordPress — це окрема тема. Власні поля можуть бути додані в редактор запису за допомогою мета-блоку "Довільні поля", можуть бути додані безпосередньо плагіном або темою, а також через використання спеціального фреймворку, за типом стручки або Розширений Користувальницькі поля.
технічно, мета-дані записи - це будь-яка інформація, що зберігається в таблиці wp_postmeta. Як ми згадували раніше, хороший приклад мета-даних запису - поле мета-опису, яке додається плагінами типу WordPress SEO.
Методи отримання мета-даних
Використання get_post_meta ()
WordPress надає безліч способів отримання мета-даних для запису.
За допомогою get_post_meta () ми можемо отримати лише одне поле, вказавши його. Наприклад, щоб отримати поле під назвою 'Foo' з поточного запису в циклі, ми можемо зробити:
get_post_meta( get_the_id(), 'foo', true );
Зверніть увагу, що останній переданий нами аргумент правда. Цей аргумент під назвою "одинвизначає, хочемо ми отримати у відповідь окреме значення або масив значень.
Використання WP_Query
Іноді ми хочемо зробити цілий цикл навколо мета-даних, і в цьому випадку стане в нагоді WP_Query. WP_Query дозволяє нам робити так званий "мета-запит", де запит на записи ґрунтується на мета-полях та повертає записи, які містять значення, що відповідають запитуваним. Результатом буде колекція, за якою ми можемо проходити у циклі.
Наприклад, уявіть, що у нас є поле під назвою "ім'я_автораі ми хочемо повернути всі записи, де в полі ім'я_автора міститься значення 'Толкієн'. WP_Query дозволяє нам робити це дуже просто – ми розглянемо це докладніше у наступному посібнику цієї серії.
Не записами єдиними
Мета дані є не тільки у записів. Наприклад, ви знаєте всі поля, які доступні у профілі користувача? Це мета-поля, але зберігаються вони не в wp_postmeta, а таблиці wp_usermeta.
В результаті, у нас є окремі функції та класи для мета-даних користувача. Функції get_user_meta () и get_author_meta() - Еквівалент аналогічним командам записів. У WP_Query теж є свій еквівалент для користувачів WP_User_Query.
Об'єкти чи масиви
Коли ви використовуєте функції типу get_post_meta () для отримання більш ніж одного поля, ви, швидше за все, отримаєте те, що називається багатовимірним масивом. Багатовимірний масив також відомий як масив масивів. Кожен масив усередині багатовимірного масиву може також бути багатовимірним.
Звучить страшно? Не бійтеся! У цій серії статей ми розповімо, як читати багатовимірні масиви для того, щоб отримати потрібну вам інформацію.
І, нарешті, як ми згадували раніше, інший метод отримання інформації про запис — це використання WP_Query. Коли ви використовуєте клас WP_Query, ви використовуєте те, що називається PHP об'єктно-орієнтованим, і в результаті ви отримуєте не масив - ви отримуєте об'єкт.
До певної міри об'єкти схожі на масиви - вони можуть містити масиви даних. Але до об'єкта ви можете використовувати будь-яку функцію класу. Тобто ми можемо не тільки використовувати об'єкт WP_Query для повернення значення мета-поля, але також можемо використовувати його внутрішні методи, найпопулярніший з яких — the_post ().
У наступному випуску...
В даний момент ми розглянули різні типи мета-даних, спосіб їх зберігання та подання, а також способи їх отримання.
Протягом цієї серії статей ми розглянемо докладніше кожен аспект таблиць мета-даних, пов'язані з ними API, а також як ми можемо використовувати їх для впровадження нових функцій у наші проекти.
Коментарі до запису: 2
Клас, чекатиму продовження.
Більше статей зачіпають і PHP заразом, щоб розуміти як це зроблено а не сліпо повторювати те, що описано в статтях.
Народ може хтось підкаже. З якогось переляку сайт http://d-nk.com.ua/ почав вантажити відсоток хостера.
Ось що пише Хостинг
«У тому й проблема, що визначити причину навантаження не вдається.
Я переглянув навантаження по вашому обліковому запису з початку літа — воно повільно, але постійно зростає — десь на початку червня воно в середньому перевалило через 1%, на початку жовтня — через 2%, у середині листопада — через 3%.
Тому мені здається: десь якісь дані, які використовуються при генерації сторінок, накопичуються і таким чином уповільнюють обробку сторінок усе далі і далі.
Найбільше рядків у вас у таблицях: wp_comment_rating, wp_login_fails, wp_postmeta, wp_term_relationships, wp_yapp_related_cache.
Насамперед я спробував би відключити коментарі або систему їх оцінки (рейтингу). Можливо, при цьому варто видалити вміст таблиці (можна перед цим зробити бекап вмісту).
login_fails теоретично має впливати лише на вхід до адмінки.
Що зберігається в postmeta, я, на жаль, не знаю, а це найбільша таблиця. Про term_relationships я також нічого не знаю, але вона менша.
yapp_related_cache - це швидше за все таблиця якогось модуля. Якщо є ідеї — якого можна спробувати його відключити/видалити.»
Тобто яку з цих таблиць можна сміливо почистити не завдавши шкоди роботі сайту