✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Запити до бази даних для швидкого оновлення даних, частина 1

7

Це не перший раз, коли я згадую про це, але одна з проблем, пов’язаних із написанням прямих запитів до бази даних для оновлення інформації в базі даних WordPress, полягає в тому, що ви залишаєте себе відкритими для чогось на зразок:

Так, але є API, щоб робити щось подібне.

І в багатьох випадках це правильно. Я також великий прихильник їх використання. Але бувають випадки, коли прямі, параметризовані запити до бази даних можуть бути більш оптимальним вибором.

Запити до бази даних для швидкого оновлення даних, частина 1

Ні, це не база даних, але чи не було б чудово, якби вони виглядали так? Фото Тобіаса Фішера на Unsplash

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

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

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

Я не прихильник цього.

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

Але наразі дозвольте мені викласти суть проблеми

  1. Я імпортую трохи інформації зі стороннього API.
  2. Інформація відображається в таблиці wp_posts, а також у таблиці wp_postmeta.
  3. Існують певні метадані, які є критеріями для визначення статусу публікації. Або, пряміше кажучи, якщо фрагмент метаданих присутній, статус публікації повинен бути встановлений на чернетку, щоб вона не відображалася в основному запиті.

Щоб вирішити цю проблему, потрібно зробити дві речі:

  1. Нам потрібні ідентифікатори постів,
  2. І нам потрібно змінити статус постів.

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

1 Візьміть ідентифікатори публікацій із пов’язаним мета-ключем

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

Потім ми збираємося налаштувати запит, який буде отримувати всі ідентифікатори публікацій, які мають цей конкретний мета-ключ :

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

2 Вийти раніше?

Перш ніж продовжувати оновлення інформації, ми повинні перевірити, чи є результати. А якщо їх немає?

Тоді ми можемо втекти.

3 Оновіть статус публікації

Але якщо є результати, ми повинні переглянути їх і оновити статус публікації :

То як це все разом виглядає?

4 Всі разом

Коли ми об’єднаємо цю функцію, більшу, ніж потрібно, ви побачите ось що :

Але в наступній публікації ми трохи реорганізуємо це, щоб зробити його більш об’єктно-орієнтованим.

Примітка для адміністраторів баз даних

Для тих із вас, хто добре розбирається в SQL-fu, ви знаєте, що це, швидше за все, можна вирішити за допомогою одного запиту; однак мета цього допису та наступного допису подвійна:

  1. Щоб показати, як використовувати $wpdb для швидкого досягнення чогось,
  2. Показати, як розбити процедурний метод виконання чогось на об’єктно-орієнтований метод виконання чогось.

З огляду на це, дякую за всі запитання. 👍🏻

Джерело запису: tommcfarlin.com

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