Диагностика проблемы: почему в квизе появляются пустые вопросы
Пустые вопросы в квизах WordPress часто возникают из-за некорректного сохранения данных, ошибок в кастомных полях или сбоя в плагинах для создания опросов. Это снижает качество пользовательского опыта и увеличивает нагрузку на базу данных.
Чтобы проверить наличие пустых вопросов, откройте базу данных через phpMyAdmin или любой другой инструмент и выполните запрос к таблице, где хранятся вопросы (например, wp_quiz_questions):
SELECT * FROM wp_quiz_questions WHERE question_text = '' OR question_text IS NULL;Если запрос возвращает записи, в квизе есть пустые вопросы, которые надо удалить для корректной работы.
Пошаговое решение: удаление пустых вопросов с помощью кода
1. Создание функции для удаления пустых вопросов
Добавьте следующий код в файл functions.php вашей темы или создайте небольшой плагин для удобства:
function wpquiz_remove_empty_questions() {
global $wpdb;
$table = $wpdb->prefix . 'quiz_questions';
// Проверяем, есть ли пустые вопросы
$empty_questions = $wpdb->get_results("SELECT id FROM {$table} WHERE question_text = '' OR question_text IS NULL");
if (empty($empty_questions)) {
return 'Нет пустых вопросов для удаления.';
}
foreach ($empty_questions as $question) {
$wpdb->delete($table, ['id' => $question->id]);
}
return count($empty_questions) . ' пустых вопросов удалено.';
}2. Запуск функции вручную
Для запуска функции временно добавьте в functions.php следующий код:
add_action('admin_init', function() {
if (current_user_can('manage_options') && isset($_GET['delete_empty_questions'])) {
echo wpquiz_remove_empty_questions();
exit;
}
});Затем зайдите в админку WordPress по адресу https://your-site.com/wp-admin/?delete_empty_questions=1. Вы увидите сообщение о количестве удалённых вопросов.
Проверка результата после внедрения
Повторно выполните SQL-запрос из раздела диагностики:
SELECT * FROM wp_quiz_questions WHERE question_text = '' OR question_text IS NULL;Он не должен возвращать записей. Также проверьте визуально интерфейс квиза — пустые вопросы должны исчезнуть.
Частые ошибки и как их исправить
- Неверное имя таблицы: плагины для квизов создают таблицы с разными префиксами и названиями. Уточните название таблицы через phpMyAdmin или документацию плагина.
- Отсутствие прав на удаление: убедитесь, что пользователь с ролью администратора запускает функцию.
- Кэширование: если после удаления пустые вопросы всё ещё видны, очистите кэш сайта и браузера.
- Проблемы с транзакциями базы данных: если сайт использует репликацию или внешние кеши, синхронизируйте изменения.
Практические советы по безопасности и производительности
- Не запускайте функцию удаления на продакшн-сайте без резервного копирования базы данных.
- Для больших баз данных используйте пакетное удаление по частям, чтобы избежать таймаутов.
- Делайте проверку на наличие пустых вопросов регулярно — например, планируйте задачу WP-Cron с похожей функцией.
- Используйте проверенные плагины и избегайте прямых SQL-запросов в публичных местах без проверок.
Альтернативы: удаление через плагины и ручное редактирование
| Метод | Плюсы | Минусы |
|---|---|---|
| Ручное удаление через phpMyAdmin | Полный контроль, быстро | Риск ошибок, требует навыков SQL |
| Использование кода (функция) | Автоматизация, можно запускать периодически | Нужно писать и тестировать код |
| Плагины для очистки базы данных | Удобство, универсальность | Могут не поддерживать кастомные таблицы квизов |