✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

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

22

Это не первый раз, когда я упоминаю об этом, но одна из проблем, возникающих при разговоре о написании прямых запросов к базе данных для обновления информации в базе данных 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 для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее