Möchtest Du die Interaktion Deiner Besucher auf Deiner WordPress-Seite steigern? In diesem Artikel zeige ich Dir, wie Du schnell und einfach ein unverzichtbares Like/Dislike-System für Deine Beiträge einrichten kannst. Erfahre, wie Du mit ein wenig Code und dem Plugin Code Snippets eine benutzerfreundliche Bewertungsschnittstelle erstellst, die Deinen Besuchern ermöglicht, direktes Feedback zu geben und Deine Inhalte noch erfolgreicher zu machen.
In der heutigen Zeit ist es entscheidend, die Interaktion Deiner Website-Besucher zu fördern. Eine der einfachsten Möglichkeiten, dies zu tun, ist die Implementierung eines Like/Dislike-Systems für Deine WordPress-Beiträge. Mit einem solchen System können Besucher schnell und unkompliziert Feedback geben, was Dir wertvolle Einblicke in die Beliebtheit Deiner Inhalte bietet.
In diesem Artikel zeige ich Dir, wie Du schnell und einfach ein unverzichtbares Like/Dislike-System für Deine Beiträge einrichten kannst. Wir werden dabei ein Snippet verwenden, das nicht nur die Bewertung durch die Besucher ermöglicht, sondern auch die Ergebnisse direkt in Deinem WordPress-Dashboard anzeigt. Für noch mehr Flexibilität kannst Du den Codebereich, der das Dashboard-Widget bereitstellt, als separates Snippet anlegen und bei Bedarf aktivieren oder deaktivieren.
Inhaltsverzeichnis
Vorteile eines Like/Dislike-Systems
Ein Like/Dislike-System bietet zahlreiche Vorteile, die sowohl Dir als Website-Betreiber als auch Deinen Besuchern zugutekommen. Hier sind einige der wichtigsten Vorteile:
- Erhöhung der Benutzerbeteiligung und Feedback-Möglichkeiten: Ein Like/Dislike-System ermöglicht es Deinen Besuchern, schnell und unkompliziert Feedback zu Deinen Beiträgen zu geben. Dies senkt die Hemmschwelle zur Interaktion und sorgt dafür, dass mehr Besucher aktiv werden und ihre Meinung äußern.
- Verbesserung der Inhaltspersonalisierung und Entscheidungsfindung: Durch das Sammeln von Likes und Dislikes erhältst Du wertvolle Daten darüber, welche Inhalte bei Deinen Nutzern gut ankommen und welche weniger beliebt sind. Diese Informationen helfen Dir dabei, Deine Inhalte besser an die Interessen Deiner Zielgruppe anzupassen und fundierte Entscheidungen über zukünftige Beiträge zu treffen.
- Praktische Anwendungsfälle für Blogs, Nachrichten-Websites etc.: Ob Du einen Blog betreibst, Nachrichten veröffentlichst oder Produkte vorstellst – ein Like/Dislike-System kann in vielen Bereichen nützlich sein. Leser können etwa in einem Blog durch ihre Bewertungen dazu beitragen, welche Themen künftig vertieft behandelt werden sollten. Auf einer Nachrichten-Website könnten die Bewertungen anzeigen, welche Artikel besonders polarisieren oder besonders gut ankommen.
- Flexibilität durch das Dashboard-Widget: Mit dem integrierten Dashboard-Widget kannst Du die gesammelten Likes und Dislikes direkt in Deinem WordPress-Dashboard einsehen. Dadurch hast Du immer einen schnellen Überblick über die Bewertungen Deiner Beiträge. Und dank der Möglichkeit, diesen Codebereich als separates Snippet zu verwalten, kannst Du das Widget bei Bedarf einfach aktivieren oder deaktivieren, je nachdem, ob Du die Funktion aktuell nutzen möchtest.
Technische Umsetzung: Like/Dislike-System für Beiträge
Jetzt, da Du die Vorteile eines Like/Dislike-Systems kennst, schauen wir uns die technische Umsetzung an. Mit dem bereitgestellten Code kannst Du schnell und einfach ein Bewertungssystem für Deine WordPress-Beiträge einrichten. Der Code wird über das Plugin Code Snippets integriert, das es Dir ermöglicht, benutzerdefinierte Funktionen zu Deiner Website hinzuzufügen, ohne die functions.php
-Datei Deines Themes direkt zu bearbeiten.
Überblick über die Implementierung
Der Code besteht aus mehreren Komponenten:
- Meta-Box zur Anzeige von Likes und Dislikes im Beitragseditor: Ermöglicht Dir, die aktuellen Like- und Dislike-Zahlen direkt im WordPress-Backend anzusehen.
- Frontend-Buttons zur Bewertung durch die Nutzer: Fügt den Beiträgen auf Deiner Seite Like- und Dislike-Buttons hinzu, die von den Besuchern genutzt werden können.
- AJAX-Funktion zur Aktualisierung der Bewertungen: Ermöglicht eine reibungslose Aktualisierung der Like- und Dislike-Zahlen, ohne dass die Seite neu geladen werden muss.
- Dashboard-Widget zur Übersicht der Bewertungen: Zeigt die gesammelten Likes und Dislikes aller Beiträge direkt im Dashboard an.
Detaillierte Erklärung des Codes
Hier ist der Code, gefolgt von einer detaillierten Erklärung:
function add_like_dislike_meta_box() {
add_meta_box('like_dislike_meta', 'Likes/Dislikes', 'like_dislike_meta_box_callback', 'post', 'side', 'high');
}
add_action('add_meta_boxes', 'add_like_dislike_meta_box');
function like_dislike_meta_box_callback($post) {
$likes = get_post_meta($post->ID, '_likes', true);
$dislikes = get_post_meta($post->ID, '_dislikes', true);
?>
<p>
<label for="likes">Likes: </label>
<input type="text" id="likes" name="likes" value="<?php echo $likes; ?>" readonly />
</p>
<p>
<label for="dislikes">Dislikes: </label>
<input type="text" id="dislikes" name="dislikes" value="<?php echo $dislikes; ?>" readonly />
</p>
<?php
}
function save_like_dislike_meta($post_id) {
if (array_key_exists('likes', $_POST)) {
update_post_meta($post_id, '_likes', $_POST['likes']);
}
if (array_key_exists('dislikes', $_POST)) {
update_post_meta($post_id, '_dislikes', $_POST['dislikes']);
}
}
add_action('save_post', 'save_like_dislike_meta');
function update_like_dislike() {
$post_id = intval($_POST['post_id']);
$type = sanitize_text_field($_POST['type']);
$cookie_name = 'like_dislike_' . $post_id;
if (!isset($_COOKIE[$cookie_name])) {
if ($type == 'like') {
$likes = get_post_meta($post_id, '_likes', true);
$likes = $likes ? $likes + 1 : 1;
update_post_meta($post_id, '_likes', $likes);
echo $likes;
} elseif ($type == 'dislike') {
$dislikes = get_post_meta($post_id, '_dislikes', true);
$dislikes = $dislikes ? $dislikes + 1 : 1;
update_post_meta($post_id, '_dislikes', $dislikes);
echo $dislikes;
}
setcookie($cookie_name, 'voted', [
'expires' => time() + 60 * 60, // 60 Minuten (3600 Sekunden)
'path' => '/',
'domain' => '', // Optional
'secure' => true, // Setze auf true, wenn du HTTPS verwendest
'httponly' => true,
'samesite' => 'Lax' // Oder 'Strict' / 'None'
]);
} else {
echo 'already_voted';
}
wp_die();
}
add_action('wp_ajax_update_like_dislike', 'update_like_dislike');
add_action('wp_ajax_nopriv_update_like_dislike', 'update_like_dislike');
function display_like_dislike_buttons($content) {
if (is_single()) {
global $post;
$likes = get_post_meta($post->ID, '_likes', true);
$dislikes = get_post_meta($post->ID, '_dislikes', true);
$buttons = '<div class="like-dislike-buttons">';
$buttons .= '<p>Artikel bewerten:</p>';
$buttons .= '<button class="like-button" data-post_id="' . $post->ID . '" data-type="like">👍 <span class="like-count">' . ($likes ? $likes : 0) . '</span></button>';
$buttons .= '<button class="dislike-button" data-post_id="' . $post->ID . '" data-type="dislike">👎 <span class="dislike-count">' . ($dislikes ? $dislikes : 0) . '</span></button>';
$buttons .= '</div>';
return $content . $buttons;
}
return $content;
}
add_filter('the_content', 'display_like_dislike_buttons');
function my_enqueue_scripts() {
// Stelle sicher, dass jQuery geladen wird
wp_enqueue_script('jquery');
// Script einbinden
wp_enqueue_script('like-dislike-ajax', get_template_directory_uri() . '/js/like-dislike-ajax.js', array('jquery'), null, true);
// ajaxurl an das Script übergeben
wp_localize_script('like-dislike-ajax', 'ajaxurl', admin_url('admin-ajax.php'));
}
add_action('wp_enqueue_scripts', 'my_enqueue_scripts');
function like_dislike_scripts() {
?>
<style>
.like-dislike-buttons {
margin-top: 20px;
text-align: center;
}
.like-dislike-buttons button {
margin-right: 10px;
cursor: pointer;
font-size: 20px;
padding: 10px 20px;
border-radius: 5px;
border: none;
background: #a4dad8; /* Fallback-Hintergrundfarbe */
background: linear-gradient(145deg, #a4dad8 0%, #ffffff 100%); /* Farbverlauf */
color: #333333; /* Textfarbe */
transition: background-color 0.3s ease, transform 0.2s ease; /* Animation beim Hover */
box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.2), -3px -3px 8px rgba(255, 255, 255, 0.8); /* Neumorphismus-Effekt */
}
.like-dislike-buttons button:hover {
transform: scale(1.05); /* Leichter Zoom-Effekt beim Hover */
box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.2), -3px -3px 12px rgba(255, 255, 255, 0.8); /* Verstärkter Neumorphismus beim Hover */
}
.like-dislike-buttons .like-count, .like-dislike-buttons .dislike-count {
margin-left: 5px;
}
</style>
<script>
jQuery(document).ready(function($) {
$('.like-button, .dislike-button').on('click', function() {
var button = $(this);
var post_id = button.data('post_id');
var type = button.data('type');
$.ajax({
url: ajaxurl, // Verwende hier die lokalisierte AJAX-URL
type: 'post',
data: {
action: 'update_like_dislike',
post_id: post_id,
type: type
},
success: function(response) {
if (response == 'already_voted') {
alert('Du hast bereits abgestimmt.');
} else {
if (type == 'like') {
button.find('.like-count').text(response);
} else {
button.find('.dislike-count').text(response);
}
}
}
});
});
});
</script>
<?php
}
add_action('wp_footer', 'like_dislike_scripts');
add_action('wp_footer', 'like_dislike_scripts');
// Dashboard-Widget für Likes und Dislikes
function register_likes_dislikes_dashboard_widget() {
wp_add_dashboard_widget(
'likes_dislikes_dashboard_widget',
'Beitragsbewertungen (Likes/Dislikes)',
'display_likes_dislikes_dashboard_widget'
);
}
add_action('wp_dashboard_setup', 'register_likes_dislikes_dashboard_widget');
function display_likes_dislikes_dashboard_widget() {
$args = array(
'post_type' => 'post',
'posts_per_page' => -1
);
$posts = get_posts($args);
if ($posts) {
echo '<table>';
echo '<tr><th>Beitragstitel</th><th>Likes</th><th>Dislikes</th></tr>';
foreach ($posts as $post) {
$likes = get_post_meta($post->ID, '_likes', true);
$dislikes = get_post_meta($post->ID, '_dislikes', true);
echo '<tr>';
echo '<td>' . esc_html($post->post_title) . '</td>';
echo '<td>' . intval($likes) . '</td>';
echo '<td>' . intval($dislikes) . '</td>';
echo '</tr>';
}
echo '</table>';
} else {
echo '<p>Es wurden noch keine Bewertungen abgegeben.</p>';
}
}
1. Meta-Box zur Anzeige von Likes und Dislikes im Beitragseditor:
add_meta_box
Funktion: Diese Funktion fügt eine Meta-Box im Beitragseditor hinzu, die die aktuellen Like- und Dislike-Zahlen anzeigt. Diese Meta-Box ist schreibgeschützt und dient nur zur Ansicht.- Speichern der Meta-Daten (
save_like_dislike_meta
): Diese Funktion sorgt dafür, dass die Like- und Dislike-Werte in der Datenbank gespeichert werden, wenn der Beitrag gespeichert oder aktualisiert wird.
2. Frontend-Buttons zur Bewertung durch die Nutzer:
display_like_dislike_buttons
Funktion: Diese Funktion fügt Like- und Dislike-Buttons unter jedem Beitrag ein. Die Buttons sind interaktiv und zeigen die aktuellen Bewertungen an. Die Anzeige erfolgt nur auf Einzelbeitragsseiten (is_single
).
3. AJAX-Funktion zur Aktualisierung der Bewertungen:
update_like_dislike
Funktion: Diese Funktion verarbeitet die AJAX-Anfragen, die beim Klicken auf die Like- oder Dislike-Buttons ausgelöst werden. Sie aktualisiert die Bewertungen in der Datenbank und verhindert, dass ein Nutzer mehrfach abstimmt, indem ein Cookie gesetzt wird.
4. Dashboard-Widget zur Übersicht der Bewertungen:
register_likes_dislikes_dashboard_widget
Funktion: Diese Funktion registriert ein Dashboard-Widget, das alle Beiträge zusammen mit ihren Like- und Dislike-Zahlen auflistet. Dies gibt Dir einen schnellen Überblick über die Bewertungen Deiner Inhalte direkt im WordPress-Dashboard.- Separates Snippet für das Dashboard-Widget: Da das Dashboard-Widget nicht immer benötigt wird, kannst Du diesen Codeabschnitt in ein separates Snippet auslagern. So hast Du die Möglichkeit, das Widget bei Bedarf einfach zu aktivieren oder zu deaktivieren.
Anleitung zum Einfügen des Codes über das Plugin Code Snippets
- Installiere das Plugin Code Snippets: Wenn Du das Plugin bisher nicht installiert hast, kannst Du es direkt über das WordPress-Plugin-Verzeichnis installieren und aktivieren.
- Erstelle das Haupt-Snippet: Erstelle ein neues Snippet und füge den Code für die Like/Dislike-Funktionalität ein. Achte darauf, dass der Code für das Dashboard-Widget vorerst nicht enthalten ist.
- Erstelle ein separates Snippet für das Dashboard-Widget: Erstelle ein weiteres Snippet und füge den Code für das Dashboard-Widget ein. So kannst Du dieses Snippet bei Bedarf aktivieren oder deaktivieren.
- Aktivieren und Testen: Aktiviere beide Snippets und teste die Funktionalität auf Deiner Website. Überprüfe, ob die Buttons korrekt angezeigt und die Bewertungen im Dashboard erfasst werden.
- Anpassen des Layouts und der Funktionalität: Passe das CSS und die AJAX-Funktion nach Bedarf an, um das Erscheinungsbild und die Funktionalität weiter zu optimieren.
Noch mehr Snippets? Viele weitere Snippets findest Du in meinem Blog.
Integration der Like/Dislike-Funktionalität
Nachdem Du das Like/Dislike-System erfolgreich eingerichtet hast, ist es wichtig, die Integration und Nutzung der Funktionalität in Deiner WordPress-Seite zu optimieren. Hier sind die Schritte und Überlegungen, die Du beachten solltest:
Schritt-für-Schritt-Anleitung zur Einbindung in eine WordPress-Seite
- Einfügen des Codes: Stelle sicher, dass Du die beiden Snippets korrekt eingefügt und aktiviert hast. Das Haupt-Snippet enthält die Logik für die Like/Dislike-Buttons und die AJAX-Funktionalität. Das separate Snippet ist für das Dashboard-Widget zuständig.
- Überprüfung der Funktionalität: Besuche einen Deiner Beiträge, um zu sehen, ob die Like- und Dislike-Buttons korrekt angezeigt werden. Teste die Funktionalität, indem Du auf die Buttons klickst, und überprüfe, ob die Bewertung aktualisiert wird und ob der Cookie gesetzt wird, um Mehrfachabstimmungen zu verhindern.
- Anpassung des Designs: Wenn das Standarddesign der Buttons nicht zu Deinem Theme passt, kannst Du das CSS im Snippet leicht anpassen. Du kannst Farben, Größen und Hover-Effekte nach Belieben ändern, um die Buttons nahtlos in das Design Deiner Website zu integrieren.
- Aktivierung des Dashboard-Widgets: Wenn Du das Dashboard-Widget verwenden möchtest, aktiviere das entsprechende Snippet. Dieses Widget gibt Dir eine schnelle Übersicht über die Like- und Dislike-Zahlen Deiner Beiträge direkt im WordPress-Dashboard.
- Optimierung für mobile Geräte: Stelle sicher, dass das Bewertungssystem auch auf mobilen Geräten einwandfrei funktioniert. Teste das Layout und die Funktionalität auf verschiedenen Bildschirmgrößen und Geräten, um sicherzustellen, dass die Buttons gut sichtbar und einfach zu bedienen sind.
Mögliche Herausforderungen und deren Lösungen
- Konflikte mit anderen Plugins: Falls Du bereits andere Plugins verwendest, die die Beitragsanzeige oder AJAX-Funktionalität beeinflussen, könnte es zu Konflikten kommen. In diesem Fall solltest Du die Plugin-Einstellungen überprüfen oder die Priorität der Hooks im Snippet anpassen, um Konflikte zu vermeiden.
- Performance-Bedenken: Wenn Deine Website viele Besucher oder Beiträge hat, könnte die Verarbeitung der AJAX-Anfragen zusätzliche Serverressourcen beanspruchen. Stelle sicher, dass Dein Hosting-Paket ausreichend Leistung bietet, um die zusätzliche Last zu bewältigen. Erwäge auch die Verwendung von Caching-Plugins, um die Last zu verringern.
- Datenschutz und Cookie-Richtlinien: Da das System Cookies verwendet, um Mehrfachabstimmungen zu verhindern, solltest Du sicherstellen, dass Deine Datenschutzrichtlinien dies abdecken. Informiere Deine Besucher klar und deutlich darüber, dass Cookies für diese Funktion verwendet werden.
- Flexibilität durch separate Snippets: Die Möglichkeit, das Dashboard-Widget als separates Snippet zu verwalten, bietet Dir die Flexibilität, die Funktion nach Bedarf zu aktivieren oder zu deaktivieren. Das ist besonders nützlich, wenn Du das Widget nur zeitweise verwenden möchtest, um die Übersicht über die Bewertungen zu behalten.
Erweiterungsmöglichkeiten
- Zusätzliche Bewertungsoptionen: Wenn Du Dein Bewertungssystem erweitern möchtest, könntest Du zusätzliche Optionen wie eine 5-Sterne-Bewertung oder ein Kommentarsystem integrieren.
- Integration mit Analysen: Du könntest die Bewertungsdaten mit einem Analysetool verknüpfen, um detailliertere Einblicke in das Nutzerverhalten zu gewinnen.
- Anpassung des Layouts: Du könntest das Layout der Buttons weiter anpassen oder sie an einer anderen Stelle des Beitrags platzieren, um die Benutzerfreundlichkeit zu erhöhen.
Fazit
Ein Like/Dislike-System ist eine hervorragende Möglichkeit, die Interaktion Deiner Website-Besucher zu fördern und wertvolles Feedback zu Deinen Inhalten zu sammeln. Mit dem bereitgestellten Code und dem Plugin Code Snippets kannst Du diese Funktion schnell und einfach in Deine WordPress-Seite integrieren und bei Bedarf anpassen.
Die Möglichkeit, das Dashboard-Widget als separates Snippet zu verwalten, bietet Dir zusätzliche Flexibilität und Kontrolle. Du kannst das Widget nach Bedarf aktivieren oder deaktivieren und hast so immer einen schnellen Überblick über die Bewertungen Deiner Beiträge.
Ich ermutige Dich, den Code auszuprobieren und ihn nach Deinen Bedürfnissen anzupassen. Die Flexibilität und Benutzerfreundlichkeit, die Du dadurch gewinnst, wird sich positiv auf Deine Website auswirken. Solltest Du auf Herausforderungen stoßen oder weitere Fragen haben, stehe ich Dir gerne zur Verfügung, um Dich bei der Optimierung und Weiterentwicklung Deiner Website zu unterstützen.
Der Webfuchs
"Der Webfuchs" ist ein Pseudonym des Webentwicklers Stephan Bloemers. Geboren 1967 in Duisburg und aktuell in Düsseldorf ansässig, begann er bereits 1999 mit der Erstellung von Websites. Durch selbständiges Lernen erwarb er die notwendigen HTML-Kenntnisse und registrierte 2001 seine erste Top-Level-Domain "derwebfuchs.de", die damals bereits kostenlose Ressourcen für Webmaster bereitstellte.
Über die Jahre hat Stephan weitere Projekte realisiert, darunter einen Blog über seinen damaligen Kegelclub. Alle von ihm erstellten Websites werden als Hobby betrieben.
Neben dem Basteln an seinen Websites verbringt Stephan seine Freizeit gerne mit Spielen wie Poker oder Schach.
Stephan hat sich im Laufe seiner Karriere auf die Entwicklung von benutzerfreundlichen und effektiven Websites spezialisiert. Seine Leidenschaft für Technologie und Design spiegelt sich in seiner Arbeit wider und er ist stets bemüht, auf dem neuesten Stand zu bleiben, um die bestmöglichen Lösungen anbieten zu können.
In seiner Freizeit ist Stephan ein begeisterter Blogger und teilt gerne sein Wissen und seine Erfahrungen mit anderen Webentwicklern und Interessierten. Seine Leidenschaft für die Online-Welt und seine Fähigkeit, komplexe Themen einfach und verständlich zu vermitteln, machen ihn zu einer wertvollen Ressource für alle, die sich für Webentwicklung und Online-Marketing interessieren.