Як швидко видалити «без рубрики» в записах wordpress

Як швидко видалити «без рубрики» в записах wordpress

Взагалі, мова піде не про видалення рубрики «Без рубрики», а відключення цієї рубрики для статей. Справа була так: за допомогою експорту-імпорту записів і всього іншого в WordPress перенесений контент на інший сайт, і виявилося, що всі статті, крім своєї зазначеної рубрики, були додані ще в рубрику нового сайту «Без рубрики». Мені це зовсім не потрібно.

Можна редагувати записи по одній, видаляючи непотрібну рубрику, можна використовувати плагіни (наприклад, відмінний плагін Simple Tags), можна редагувати записи групами. Але в першому і останньому випадку в нових версіях WordPress щось глючить і треба редагувати двічі, щоб позбутися від «Без рубрики», а з плагінами все відбувається швидше, ніж редагування кожного запису, але недостатньо швидко.

Як швидко видалити записи з рубрики «Без рубрики»?

Зазвичай швидше за все управління контентом WordPress відбувається через SQL-запити до бази даних (БД) або ж за допомогою якихось прямих маніпуляцій з таблицями БД в панелі MySQL на хостингу. Що я і зроблю.

Як швидко видалити «без рубрики» в записах wordpress

Картинка 1: рубрика «Різне» ( «Без рубрики») додалася до всіх перенесеним записів

Тому йде в MySQL і - важливо! - про всяк випадок зберігаємо БД, щоб потім не було нестерпно боляче, якщо щось піде не так. Хоча нормальні хостери, звичайно, зберігають бекапи, з яких завжди можна відновитися (відкотитися) для попереднього стану бази даних і сайту, взагалі.

У базі даних сайту шукаємо таблицю term_relationships (вона займається тим, що вказує зв'язку між елементами сайту, постами, сторінками, рубриками, мітками і т.д.).

Примітка: Запити, пов'язані з таксономії, новачкам іноді складно складати, тому спочатку просто видалимо непотрібні рядки з таблиці «вручну», а потім подивимося, як це зробити за допомогою SQL-запиту до бази даних.

Видалення рядків з таблиці бази даних

Рубрика «Без рубрики» (або у мене - «Різне») зазвичай має ID = 1, але ви можете перевірити це, подивившись в таблиці terms - рис. 2.

Як швидко видалити «без рубрики» в записах wordpress

У таблиці wp_term_relationships відсортуємо колонку term_taxonomy_id відсортуємо елементи по зростанню (натисніть на заголовок колонки), щоб спочатку виявилися елементи, які відносяться до ID = 1, тобто які відносяться до рубрики «Без рубрики» (у мене, нагадую, це - «Різне»).

У колонці object_id (див. Рис. 3) будуть вказані ідентифікатори елементів - статей і т.п. які віднесені (пов'язані) з елементом в наступному стовпчику.

Як швидко видалити «без рубрики» в записах wordpress

Мал. 3: Відсортовані елементи з ID = 1

Щоб видалити групу рядків, виділіть їх і внизу виберіть дію (рис. 4).

Як швидко видалити «без рубрики» в записах wordpress

Мал. 4: «Відзначити всі» і «Видалити» в таблиці MySQL

А тепер, як і обіцялося, подивимося другий варіант видалення непотрібних зв'язків таксономії WordPress.

Видалення рядків з таблиці бази даних c допомогою SQL-запиту

У мене було всього 92 записи, тому і «вручну» нескладно було видалити рядки. Але якщо записів багато, то простіше, звичайно, видалити рядки з таблиці за допомогою запиту, який перевіряє певну умову (у нас - що ID дорівнює одиниці).

Запит буде приблизно таким:

DELETE FROM wp_term_relationships WHERE term_taxonomy_id = '1'

«Приблизно», тому що у мене, наприклад, стандартний префікс wp_ змінений на інший.

Цей спосіб, звичайно, більш практичний і набагато швидше.

Тепер дивимося статті на сайті (рис. 5): ті ж самі статті, які були на верхньому скріншоті, тепер позбулися непотрібного рубрики.

Як швидко видалити «без рубрики» в записах wordpress

Як швидко видалити «без рубрики» в записах wordpress

Ось і все, що треба було зробити. Тепер для перенесених з іншого сайту WordPress статей не зазначена непотрібна рубрика за замовчуванням «Без рубрики».

Найцікавіше в блозі