В WordPress важной задачей для администраторов и редакторов является анализ структуры контента. Особенно актуально получать отчеты по типам записей — сколько записей опубликовано, сколько черновиков, какая динамика изменения контента. В стандартной админке WordPress такой функционал ограничен, и чтобы сделать удобную и информативную отчетность, часто приходится использовать плагины или писать собственный код.
Почему важна отчетность по типам записей в WordPress
Типы записей (post types) — это база контента в WordPress: записи, страницы, а также кастомные типы, например, товары, проекты, отзывы. Отчетность позволяет:
- Понять структуру сайта и распределение контента.
- Оптимизировать работу редакторов, контролировать наполнение.
- Анализировать активность по созданию и изменению разных типов записей.
- Автоматизировать отчеты для клиентов или руководства.
Без отчетов легко упустить проблемы с наполнением или неэффективным использованием типов записей.
Использование плагинов для отчетности по типам записей в WordPress
Для тех, кто не хочет писать код, существуют готовые решения:
1. WP-Statistics с кастомизацией
Плагин WP-Statistics позволяет собирать статистику, включая просмотры и активности по записям. Для отчетности по типам записей его можно расширить через хуки, чтобы фильтровать данные.
2. Admin Columns Pro
Admin Columns Pro — плагин для настройки столбцов в админке, можно добавить фильтры и колонки с количеством записей по типам. Полезен для визуального контроля и быстрой аналитики.
3. Custom Reports by WPGPT
Плагин WPGPT умеет создавать произвольные отчеты на основе данных сайта, включая данные по типам записей. Можно настроить вывод в виде таблиц и графиков.
Создание собственного отчета по типам записей с помощью кода
Если нужен точный и кастомный отчет, лучше написать свой код с использованием WP_Query и админских хуков. Рассмотрим пример функции, которая выводит количество записей по всем зарегистрированным типам.
function wpstuff_get_post_type_report() {
$post_types = get_post_types(['public' => true], 'objects');
$report = [];
foreach ($post_types as $post_type) {
$count = wp_count_posts($post_type->name);
$report[$post_type->label] = $count->publish;
}
return $report;
}Эта функция возвращает массив с количеством опубликованных записей по каждому публичному типу. Далее можно вывести отчет в админке:
function wpstuff_render_post_type_report_page() {
$report = wpstuff_get_post_type_report();
echo '<h2>Отчет по типам записей</h2>';
echo '<table class="wp-list-table widefat fixed">';
echo '<thead><tr><th>Тип записи</th><th>Опубликовано</th></tr></thead>';
echo '<tbody>';
foreach ($report as $type => $count) {
echo "<tr><td>{$type}</td><td>{$count}</td></tr>";
}
echo '</tbody></table>';
}Чтобы добавить страницу с отчетом в админку, используем хук:
function wpstuff_add_report_menu() {
add_menu_page(
'Отчет по типам записей',
'Отчет контента',
'manage_options',
'wpstuff-post-type-report',
'wpstuff_render_post_type_report_page',
'dashicons-analytics',
20
);
}
add_action('admin_menu', 'wpstuff_add_report_menu');Расширение отчета: фильтрация по статусам и датам
Для полноценного анализа полезно учитывать статусы (черновики, на рассмотрении) и временные фильтры. Можно расширить функцию, добавив параметры:
function wpstuff_get_post_type_report_extended($post_status = 'publish', $date_query = []) {
$post_types = get_post_types(['public' => true], 'objects');
$report = [];
foreach ($post_types as $post_type) {
$args = [
'post_type' => $post_type->name,
'post_status' => $post_status,
'date_query' => $date_query,
'fields' => 'ids',
'nopaging' => true
];
$query = new WP_Query($args);
$report[$post_type->label] = $query->found_posts;
}
return $report;
}Пример вызова для отчетности по черновикам за последнюю неделю:
$report = wpstuff_get_post_type_report_extended('draft', [
[
'after' => '1 week ago'
]
]);Визуализация отчета с использованием графиков
Для удобства анализа можно подключить библиотеки, например Chart.js, чтобы строить графики по данным отчетов.
Пример вывода простого столбчатого графика:
<canvas id="wpstuffChart" width="600" height="400"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
const ctx = document.getElementById('wpstuffChart').getContext('2d');
const chart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["Записи", "Страницы", "Проекты"], // вставьте динамически
datasets: [{
label: 'Количество записей',
data: [100, 50, 20], // динамические данные
backgroundColor: 'rgba(54, 162, 235, 0.5)',
}]
},
options: {
scales: {
y: { beginAtZero: true }
}
}
});
</script>В реальном решении данные можно передавать из PHP в JS через wp_localize_script.
Автоматизация отчетов и экспорт
Чтобы не заходить вручную, можно настроить автоматическую отправку отчётов с помощью wp_cron и отправлять их по email или сохранять в CSV.
Пример функции экспорта в CSV:
function wpstuff_export_post_type_report_csv($report) {
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="post_type_report.csv"');
$output = fopen('php://output', 'w');
fputcsv($output, ['Тип записи', 'Опубликовано']);
foreach ($report as $type => $count) {
fputcsv($output, [$type, $count]);
}
fclose($output);
exit;
}Идеальный вариант — продумать интерфейс в админке для скачивания отчетов с нужными фильтрами.
Заключение
Отчетность по типам записей — мощный инструмент для контроля и анализа контента в WordPress. Сочетание готовых плагинов и собственного кода позволяет построить гибкое решение под любые задачи. Используйте описанные подходы для повышения эффективности вашего сайта и удобства работы с контентом.