Post Wall — это полноценный WordPress плагин версии 2.2.2, предназначенный для визуализации активности публикаций на сайте в виде интерактивной календарной диаграммы (heat map). Плагин создает кафельную стенку постов, отображающую интенсивность публикаций по дням с возможностью детализации по месяцам и годам.
Плагин позволяет администраторам и посетителям сайта наглядно видеть:
- Динамику публикаций контента за различные периоды
- Наиболее активные и наименее активные дни
- Временные тренды в создании контента
- Быстро переходить к архивам постов за конкретные периоды
- Класс PostWall: Основной класс плагина, реализующий паттерн Singleton
- Константы:
POSTWALL_PLUGIN_PATH: Абсолютный путь к папке плагинаPOSTWALL_PLUGIN_URL: URL к папке плагинаPOSTWALL_PLUGIN_VERSION: Версия плагина (2.2.0)
Класс PostWall_API - центральный компонент для работы с данными:
- Получение постов через WordPress REST API
- Прямой доступ к базе данных для текущего сайта
- Кэширование данных (время жизни: 3600 секунд)
- Поддержка фильтрации по годам и периодам
- Обработка ошибок API
- Проверка доступности внешних API
Ключевые методы:
get_posts_from_site()- получение постов с внешних сайтовget_posts_from_current_site()- получение постов с текущего сайтаget_post_stats()- получение статистики по днямget_available_years()- получение списка доступных годовcheck_api_availability()- проверка доступности API
Класс PostWall_Ajax_Handler - обработка асинхронных запросов:
- Безопасная валидация входных данных
- Проверка nonce токенов для защиты от CSRF
- Передача данных о постах во фронтенд
- Обработка ошибок и возврат JSON ответов
- Регистрация динамического блока
postwall/post-wall - Атрибуты блока:
siteUrl,headingTag,selectedYear - Серверный рендеринг HTML разметки
- Извлечение доменов из URL
- Генерация локализованных заголовков
Основной файл (build/frontend.js):
- Класс PostWall: Главный класс для управления визуализацией
- Функциональность:
- Интерактивная календарная сетка
- AJAX загрузка данных
- Обработка кликов по дням и месяцам
- Генерация URL для архивов
- Локализованные подсказки
- Поддержка темной темы
- Адаптивный дизайн (CSS Grid)
- Цветовая схема для уровней активности (0-4)
- Поддержка темной темы
- Hover эффекты
- Responsive breakpoints для мобильных устройств
- Русский (ru_RU): Полная локализация с учетом форм множественного числа
- Английский (en_US): Базовый язык интерфейса
postwall.pot- шаблон для переводовpostwall-ru_RU.po/.mo- русские переводыpostwall-en_US.po/.mo- английские переводы
- Формат отображения: Сетка месяцев с календарем 7×6 (неделя × неделя в месяце)
- Уровни активности: 5 уровней (0-4) на основе количества постов за день
- Цветовая схема:
- Уровень 0: Отсутствие постов (светло-зеленый)
- Уровень 1: 1 пост (зеленый)
- Уровень 2: 2 поста (темно-зеленый)
- Уровень 3: 3-4 поста (насыщенный зеленый)
- Уровень 4: 5+ постов (темно-насыщенный зеленый)
- Последние 12 месяцев: Динамический период от текущей даты
- Конкретный год: Выбор из доступных лет публикаций
- Автоматическая адаптация: Обновление заголовков и данных в зависимости от выбранного периода
- Кликабельные дни: Переход к архиву постов за конкретную дату
- Кликабельные месяцы: Переход к архиву постов за месяц
- Подсказки (tooltips): Отображение количества постов и их заголовков при наведении
- Если пост один: заголовок отображается в одну строчку с датой и количеством
- Если постов несколько: заголовки отображаются друг над другом
- Адаптивные ссылки: Генерация правильных URL для архивов WordPress
- Настройка заголовков: Выбор тега заголовка (h1-h6, div)
- Динамические заголовки: Автоматическое формирование с доменом сайта
- Локализация интерфейса: Полный перевод на поддерживаемые языки
- Кэширование: Автоматическое кэширование данных на 1 час
- Версионирование: Использование filemtime для обновления кэша браузера
- Оптимизация запросов: Минимизация количества API вызовов
- Ленивая загрузка: Загрузка данных только при необходимости
- CSRF защита: Проверка nonce токенов
- Валидация данных: Проверка форматов URL и годов
- Санитизация: Очистка всех входных данных
- Обработка ошибок: Безопасная обработка API ошибок
- WordPress: 5.0+
- PHP: 7.4+
- Gutenberg: Поддержка современного редактора блоков
- REST API: Интеграция с WordPress API
- Темы: Совместимость с большинством WordPress тем
При добавлении блока в редактор доступны настройки:
- URL сайта: Поле для ввода адреса сайта для анализа
- Год: Селектор выбора периода (последние 12 месяцев или конкретный год)
- Тег заголовка: Выбор HTML тега для заголовка блока
- Заголовок: Автоматически генерируемый с названием сайта и периодом
- Календарная сетка: Визуальное представление активности публикаций
- Интерактивные элементы: Кликабельные дни и месяцы
- Подсказки: Информация при наведении на дни
- Состояния загрузки: Индикаторы загрузки данных
postwall/
├── postwall.php # Основной файл плагина
├── sol.md # Инструкция по разработке
├── pz.md # Пояснительная записка (этот файл)
├── includes/ # Вспомогательные PHP классы
│ ├── class-assets-manager.php # Менеджер ресурсов
│ ├── class-ajax-handler.php # AJAX обработчики
│ ├── class-postwall-api.php # API для работы с данными
│ └── block-registration.php # Регистрация Gutenberg блока
├── assets/ # Исходные файлы
│ ├── css/ # Стили
│ │ └── frontend.css
│ └── js/ # JavaScript
│ └── frontend.js
├── build/ # Собранные файлы
│ ├── frontend.js # Собранный фронтенд JavaScript
│ ├── index.js # JavaScript для Gutenberg редактора
│ ├── style-index.css # Собранные стили
│ └── index.css # Стили для редактора
└── languages/ # Файлы локализации
├── postwall.pot # Шаблон переводов
├── postwall-ru_RU.po # Русские переводы
├── postwall-ru_RU.mo # Скомпилированные русские переводы
├── postwall-en_US.po # Английские переводы
└── postwall-en_US.mo # Скомпилированные английские переводы
Плагин взаимодействует с WordPress REST API для получения данных о постах:
- Endpoint:
/wp-json/wp/v2/posts - Параметры: Фильтрация по дате (
after,before), количество (per_page) - Обработка: Проверка статуса ответа, парсинг JSON данных
init- регистрация блока и ресурсовenqueue_block_editor_assets- подключение ресурсов редактораwp_enqueue_scripts- подключение фронтенд ресурсовwp_ajax_postwall_get_post_data- AJAX обработчик для авторизованныхwp_ajax_nopriv_postwall_get_post_data- AJAX обработчик для всех пользователей
- PSR-4 совместимость для автозагрузки
- WordPress Coding Standards для PHP кода
- ECMAScript 6+ для JavaScript
- CSS Grid и Flexbox для макетов
- JSDoc документация для JavaScript функций
- Обработка всех возможных ошибок API
- Валидация входных данных на всех уровнях
- Graceful degradation при недоступности внешних ресурсов
- Информативные сообщения об ошибках для пользователей
- WordPress: 5.0 или выше
- PHP: 7.4 или выше
- MySQL: 5.6 или выше
- JavaScript: Включен в браузере
- REST API: Должен быть доступен на анализируемых сайтах
- PHP memory_limit: 128MB или выше
- WordPress кэширование: Рекомендуется для производительности
- HTTPS: Для безопасной работы с внешними API
- Gzip сжатие: Для оптимизации загрузки ресурсов
- v1.0.0: Базовая функциональность отображения календаря
- v2.0.0: Переход на Gutenberg блоки, улучшенная архитектура
- v2.1.2: Добавление выбора года
- v2.2.0: Кликабельные месяцы, улучшенная локализация
- v2.2.1: Исправление бага с отображением месяцев в календаре (feb/mar issue)
- v2.2.2: Добавление заголовков постов в тултипы
- Поддержка дополнительных языков
- Настройка цветовых схем
- Экспорт данных в различных форматах
Добавленная функциональность:
- Заголовки постов в тултипах: В подсказках при наведении на день теперь отображаются не только дата и количество постов, но и заголовки самих постов
- Умное форматирование:
- Если пост один - заголовок отображается в одну строчку с датой и количеством
- Если постов несколько - заголовки отображаются друг над другом для удобства чтения
- Улучшенная структура данных: Изменена структура данных API для хранения заголовков постов вместе с количеством
- Затронутые файлы:
includes/class-postwall-api.php- изменена структура возвращаемых данных статистикиassets/js/frontend.js- обновлен метод formatTooltip() и обработка данныхbuild/frontend.js- обновлен собранный файл
- Обратная совместимость: Код поддерживает как новую, так и старую структуру данных для плавного перехода
Исправленные баги:
- Критический баг с отображением месяцев: Исправлена проблема, когда в календаре вместо февраля второй раз отображался март
- Причина бага: Метод JavaScript
setMonth()ведет себя непредсказуемо при переходе через год (например, с декабря на январь) - Решение: Заменено использование
setMonth()на создание новых объектов Date черезnew Date(year, month, 1) - Затронутые файлы:
assets/js/frontend.js- исходный кодbuild/frontend.js- собранный файл
- Влияние: Календарь теперь корректно отображает все 12 месяцев без дублирования
- Тестирование: Проведено автоматическое тестирование с проверкой на дубли месяцев
- CSRF защита: Все AJAX запросы защищены nonce токенами
- SQL Injection: Использование подготовленных запросов WordPress
- XSS защита: Санитизация всех выходных данных
- Валидация данных: Проверка всех входных параметров
- WordPress Plugin Guidelines: Соблюдение официальных рекомендаций
- GDPR: Плагин не собирает персональные данные
- Accessibility: Поддержка клавиатурной навигации и скринридеров
- Загрузить папку плагина в
/wp-content/plugins/ - Активировать плагин через админ-панель WordPress
- Блок "Post Wall" станет доступен в редакторе Gutenberg
- Добавить блок "Post Wall" на страницу
- В настройках блока указать URL сайта для анализа
- Выбрать период отображения (последние 12 месяцев или конкретный год)
- Настроить внешний вид заголовка при необходимости
- Мониторинг активности: Отслеживание интенсивности публикаций
- Планирование контента: Анализ лучших периодов для публикаций
- Презентация статистики: Демонстрация активности сайта клиентам
- Архивный обзор: Быстрый доступ к публикациям за определенные периоды
- Блог о путешествиях: отслеживание частоты публикации отчетов
- Новостной сайт: мониторинг ежедневной активности журналистов
- Корпоративный блог: анализ контент-стратегии
- Портфолио: демонстрация регулярности обновлений
Post Wall v2.2.0 представляет собой комплексное решение для визуализации активности публикаций на WordPress сайтах. Плагин сочетает в себе современные технологии веб-разработки, продуманную архитектуру и удобный пользовательский интерфейс. Благодаря поддержке Gutenberg блоков, полной локализации и оптимизированной производительности, плагин подходит как для личных блогов, так и для корпоративных сайтов.
Проект демонстрирует современный подход к разработке WordPress плагинов с использованием лучших практик программирования, обеспечением безопасности и вниманием к пользовательскому опыту.
Разработчик: Владимир Бычко Email: vladimir@bychko.ru Веб-сайт: https://bychko.ru Версия документа: 1.0 Дата: 19 ноября 2025