Warum Custom Reporting? Weil Standarddaten nichts sagen
Du willst nicht wissen, wie viele Seitenaufrufe Du hattest.
Du willst wissen:
- Welche Anfragen wurden wie bearbeitet
- Wer war wie aktiv
- Welche Produkte liefen wo wie gut
- Wie lange Prozesse intern brauchen
Mit Standard-Plugins kommst Du da nicht weit.
Aber mit einem eigenen Analyse-Plugin schon.
Struktur: CPTs + benutzerdefinierte Daten als Basis
Du nutzt WordPress für CRM, Support, Angebote oder Bestellungen?
Dann hast Du schon die Daten.
Du musst sie nur auswerten.
Beispielhafte Felder:
CPT | Felder |
---|---|
angebot | status , erstellt_am , freigegeben_am , summe_netto |
support | bearbeiter_id , status , zeit_erstellt , zeit_geschlossen |
Reporting-Seite als Admin-Menü
add_action('admin_menu', function() {
add_menu_page('Auswertungen', 'Reporting', 'manage_options', 'ds_reporting', 'ds_reporting_page');
});
Analyse-Logik: Beispiel Angebotsdurchlaufzeit
function ds_reporting_page() {
global $wpdb;
$result = $wpdb->get_results("
SELECT
pm1.post_id,
MIN(CASE WHEN pm1.meta_key = 'erstellt_am' THEN pm1.meta_value END) AS erstellt,
MIN(CASE WHEN pm2.meta_key = 'freigegeben_am' THEN pm2.meta_value END) AS freigegeben
FROM {$wpdb->postmeta} pm1
JOIN {$wpdb->postmeta} pm2 ON pm1.post_id = pm2.post_id
WHERE pm1.meta_key IN ('erstellt_am') AND pm2.meta_key IN ('freigegeben_am')
GROUP BY pm1.post_id
");
echo '<h2>Angebotsdurchlaufzeiten</h2>';
echo '<table><tr><th>ID</th><th>Erstellt</th><th>Freigegeben</th><th>Dauer (Tage)</th></tr>';
foreach ($result as $row) {
$tage = (strtotime($row->freigegeben) - strtotime($row->erstellt)) / 86400;
echo "<tr><td>{$row->post_id}</td><td>{$row->erstellt}</td><td>{$row->freigegeben}</td><td>" . round($tage, 1) . "</td></tr>";
}
echo '</table>';
}
Erweiterung: Filter nach Zeitraum
<form method="get">
<input type="hidden" name="page" value="ds_reporting">
<label>Von: <input type="date" name="von" value="<?php echo esc_attr($_GET['von'] ?? ''); ?>"></label>
<label>Bis: <input type="date" name="bis" value="<?php echo esc_attr($_GET['bis'] ?? ''); ?>"></label>
<button type="submit">Filtern</button>
</form>
Dann $_GET['von']
und $_GET['bis']
im SQL-Query berücksichtigen.
Visualisierung per Diagramm
Du kannst z. B. chart.js
über das Admin-Backend einbinden.
add_action('admin_enqueue_scripts', function($hook) {
if ($hook === 'toplevel_page_ds_reporting') {
wp_enqueue_script('chartjs', 'https://cdn.jsdelivr.net/npm/chart.js', [], null);
}
});
Dann im HTML:
<canvas id="dsChart" width="400" height="200"></canvas>
<script>
const ctx = document.getElementById('dsChart');
new Chart(ctx, {
type: 'bar',
data: {
labels: ['KW14', 'KW15', 'KW16'],
datasets: [{
label: 'Durchschnittliche Angebotszeit (Tage)',
data: [3.5, 2.2, 4.1]
}]
}
});
</script>
Weitere Metriken für KMU-Prozesse
Analyse | Aussage |
---|---|
⏱ Angebotslaufzeit | Reaktionsgeschwindigkeit im Vertrieb |
📥 Anzahl neuer Anfragen/Woche | Kapazitätsplanung |
💬 Tickets pro Bearbeiter | Auslastung im Support |
📈 Umsatz nach Kunde / Woche | Vertriebswertanalyse |
⏳ Auftrag → Lieferung | Prozessdauer Produktion / Logistik |
Mein Fazit
Wenn Du schon Daten im WordPress hast, dann wert sie auch aus.
Du brauchst keine BI-Suite – Du brauchst eine saubere Reporting-Seite.
Mit PHP, SQL und etwas JS baust Du Dir genau das, was Du brauchst.
Wenn Du willst, helf ich Dir dabei. Dann siehst Du, was vorher nur Bauchgefühl war.
No responses yet