Как массово отменить выбор категории для сообщений без плагина

Опубликовано: 2020-10-05

«Категория» - это таксономия по умолчанию в WordPress. Операторы могут использовать категории для сортировки и группировки сообщений блога по различным разделам. Категории также помогают посетителям быстрее перемещаться по сайтам, а также знать, о каких темах относятся ваши сайты. Оператор веб-сайта может выполнять базовые операции с категориями и сообщениями с помощью панелей администратора WordPress, а также использовать плагины WordPress для управления сообщениями различными способами.

Оглавление скрыть
  1. 1. Понимание того, как WordPress обрабатывает веб-запросы от клиентов?
  2. 2. Важные таблицы для массового манипулирования сообщениями WordPress
  3. 3. Переместить все сообщения из одной категории в другую - с помощью команд SQL.
    1. 3.1. Получите список идентификаторов всех сообщений, принадлежащих определенной категории
    2. 3.2. Получите идентификатор новой категории
    3. 3.3. Обновите сообщения со списками заданных идентификаторов
  4. 4. Последние слова

Однако чрезмерное использование плагинов для сайтов WordPress не должно быть вариантом, поскольку это может вызвать потенциальные проблемы с производительностью и безопасностью. В этой статье давайте узнаем, как массово отменить выбор категории для сообщений без использования плагинов .

Понимание того, как WordPress обрабатывает веб-запросы от клиентов?

Понимание того, как веб-сервер обрабатывает запрос от клиента, необходимо для управления сайтом WordPress. Подробные операции включают массовую отмену выбора публикаций в категории.

Типичный веб-сервер - это стек LAMP (Linux - Apache - MySQL / MariaDB - PHP). Другие эквивалентные концепции можно найти на других платформах веб-серверов.

Чтобы массово отменить выбор сообщений, вы должны узнать, как WordPress обрабатывает запросы.

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 сообщения отсортированы в категории «Без категории».

Получите список идентификаторов из 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, ');'
);

Во-вторых, проверьте это:

Проверьте команду SQL, чтобы обновить сообщения с заданными списками идентификаторов.

Наконец, @sqlCmd команды SQL, хранящиеся в переменной @sqlCmd с помощью следующих операторов:

 ПОДГОТОВЬТЕ stmt ОТ @sqlCmd;
УСТАНОВИТЬ SQL_SAFE_UPDATES = 0;
ВЫПОЛНИТЬ stmt;
УСТАНОВИТЬ SQL_SAFE_UPDATES = 1;
DEALLOCATE PREPARE stmt;

Вот результат:

Результат массового отключения категории для сообщений без плагина.

Последние слова

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

Надеюсь, эта статья даст вам еще один вариант массового снятия выделения с категории для сообщений. Чтобы получить больше полезных техник в WordPress, следите за нашими предстоящими статьями!

Если вы хотите использовать плагин для более простого массового снятия выделения с категории для публикаций, обратитесь к этой статье.