Ihr bewährter Begleiter.
Viele Nutzer schätzen die vertraute Umgebung des Classic-Editors, die eine einfache und schnelle Bearbeitung ermöglicht.
Mehr Funktionen, mehr Möglichkeiten.
Der Advanced Editor erweitert den Funktionsumfang des Classic-Editors und ermöglicht es, Inhalte noch effektiver zu bearbeiten.
Der Classic-Editor für alle.
Der Classic-Editor zeichnet sich durch Stabilität und Zuverlässigkeit aus, was für professionellen Anwender von Bedeutung ist.
Der Advanced Editor für kreative Köpfe.
Mit dem Advanced Editor können Designer und
Content Creatoren kreative Ideen umsetzten.
Das 'Click & Bounce Counter' Plug-in ist ein praktisches Tool für WordPress-Seitenbetreiber, die das Nutzerverhalten besser verstehen möchten. Es erfasst die gesamte Klickzahl sowie Absprünge innerhalb der ersten 30 Sekunden nach dem Seitenaufruf. Entwickelt als Ergänzung zum präzisen Tracking von Statify, das durch Zeitverzögerung und Scrolltiefe echtes Interesse erkennt, liefert 'Click & Bounce Counter' eine wertvolle, ergänzende Perspektive.
Statify-Optimierung für rationelles Tracking:
- IP-Ausschlusslogik für Statify (für Entwickler geeignet)
Dieser Beitrag erklärt, wie Admin-IP-Adressen automatisch vom Tracking ausgeschlossen werden. So kann die eigene Website in allen Browsern getestet werden, ohne in die Besucherstatistik von Statify einzufließen. - Effektives Tracking mit Statify: Zeitverzögerung + Scrolltiefe
Hier geht es um die Erweiterung der Statify-Tracking-Funktionen, einschließlich der Möglichkeit, Zeitverzögerungen und Scrolltiefe zu messen, um tiefergehende Einblicke in das Nutzerverhalten zu erhalten.
Erweiterungen für effektives Tracking:
- Der Beitrag hier:
Click & Bounce Counter und Statify: im Duo für effektives Tracking
Eine Anleitung, wie die Kombination von Statify und dem 'Click & Bounce Counter' Plug-in zu einem leistungsstarken Tracking-System führt. - Verweildauer der Erweiterung 'Visit Duration'
Der Artikel zeigt, wie die Verweildauer von Besucher gemessen werden kann – ohne Cookies und ohne zusätzliche Datenbanktabellen.
Inhaltsverzeichnis
'Click & Bounce Counter' und Statify mit Zeitverzögerung + Scrolltiefe
Mit der Erweiterung von Statify um die Zeitverzögerung und die Messung der Scrolltiefe werden wertvolle Daten über das tatsächliche Besucherverhalten gewonnen. Durch die Verzögerung von 10 Sekunden und das Erfassen einer Scrolltiefe von beispielsweise mindestens 50 % stellt Statify sicher, dass nur echte Besucher in die Statistik einfließen – also diejenigen, die sich tatsächlich für die Inhalte interessieren und nicht nur kurz klicken oder schnell wieder abspringen. Oberflächliche Klicks oder Besucher, die kein Interesse zeigen, werden dadurch herausgefiltert.
Das Dashboard-Widget Klickzähler und Absprungrate im 'Click & Bounce Counter' Plug-in ergänzt diese Daten sinnvoll: Es zählt die Gesamtzahl der Klicks und zeigt die Absprünge separat an, wenn ein Besucher innerhalb von 30 Sekunden die Seite wieder verlässt. Dadurch lässt sich die tatsächliche Klickrate im Vergleich zur Absprungrate direkt einsehen. Zusammen mit der Statify-Zeitverzögerung + Scrolltiefe ergibt sich so ein erweiterter Blick auf das Verhalten der Besucher, einschließlich derjenigen, die etwas später, aber dennoch vorzeitig, die Seite verlassen.
Mit diesen beiden Funktionen – Statify für echtes Interesse und 'Click & Bounce Counter' für das schnelle Abspringen – entsteht ein vollständiges Bild über die Qualität und das Engagement der Besucher: Ein Vergleich zwischen den tatsächlichen Besuchern, die durch das verzögerte Statify-Tracking erfasst werden, und den Besuchern, die durch 'Click & Bounce Counter' als Absprünge innerhalb von 30 Sekunden registriert werden. Diese Kombination liefert aussagekräftige Erkenntnisse über das Interesse und die Interaktion der Besucher und ermöglicht es, Inhalte und Benutzererfahrung gezielt zu optimieren.
Wichtige Merkmale des Plug-ins:
- Klick- und Absprungrate-Tracking: Das Plugin erfasst die Anzahl der Klicks und Absprünge von Besuchern, die innerhalb von 30 Sekunden nach dem Seitenbesuch die Website verlassen.
- Automatische Ausschlüsse: Administratoren und bekannte Bots oder Crawler werden bei der Zählung ignoriert, um präzise Ergebnisse zu gewährleisten.
- Visualisierung im Dashboard: Ein übersichtliches Widget im WordPress-Dashboard zeigt die Statistiken sowohl als Zahlen als auch als Balkendiagramm an.
- Einfache Steuerung: Über das Dashboard können die Zähler zurückgesetzt oder aktualisiert werden.
- Integration und Performance: Das Plugin nutzt eine Bot-Erkennungsfunktion und Caching, um Anfragen effizient zu verarbeiten und die Geschwindigkeit nicht zu beeinträchtigen.
- Automatische Aktualisierung: Klick- und Absprungsdaten werden durch Benutzeraktionen oder Sichtbarkeitswechsel automatisch im Hintergrund aktualisiert.
- WordPress-Multisite-Umgebung: Das Plug-in 'Click & Bounce Counter' ist aktuell nicht für eine WordPress-Multisite-Umgebung ausgelegt. In einer Multisite-Installation müsste das Plug-in angepasst werden, um Optionen und Tracking korrekt für alle Sites zu verwalten. Das Plug-in kann auf der Hauptseite einer Multisite-Installation aktiviert und genutzt werden. Beachte jedoch, dass es nicht für die Verwendung auf einzelnen Seiten innerhalb eines Multisite-Netzwerks entwickelt wurde.Einfache Implementierung und intuitive Verwendung ohne tiefgehende technische Kenntnisse.
Insgesamt bietet das Plug-in in Verbindung mit Statify und dessen Zeitverzögerung und Scrolltiefe eine einfache und informative Lösung zur noch besseren Einschätzung der Seiteninteraktionen.
Statify ermöglicht als minimalistisches Tracking-Tool das Erfassen von Besuchen auf der eigenen Website – ganz ohne Cookies und externe Datenspeicherung. In der hier vorgestellten Methode ... weiterlesen
'Click & Bounce Counter' Plug-in
Version 1.0.0: Ein Dashboard-Widget zeigt die Statistik und zusätzlich in einem Balkendiagramm an. Admins sind dem Tracking ausgeschlossen.
Plug-in: click-bounce-counter herunterladen und im Dashboard unter Plugins > Neues Plugin hinzufügen die Option Plugin hochladen wählen. Anschließend das Plug-in aktivieren. Es sind keine weiteren Einstellungen erforderlich, und das Widget wird im Dashboard angezeigt.
/wp-content/plugins/click-bounce-counter/ ├── click-bounce-counter.php └── bot-functions.php
Hier ist der derselbe Code für des Moments
click-bounce-counter.php
<?php
/*
* Plugin Name: Click & Bounce Counter
* Description: Zählt die Gesamtzahl der Klicks und speichert die Absprünge innerhalb von 30 Sekunden.
Ein Dashboard-Widget zeigt die Statistik und in einem Balken-Diagramm an.
Administrator ist automatisch ausgeschlossen.
* Version: 1.0.0
* Autor: Team WP Wegerl
* Author URI: https://wegerl.at/click-und-bounce-counter/
* Text Domain: click-bounce-counter
Die Funktion 'is_bot_or_spider' prüft anhand des User-Agents, ob es sich bei einem Besucher um einen Bot handelt.
Diese Funktion nutzt Caching, um wiederholte Anfragen zu vermeiden und verbessert so die Performance.
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
// Am Anfang der Datei, um die Bot-Erkennungsfunktion zu laden
if ( file_exists( plugin_dir_path( __FILE__ ) . 'bot-functions.php' ) ) {
require_once plugin_dir_path( __FILE__ ) . 'bot-functions.php';
} else {
error_log('bot-functions.php wurde nicht gefunden.');
}
if (is_bot_or_spider()) {
// Bot erkannt – keine Zählung der Klicks oder Absprünge
return;
}
// Fügt das Chart.js-Skript für das Dashboard hinzu
function enqueue_chartjs_script() {
if (is_admin()) {
wp_enqueue_script('chart-js', 'https://cdn.jsdelivr.net/npm/chart.js', array(), null, true);
}
}
add_action('admin_enqueue_scripts', 'enqueue_chartjs_script');
// Initialisiert die Zähler, falls sie nicht existieren.
function initialize_click_bounce_counters() {
if (false === wp_cache_get('click_counter', 'options')) {
add_option('click_counter', 0, '', 'no');
}
if (false === wp_cache_get('bounce_counter', 'options')) {
add_option('bounce_counter', 0, '', 'no');
}
}
add_action('init', 'initialize_click_bounce_counters');
// Fügt das Dashboard-Widget hinzu.
function add_click_bounce_widget() {
wp_add_dashboard_widget(
'click_bounce_widget',
'Click & Bounce Counter: Klickzähler und Absprungrate',
'display_click_bounce_count'
);
}
add_action('wp_dashboard_setup', 'add_click_bounce_widget');
// Zeigt die aktuellen Zählerstände im Widget an und fügt die Buttons hinzu.
function display_click_bounce_count() {
$click_count = get_option('click_counter');
$bounce_count = get_option('bounce_counter');
?>
<p>Anzahl der insgesamt gezählten Klicks: <strong id="click-count"><?php echo $click_count; ?></strong></p>
<p>Anzahl der Absprünge innerhalb von 30 Sekunden: <strong id="bounce-count"><?php echo $bounce_count; ?></strong></p>
<canvas id="click-bounce-chart" width="400" height="200"></canvas>
<form method="post" id="reset-form" style="margin-top: 25px;">
<input type="hidden" name="reset_click_bounce" value="1">
<button type="button" id="reset-button">Zähler zurücksetzen</button>
<button type="button" id="refresh-button" style="margin-left: 15px;">Aktualisieren</button>
</form>
<script>
let clickBounceChart;
let resetTimeout;
document.addEventListener("DOMContentLoaded", function() {
const ctx = document.getElementById('click-bounce-chart').getContext('2d');
clickBounceChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['Gesamt Klicks', 'Absprünge innerhalb 30 Sekunden'],
datasets: [{
// label entfernt, damit keine Legende angezeigt wird
data: [<?php echo $click_count; ?>, <?php echo $bounce_count; ?>],
backgroundColor: [
'rgba(75, 192, 192, 0.2)',
'rgba(255, 99, 132, 0.2)'
],
borderColor: [
'rgba(75, 192, 192, 1)',
'rgba(255, 99, 132, 1)'
],
borderWidth: 1
}]
},
options: {
plugins: {
legend: {
display: false // Verhindert, dass die Legende angezeigt wird
}
},
scales: {
y: {
beginAtZero: true,
ticks: {
stepSize: 1,
callback: function(value) {
return Number.isInteger(value) ? value : '';
}
},
title: {
display: true,
text: 'Anzahl'
}
}
}
}
});
});
document.getElementById("refresh-button").addEventListener("click", function(event) {
event.preventDefault();
fetch("<?php echo admin_url('admin-ajax.php'); ?>?action=update_click_bounce_counts", {
method: 'GET',
})
.then(response => response.json())
.then(data => {
document.getElementById('click-count').textContent = data.click_count;
document.getElementById('bounce-count').textContent = data.bounce_count;
clickBounceChart.data.datasets[0].data = [data.click_count, data.bounce_count];
clickBounceChart.update();
});
});
document.getElementById("reset-button").addEventListener("click", function(event) {
event.preventDefault();
if (this.dataset.clickedOnce === "true") {
fetch("<?php echo admin_url('admin-ajax.php'); ?>?action=reset_click_bounce_counters", {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: 'reset_click_bounce=1'
})
.then(response => response.text())
.then(data => {
document.getElementById('click-count').textContent = 0;
document.getElementById('bounce-count').textContent = 0;
clickBounceChart.data.datasets[0].data = [0, 0];
clickBounceChart.update();
});
} else {
this.dataset.clickedOnce = "true";
this.innerText = "Zum Bestätigen erneut klicken";
resetTimeout = setTimeout(() => {
this.dataset.clickedOnce = "false";
this.innerText = "Zähler zurücksetzen";
}, 1500);
}
});
</script>
<?php
}
// Überprüft, ob der Reset-Button geklickt wurde, und setzt die Zähler zurück.
function reset_click_bounce_counters() {
update_option('click_counter', 0);
update_option('bounce_counter', 0);
wp_cache_delete('click_counter', 'options');
wp_cache_delete('bounce_counter', 'options');
}
add_action('wp_ajax_reset_click_bounce_counters', 'reset_click_bounce_counters');
// Liefert die aktuellen Zählerwerte für den Aktualisieren-Button.
function update_click_bounce_counts() {
$click_count = get_option('click_counter');
$bounce_count = get_option('bounce_counter');
wp_send_json(array(
'click_count' => $click_count,
'bounce_count' => $bounce_count
));
}
add_action('wp_ajax_update_click_bounce_counts', 'update_click_bounce_counts');
// Ajax-Handler zum Erhöhen der Zähler
function increase_click_counter() {
if (!current_user_can('administrator') && !is_bot_or_spider()) {
$click_count = get_option('click_counter', 0);
$click_count++;
update_option('click_counter', $click_count);
wp_cache_set('click_counter', $click_count, 'options');
}
wp_die();
}
add_action('wp_ajax_nopriv_increase_click_counter', 'increase_click_counter');
add_action('wp_ajax_increase_click_counter', 'increase_click_counter');
// Ähnlich für den Bounce-Zähler
function increase_bounce_counter() {
if (!current_user_can('administrator') && !is_bot_or_spider()) {
$bounce_count = get_option('bounce_counter', 0);
$bounce_count++;
update_option('bounce_counter', $bounce_count);
wp_cache_set('bounce_counter', $bounce_count, 'options');
}
wp_die();
}
add_action('wp_ajax_nopriv_increase_bounce_counter', 'increase_bounce_counter');
add_action('wp_ajax_increase_bounce_counter', 'increase_bounce_counter');
// Fügt das JavaScript für Klicks und Bounces im Frontend hinzu
function enqueue_click_bounce_counter_script() {
if ( !current_user_can('administrator') ) { // Nur für nicht-Admins
?>
<script>
document.addEventListener("DOMContentLoaded", function() {
let countAllowed = true;
let bounceCounted = false;
// Sende eine Klick-Anfrage immer, wenn die Seite geladen wird
navigator.sendBeacon("<?php echo admin_url('admin-ajax.php'); ?>?action=increase_click_counter");
// Blockiert das Zählen der Absprünge nach 30 Sekunden
setTimeout(function() {
countAllowed = false;
}, 30000);
// Funktion zum Senden der Absprungs-Anfrage
function countBounce() {
if (countAllowed && !bounceCounted) {
navigator.sendBeacon("<?php echo admin_url('admin-ajax.php'); ?>?action=increase_bounce_counter");
bounceCounted = true;
}
}
// Überwacht das Verlassen der Seite
window.addEventListener('beforeunload', function(event) {
// Verzögert das Absprungzählen um 100ms, um sicherzustellen, dass der Klick gezählt wird
setTimeout(function() {
countBounce(); // Absprung zählt nur nach Timeout
}, 100);
});
// Überwacht, wenn die Seite sichtbar wird oder nicht und zählt den Absprung
document.addEventListener('visibilitychange', function() {
if (document.visibilityState === 'hidden' && !bounceCounted) {
// Bei 'hidden' wird der Absprung nur gezählt, wenn er noch nicht gezählt wurde
countBounce();
}
});
});
</script>
<?php
}
}
add_action('wp_footer', 'enqueue_click_bounce_counter_script');
Zähler zurücksetzen mit Doppelklick und Daten aktualisieren per Ajax.
bot-functions.php
<?php
/**
* Bot- und Spider-Erkennung basierend auf dem User-Agent.
*
* Diese Funktion überprüft, ob der aktuelle Benutzeragent (User-Agent) mit einem bekannten Bot- oder Spider-Identifikator übereinstimmt.
* Die Funktion nutzt Caching, um wiederholte Anfragen innerhalb eines bestimmten Zeitrahmens zu vermeiden.
* Die Ergebnisse werden für 12 Stunden gespeichert, um unnötige Bot-Überprüfungen zu minimieren.
*
* Wenn der Benutzeragent mit einem bekannten Bot übereinstimmt, wird `true` zurückgegeben,
* andernfalls `false`. Das Ergebnis wird auch in einem transienten Cache für 12 Stunden gespeichert,
* um die Performance zu verbessern.
*
* @since 1.0.0
* @return bool True, wenn es sich um einen Bot handelt, sonst False.
*/
if (!function_exists('is_bot_or_spider')) {
function is_bot_or_spider() {
$cached_result = get_transient('is_bot_' . $_SERVER['REMOTE_ADDR']);
if ($cached_result !== false) {
return $cached_result;
}
$user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
$bots = [
'googlebot', 'bingbot', 'slurp', 'duckduckbot', 'baidu', 'yandex',
'sogou', 'exabot', 'facebook', 'twitter', 'linkedin', 'pinterest',
'msnbot', 'bot', 'crawl', 'crawler', 'spider', 'ia_archiver',
'curl', 'fetch', 'python', 'wget', 'monitor'
];
$pattern = '/(' . implode('|', $bots) . ')/i';
if (preg_match($pattern, $user_agent)) {
set_transient('is_bot_' . $_SERVER['REMOTE_ADDR'], true, 12 * HOUR_IN_SECONDS);
return true;
}
set_transient('is_bot_' . $_SERVER['REMOTE_ADDR'], false, 12 * HOUR_IN_SECONDS);
return false;
}
}
Klare Klickzahlen, echte Besucher – für eine bessere Webanalyse.
'Click & Bounce Counter' in der Datenbank
Das 'Click & Bounce Counter' Plug-in speichert die Daten in der WordPress-Optionstabelle. Genauer gesagt werden die Zähler für die Gesamtzahl der Klicks und die Absprünge in den folgenden Optionen gespeichert:
click_counter
: Diese Option speichert die Gesamtzahl der Klicks auf der Website.
bounce_counter
: Diese Option speichert die Anzahl der Absprünge, also die Klicks, die innerhalb von 30 Sekunden gezählt werden.
Diese Optionen werden in der Datenbanktabelle wp_options
(oder einer entsprechenden Tabelle, falls das Tabellenpräfix geändert wurde) gespeichert. WordPress verwendet diese Tabelle, um verschiedene Konfigurationen und Daten für Plug-ins und Themes zu speichern.
SQL-Abfragen
Für die Gesamtzahl der Klicks:
SELECT option_value FROM wp_options WHERE option_name = 'click_counter';
Für die Absprünge innerhalb von 30 Sekunden:
SELECT option_value FROM wp_options WHERE option_name = 'bounce_counter';
Hinweis für Tests: Browser-Tracking und mögliche Schwankungen
Tests zum Tracking können empfindlich sein und erfordern ein paar Überprüfungen, um zu gewährleisten, dass die Ergebnisse zuverlässig sind. Beim Browser-Test ist es wichtig sicherzustellen, dass die Seite nicht bereits im Browserfenster geöffnet war. Ist die Seite bereits aufgerufen und im Cache des Browsers gespeichert, wird ein erneuter Tracking-Impuls womöglich nicht ausgelöst. Dies kann zu einer unvollständigen Zählung führen, da moderne Browser in solchen Fällen oft den Netzwerkaufruf blockieren oder unterdrücken.
Zusätzlich spielt das Zusammenspiel unterschiedlicher Browser eine Rolle. Verschiedene Browser behandeln das Laden, Speichern und Zwischenspeichern von Seiteninhalten unterschiedlich, was zu Schwankungen in den Tracking-Ergebnissen führen kann. Auch können manche Browser Verzögerungen beim Tracking verursachen, besonders dann, wenn das Tracking-Skript auf Bedingungen wie "sichtbare Seiten" reagiert. Hier gibt es auch Unterschiede, welche Ereignisse (z.B. Seitenwechsel oder Tab-Schließen) ein Tracking auslösen.
Es ist möglich, dass bei der Zählung der Klicks und Absprünge eine Verzögerung auftritt, insbesondere wenn man AJAX-Anfragen oder navigator.sendBeacon()
verwendet. Hier sind einige Gründe, warum eine Zählung eventuell "hinkt" oder nicht sofort aktualisiert wird:
- Asynchrone Natur von AJAX:
- AJAX-Anfragen sind asynchron, was bedeutet, dass der Code, der nach der Anfrage kommt, nicht wartet, bis die Anfrage abgeschlossen ist. Das kann dazu führen, dass die Benutzeroberfläche (z. B. die Anzeige der Zähler) aktualisiert wird, bevor die Anfrage verarbeitet wurde.
- Verzögerungen durch Netzwerk:
- Wenn die Verbindung langsam ist oder es Netzwerkprobleme gibt, kann es ebenfalls dazu führen, dass die Zählung nicht sofort aktualisiert wird. Bei
navigator.sendBeacon()
ist dies weniger wahrscheinlich, da es eine spezielle API ist, die dafür konzipiert wurde, Daten effizient zu senden, ohne dass der Benutzer die Seite verlässt.
- Wenn die Verbindung langsam ist oder es Netzwerkprobleme gibt, kann es ebenfalls dazu führen, dass die Zählung nicht sofort aktualisiert wird. Bei
- Caching-Probleme:
- In einigen Fällen können Browser Caching-Probleme verursachen, die das Abrufen von frischen Daten beeinflussen. Wenn die Zählerwerte nicht direkt aus der Datenbank abgerufen werden, kann es zu Inkonsistenzen kommen.
- Timing der Updates:
- Der
Aktualisieren
-Button ruft die Zählerwerte ab und aktualisiert die Anzeige. Wenn die Serveranfrage nach dem Update der Anzeige zurückkommt, können die Werte auf der Seite veraltet sein. Um dies zu vermeiden, sollte der Zustand des Dashboards aktualisiert werden, nachdem die AJAX-Anfrage abgeschlossen ist.
- Der
Um die Testergebnisse noch weiter abzusichern, können weitere Maßnahmen ergriffen werden:
- Cache leeren: Vor jedem Testlauf den Browser-Cache und ggf. Cookies löschen.
- InPrivate-/Inkognito-Modus: So kann verhindert werden, dass gespeicherte Daten oder Caches das Ergebnis beeinflussen.
- Mehrere Browser testen: Tests mit Chrome, Firefox, Safari und Edge geben Hinweise, ob bestimmte Effekte auf einzelne Browser beschränkt sind.
- Zeitlich gestaffelte Tests: Durch eine Verzögerung zwischen den Tests lassen sich kurzzeitige Caching- oder Netzwerkprobleme minimieren.
Bemerkung:
Bei sehr schnellem Wechseln zwischen Seiten innerhalb von 30 Sekunden kann es in seltenen Fällen dazu kommen, dass ein Klick nicht gezählt wird. Dies ist jedoch ein sehr spezifisches Szenario und hat in der Praxis keine nennenswerte Auswirkung auf die Gesamtstatistik, da solche schnellen Klickfolgen eher in Testszenarien und weniger im realen Nutzerverhalten auftreten.
Das ist also ein kleines Detail, das in der Praxis nicht signifikant ist, aber in Testszenarien gelegentlich auffällt. Es handelt sich um eine marginale Ausnahme, die durch den Mechanismus der Absprungzählung entsteht.
Insgesamt lässt sich durch eine sorgfältige Testplanung eine solide Übersicht erzielen.
- Entwicklung Click & Bounce Counter ermöglichte das Team WP Wegerl.at
Der Beitrag wurde mit fachlicher Unterstützung erstellt.
Aktualisiert im Jahr 2024 November