Как массово отменить выбор категории для сообщений без плагина
Опубликовано: 2020-10-05«Категория» - это таксономия по умолчанию в WordPress. Операторы могут использовать категории для сортировки и группировки сообщений блога по различным разделам. Категории также помогают посетителям быстрее перемещаться по сайтам, а также знать, о каких темах относятся ваши сайты. Оператор веб-сайта может выполнять базовые операции с категориями и сообщениями с помощью панелей администратора WordPress, а также использовать плагины WordPress для управления сообщениями различными способами.
- 1. Понимание того, как WordPress обрабатывает веб-запросы от клиентов?
- 2. Важные таблицы для массового манипулирования сообщениями WordPress
- 3. Переместить все сообщения из одной категории в другую - с помощью команд SQL.
- 3.1. Получите список идентификаторов всех сообщений, принадлежащих определенной категории
- 3.2. Получите идентификатор новой категории
- 3.3. Обновите сообщения со списками заданных идентификаторов
- 4. Последние слова
Однако чрезмерное использование плагинов для сайтов WordPress не должно быть вариантом, поскольку это может вызвать потенциальные проблемы с производительностью и безопасностью. В этой статье давайте узнаем, как массово отменить выбор категории для сообщений без использования плагинов .
Понимание того, как WordPress обрабатывает веб-запросы от клиентов?
Понимание того, как веб-сервер обрабатывает запрос от клиента, необходимо для управления сайтом WordPress. Подробные операции включают массовую отмену выбора публикаций в категории.
Типичный веб-сервер - это стек LAMP (Linux - Apache - MySQL / MariaDB - PHP). Другие эквивалентные концепции можно найти на других платформах веб-серверов.

LAMP стеки связи сервер-клиент
1. Клиент отправляет HTTP-запросы для запроса веб-данных с веб-сервера.
2. Веб-сервер получает действительные HTTP-запросы от клиентов (после прохождения правил брандмауэра):
- Проанализировать структуру HTTP-запросов, определить, какие именно HTML-страницы нужны клиентам;
- Разбор запросов к скриптовым слоям (PHP).
3. Скриптовые слои PHP:
- Запрос в базу данных, получение всей необходимой информации;
- Комбинируйте с исходным кодом в темах для рендеринга динамических веб-страниц;
- Вернитесь на веб-сервер.
4. Веб-сервер:
- Создавайте ответные сообщения HTTP.
- Отправлять клиентам сообщения HTTP-ответа.
5. Клиент получает ответные сообщения HTTP от веб-сервера, а затем отображает веб-данные в своих веб-браузерах.
Важные таблицы для массового манипулирования сообщениями WordPress
В схеме базы данных сайтов WordPress есть набор таблиц. Схемы варьируются от сайта к сайту. Однако при манипулировании записями сайта WordPress эти таблицы должны вызывать большее беспокойство:
| Имя таблицы | Описания |
wp_postmeta | Храните дополнительные данные, связанные с контентом, на сайте WordPress. |
wp_post | Храните все важные данные, связанные с контентом, на сайте WordPress. |
wp_term_relationships | Храните все данные о связях, связывающие сообщения с категориями, тегами, ссылками. Информация из этой таблицы действует как карта между объектами терминов и терминами. |
wp_term_taxonomy | Храните дополнительные данные для таблиц wp_terms . |
wp_term | Сохраняйте категории, теги для сообщений, страниц и ссылок. |
Переместить все сообщения из категории в другую категорию - с помощью команд SQL
Чтобы напрямую управлять базой данных WordPress, операторы должны решить, какую СУБД (систему управления базами данных) использовать. Поскольку лабораторная среда использует стек LAMP в качестве веб-платформы, операторы могут работать с базами данных WordPress, используя phpMyAdmin, плагины WordPress, даже клиент MySQL (команда терминала) через сеансы SSH… В этом сценарии СУБД - это MySQL WorkBench для лучшей иллюстрации.
Перед внесением каких-либо изменений в базы данных WordPress рекомендуется создать полную резервную копию сайта WordPress. Эта полная резервная копия включает исходный код WordPress (темы, файлы PHP…) и структуру базы данных. В идеале операторы могут создать полную резервную копию всего хоста, на котором работает сайт WordPress.

Вот полные сценарии SQL для перемещения всех сообщений из категории «Без категорий» в категорию «Вдохновения».
УСТАНОВИТЬ @listID = (
ВЫБЕРИТЕ GROUP_CONCAT (ID) ИЗ wp_posts
ГДЕ post_type = "сообщение"
И post_status = "опубликовать"
И ID В (
ВЫБЕРИТЕ object_id ИЗ wp_term_relationships
ГДЕ term_taxonomy_id IN (
ВЫБЕРИТЕ term_taxonomy_id ИЗ wp_term_taxonomy
ГДЕ taxonomy = "category"
И term_id IN (
ВЫБЕРИТЕ t.term_id ИЗ wp_terms t
ГДЕ t.name = "Без категории"
)
)
)
);
НАБОР @newCategoryID = (
ВЫБЕРИТЕ t.term_id ИЗ wp_terms t ГДЕ t.name = 'Вдохновения'
);
ВЫБЕРИТЕ @newCategoryID;
установить @sqlCmd = CONCAT (
'ОБНОВЛЕНИЕ wp_term_relationships tr',
'SET tr.term_taxonomy_id =', @newCategoryID, '',
'WHERE tr.object_id IN (', @listID, ');'
);
ВЫБЕРИТЕ @sqlCmd;
ПОДГОТОВЬТЕ stmt ОТ @sqlCmd;
УСТАНОВИТЬ SQL_SAFE_UPDATES = 0;
ВЫПОЛНИТЬ stmt;
УСТАНОВИТЬ SQL_SAFE_UPDATES = 1;
DEALLOCATE PREPARE stmt;Подробный сценарий будет объяснен следующим образом.
Получите список идентификаторов всех сообщений, принадлежащих определенной категории
В этой демонстрации мы продемонстрируем, как массово отменить выбор всех постов из категории «Без категории», а затем переместить их в новую категорию под названием «Вдохновения».
В административной панели WordPress эти 3 сообщения отсортированы в категории «Без категории».

Приведенные ниже команды SQL получат все идентификаторы сообщений из категории с именем «Без категории».
УСТАНОВИТЬ @listID = (
ВЫБЕРИТЕ GROUP_CONCAT (ID) ИЗ wp_posts
ГДЕ post_type = "сообщение"
И post_status = "опубликовать"
И ID В (
ВЫБЕРИТЕ object_id ИЗ wp_term_relationships
ГДЕ term_taxonomy_id IN (
ВЫБЕРИТЕ term_taxonomy_id ИЗ wp_term_taxonomy
ГДЕ taxonomy = "category"
И term_id IN (
ВЫБЕРИТЕ t.term_id ИЗ wp_terms t
ГДЕ t.name = "Без категории"
)
)
)
); Проверьте значение @listID :

Получите идентификатор новой категории
НАБОР @newCategoryID = (
ВЫБЕРИТЕ t.term_id ИЗ wp_terms t ГДЕ t.name = 'Вдохновения'
); Проверьте значение @newCategoryID :

Обновите сообщения со списками заданных идентификаторов
Сначала создайте команду SQL и сохраните ее в переменной @sqlCmd .
/ * Ожидаемая команда хранится в переменной @sqlCmd:
ОБНОВЛЕНИЕ wp_term_relationships tr
УСТАНОВИТЬ tr.term_taxonomy_id = 5
ГДЕ tr.object_id IN (131,132,133);
* /
установить @sqlCmd = CONCAT (
'ОБНОВЛЕНИЕ wp_term_relationships tr',
'SET tr.term_taxonomy_id =', @newCategoryID, '',
'WHERE tr.object_id IN (', @listID, ');'
);Во-вторых, проверьте это:

Наконец, @sqlCmd команды SQL, хранящиеся в переменной @sqlCmd с помощью следующих операторов:
ПОДГОТОВЬТЕ stmt ОТ @sqlCmd; УСТАНОВИТЬ SQL_SAFE_UPDATES = 0; ВЫПОЛНИТЬ stmt; УСТАНОВИТЬ SQL_SAFE_UPDATES = 1; DEALLOCATE PREPARE stmt;
Вот результат:

Последние слова
Есть несколько способов массового снятия выделения категории для сообщений на сайтах WordPress. Либо используя плагины для взаимодействия через веб-интерфейс, либо используя команды SQL для прямого воздействия на базу данных WordPress, операторы должны понимать, какие важные объекты изменяются.
Надеюсь, эта статья даст вам еще один вариант массового снятия выделения с категории для сообщений. Чтобы получить больше полезных техник в WordPress, следите за нашими предстоящими статьями!
Если вы хотите использовать плагин для более простого массового снятия выделения с категории для публикаций, обратитесь к этой статье.
