скорректируйте представленный код, чтобы чтобы нажатие кнопки для каждой записи вордпресс срабатывало для пользователя только один раз в 15 минут, и контролировалось по Ip и cookies. в базе данных в таблице complaints есть столбец post_id и ip. Чтобы после нажатия под кнопкой появлялась надпись цветом #4CAF50 "Ваш сигнал принят и учтён!", и пропадала по истечении временного ограничения. А при попытке нажать кнопку ничего не происходило и не отправлялось на сервер, а появлялась всплывающая подсказка "Вы сможете отправить новый сигнал о сбое позднее" , и пропадала по истечении временного ограничения, это должно работать для каждого поста отдельно.

<?php
// Получение идентификатора текущего поста
$post_id = get_the_ID();

// Подключение к базе данных
include 'config.php';
$conn = new mysqli($db_config['servername'], $db_config['username'], $db_config['password'], $db_config['dbname']);

// Проверка соединения
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Удаление записей старше 24 часов
$sql = "DELETE FROM complaints WHERE timestamp < DATE_SUB(NOW(), INTERVAL 1 DAY)";
if ($conn->query($sql) !== TRUE) {
    echo "Error deleting old records: " . $conn->error;
}

// Обработчик события на кнопку
if (isset($_POST['complaint-button'])) {
    // Добавление записи в базу данных
    $data = "Button clicked for post $post_id";
    $stmt = $conn->prepare("INSERT INTO complaints (post_id, data) VALUES (?, ?)");
    $stmt->bind_param("is", $post_id, $data);
    if ($stmt->execute() === TRUE) {
        // Отправка кода перенаправления на текущую страницу
        header("Location: " . $_SERVER['REQUEST_URI']);
        exit();
    } else {
        echo "Error adding record: " . $conn->error;
    }
    $stmt->close();
}

// Получение количества жалоб за последний час для текущего поста
$stmt = $conn->prepare("SELECT COUNT(*) as count FROM complaints WHERE post_id = ? AND timestamp >= DATE_SUB(NOW(), INTERVAL 1 HOUR)");
$stmt->bind_param("i", $post_id);
$stmt->execute();
$stmt->bind_result($last_hour_count);
$stmt->fetch();
$stmt->close();

// Получение количества жалоб за последние 24 часа для текущего поста
$stmt = $conn->prepare("SELECT COUNT(*) as count FROM complaints WHERE post_id = ? AND timestamp >= DATE_SUB(NOW(), INTERVAL 24 HOUR)");
$stmt->bind_param("i", $post_id);
$stmt->execute();
$stmt->bind_result($last_day_count);
$stmt->fetch();
$stmt->close();

// Определение состояния на основе количества жалоб
if ($last_day_count <= 5) {
    $status_text = "Успешный ответ";
    $status_class = "bcc";
} elseif ($last_day_count <= 10) {
    $status_text = "Перебои в работе";
    $status_class = "bcc1";
} elseif ($last_day_count <= 20) {
    $status_text = "Возможно сбой";
    $status_class = "bcc2";
} else {
    $status_text = "Массовый сбой";
    $status_class = "bcc3";
}

// Генерация HTML-кода для блока с жалобами
echo "<p class='complain'>за последний час: <span id='last-hour-count'><span class='ttl'>$last_hour_count</span></span></p>";
echo "<p class='complain'>за последние 24 часа: <span id='last-day-count'><span class='ttl'>$last_day_count</span></span></p>";
echo "<p class='complaint'>*на основе жалоб пользователей</p>";
echo "<form method='post'><button type='submit' name='complaint-button'>Отправить сигнал о сбое</button></form>";

// Закрытие соединения с базой данных
$conn->close();
?>