В процессе работы с WordPress иногда возникают ситуации, когда записи (посты) оказываются заблокированными или застрявшими в состоянии редактирования. Это может случиться, если пользователь не вышел из редактора корректно, или из-за сбоев в плагинах и кэшировании. Такие заблокированные посты не позволяют другим пользователям начать их редактировать, что вызывает неудобства в командной работе. В этой статье рассмотрим, как эффективно удалить или разблокировать такие посты с помощью различных методов.
Что такое блокировка постов в WordPress и почему она возникает
WordPress использует механизм блокировки (post locking), чтобы предотвратить одновременное редактирование одной записи несколькими пользователями. При открытии поста для редактирования в базе данных создаётся временная блокировка, которая автоматически снимается после выхода или по таймауту. Однако иногда блокировка не снимается из-за ошибок — например, если браузер закрылся некорректно или произошёл сбой сервера.
В результате пост считается «заблокированным» и недоступным для редактирования другими пользователями. Пользователь видит сообщение «Этот пост в настоящее время редактируется другим пользователем».
Если вы администратор сайта, важно знать, как вручную снять эти блокировки или удалить «заблокированные» посты, чтобы восстановить нормальную работу редакторов.
Как проверить заблокированные посты через базу данных
WordPress хранит информацию о блокировках в метаданных поста с ключом _edit_lock. Значение — это строка с временной меткой и ID пользователя, который заблокировал запись.
Чтобы найти посты с активной блокировкой, можно выполнить SQL-запрос напрямую в базе данных MySQL через phpMyAdmin или консоль:
SELECT post_id, meta_value FROM wp_postmeta WHERE meta_key = '_edit_lock';
Здесь post_id — ID записи, а meta_value — данные блокировки. Если блокировка старая (например, больше часа), её можно безопасно удалить.
Для удаления блокировки конкретного поста выполните:
DELETE FROM wp_postmeta WHERE post_id = 123 AND meta_key = '_edit_lock';
Замените 123 на ID нужного поста.
Автоматическое удаление блокировок с помощью WP-CLI
WP-CLI — мощный инструмент командной строки для WordPress. Он позволяет быстро управлять сайтом без доступа к админке.
Для удаления всех блокировок используйте команду:
wp post meta delete --all _edit_lock
Эта команда удалит все метаданные с ключом _edit_lock для всех постов, тем самым разблокировав их.
Если вы хотите удалить блокировку конкретного поста, выполните:
wp post meta delete 123 _edit_lock
Где 123 — ID поста.
WP-CLI подходит для системных администраторов и разработчиков, которые имеют SSH-доступ к серверу.
Использование пользовательской функции для удаления блокировки
Если нет доступа к базе напрямую или WP-CLI, можно создать PHP-функцию, которую временно добавите в файл темы functions.php или в плагин.
Пример функции для удаления блокировки по ID поста:
function wpmobile_remove_post_lock($post_id) {
if (delete_post_meta($post_id, '_edit_lock')) {
return true;
}
return false;
}
Использование:
if (wpmobile_remove_post_lock(123)) {
echo 'Блокировка удалена';
} else {
echo 'Блокировка не найдена';
}
Эту функцию удобно использовать для автоматизации или создания админпанели с кнопкой снятия блокировок.
Удаление заблокированных постов: осторожность и рекомендации
Иногда заблокированные посты — это незавершённые черновики или устаревший контент, который необходимо удалить.
Для удаления поста используйте стандартную функцию WordPress:
wp_delete_post($post_id, true); // true — безвозвратное удаление
Или через WP-CLI:
wp post delete 123 --force
Однако перед удалением всегда делайте резервные копии базы данных.
Если пост застрял в статусе «заблокирован», но нужен, лучше сначала снять блокировку, а не удалять запись.
Полезные плагины для управления блокировками и постами
Существуют плагины, которые помогают управлять блокировками и предотвращать подобные проблемы:
- WP Edit Lock Manager — позволяет администратору видеть и снимать все активные блокировки постов.
- PublishPress — расширенный редактор и менеджер статусов с поддержкой работы нескольких редакторов.
- Admin Tools — набор инструментов для управления сайтом, включая очистку метаданных.
Использование плагинов удобно для тех, кто не хочет работать напрямую с кодом или базой данных.
Заключение по теме удаления заблокированных постов
Заблокированные посты — распространённая техническая проблема в WordPress, особенно на сайтах с несколькими редакторами. Знание механизмов блокировки и способов их снятия поможет быстро восстанавливать рабочий процесс.
Мы рассмотрели поиск и удаление блокировок через базу данных, WP-CLI, а также создание пользовательских функций. Для администраторов также доступны плагины для упрощения этих задач. Важно подходить к удалению постов аккуратно и всегда иметь резервные копии.