Suchen Sie nach einer Möglichkeit, Beitragsaufrufe ohne Plugin über Beitrags-Metadaten zu verfolgen? Obwohl es wahrscheinlich ein Plugin dafür gibt, haben wir einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um Beitragsaufrufe ohne Plugin über Beitrags-Metadaten in WordPress zu verfolgen.
Anweisungen:
Fügen Sie diesen Code in die functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin ein:
function getPostViews($postID){
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
return "0 View";
}
return $count.' Views';
}
function setPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
}else{
$count++;
update_post_meta($postID, $count_key, $count);
}
}
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
Fügen Sie diesen Code optional auch einer Spalte im WordPress-Adminbereich hinzu, die die Beitragsaufrufe anzeigt:
// Add to a column in WP-Admin
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
$defaults['post_views'] = __('Views');
return $defaults;
}
function posts_custom_column_views($column_name, $id){
if($column_name === 'post_views'){
echo getPostViews(get_the_ID());
}
}
Dieser Teil des Codes zur Verfolgung von Aufrufen legt die Beitragsaufrufe fest. Platzieren Sie diesen Code einfach unten in der Datei single.php innerhalb der WordPress-Schleife.
<?php
setPostViews(get_the_ID());
?>
Hinweis zu Fragment-Caching: Wenn Sie ein Caching-Plugin wie W3 Total Cache verwenden, funktioniert die obige Methode zum Festlegen von Aufrufen nicht, da die Funktion setPostViews() niemals ausgeführt würde. W3 Total Cache verfügt jedoch über eine Funktion namens Fragment-Caching. Verwenden Sie anstelle des oben genannten Folgendes, damit setPostViews() einwandfrei funktioniert und alle Ihre Beitragsaufrufe verfolgt, auch wenn Sie Caching aktiviert haben.
<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->
Der folgende Code ist optional. Verwenden Sie diesen Code, wenn Sie die Anzahl der Aufrufe innerhalb Ihrer Beiträge anzeigen möchten. Platzieren Sie diesen Code innerhalb der Schleife.
<?php
echo getPostViews(get_the_ID());
?>
Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzuf ilde{A}gen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress kopieren / einf ilde{A}gen, damit Sie Ihre Website nicht versehentlich besch ilde{A}digen.
Wenn Ihnen dieser Code-Schnipsel gefallen hat, ziehen Sie bitte in Betracht, unsere anderen Artikel auf der Website zu lesen, wie zum Beispiel: 10 beste WordPress-Testimonial-Plugins und wie man die Autorenverfolgung in WordPress mit Google Analytics einrichtet.
Danke
Ich habe remove_action() hinzugefügt, aber es zählt immer noch 1 zum letzten Beitrag, wenn ich einen Beitrag öffne. Bitte helfen Sie mir.
Hey, danke Mann! Aber ich bekomme das Bild mit den Aufrufen nicht, wie Sie es hier zeigen. Können Sie mir helfen, das Bild auch zu bekommen.
Ich habe festgestellt, dass dieser Code-Schnipsel nicht mit dem übereinstimmt, was ich in meinen Jetpack-Statistiken sehe. Hat sonst noch jemand das gleiche Problem?
es zählt nur eindeutige Aufrufe, wie kann ich es ändern, damit es jeden einzelnen Aufruf zählt (jede Aktualisierung)
Tolle Tipps! Vielen Dank.
Tolle Tipps! Danke fürs Teilen. Ich bräuchte aber noch etwas Hilfe.
Ich möchte die beliebtesten Beiträge nur der letzten Woche oder des letzten Monats anzeigen? Kann mir jemand helfen? Thx
Tolles Snippet. Funktioniert super.
Wissen Sie, ob es möglich ist, jetzt eine Liste der „beliebtesten Kategorien“ zu haben, basierend auf den Kategorien der meistbesuchten Beiträge?
Ich habe diesen Code ausprobiert, er fügt einen Zähler ein, zeigt aber für alle Beiträge denselben Zähler an, auch wenn ich
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);
Irgendwelche Ideen?
Das scheint zu funktionieren, aber ich sehe ein Problem in meinem speziellen Fall… Ich verwende diesen Code in einem Sidebar-Widget (fügt die Lesestandszahl zu einer Abfrage der neuesten Beiträge hinzu):
$args = array( ‘numberposts’ => 3, ‘order’=> ‘ASC’, ‘orderby’ => ‘title’ );
$postslist = get_posts( $args );
foreach ($postslist as $post) : setup_postdata($post);
setPostViews(get_the_ID()); ?>
Ich sehe zwei Dinge:
– Die drei aufgelisteten Beiträge zeigen immer einen inkrementellen Zähler im Vergleich zueinander an (Beitrag 1 = 0 Aufrufe, 2 = 1 Aufruf, 3 = 2 Aufrufe). Ich bin mir nicht sicher, ob das korrekt ist.
– Wenn ich die Seite aktualisiere, werden bei allen 3 zum Zähler hinzugefügt (0, 1 und 2 zeigen jetzt 3, 4 und 5). Ich habe den remove_action-Code zu functions.php hinzugefügt, aber es scheint, als hätte er keine Wirkung.
Ich bin mir nicht sicher, was die Ursache dafür sein könnte...
Wenn ich in Firefox einen neuen Tab öffne, erhöht er sich um 1, aber wenn ich die Seite aktualisiere, erhöht er sich um 2.
Hat jemand das gleiche Problem? Warum passiert das? Wegen des Browsers?
hmmmmmm, wie kann ich nach sagen wir 24 Stunden um eins reduzieren, nachdem es hochgezählt wurde?
Lass mich nur sehen, ob ich richtig verstehe, dass du von jedem Aufruf alle 24 Stunden eins abziehen möchtest?
Yep, für jeden Aufruf einen Aufruf 24 Stunden später abziehen. Verstanden? Habe am Ende einen Cronjob verwendet. Wenn du eine einfachere Lösung hast. Ich bin ganz Ohr.
Ein Cron ist so ziemlich der beste Weg, ein anderer Weg würde davon abhängen, dass Leute eine Seite aufrufen, um zu dekrementieren, und könnte leicht weit zurückliegen.
[...] Beitrag-Aufrufe mit Beitrags-Metadaten verfolgen [...]
Danke Mann für deine Arbeit.. sie ist großartig
großartige Arbeit
Kann ich den Code
bekommen, um die meistbesuchten Beiträge in einem Widget oder einer Seite anzuzeigen
Kevin,
Kann dieses Skript für benutzerdefinierte Post-Typen verwendet werden?
Hallo Rafa, sollte ohne Probleme verwendet werden können.
Ok, ich werde es versuchen. Wie bekommen wir die Aufrufzahlen in den CPT-Admin-Beitragsspalten angezeigt?
Danke!
Habe mein Problem gelöst, ich musste „post_type=any“ zur Abfrage hinzufügen und jetzt sehe ich alle meine benutzerdefinierten Beitragstypen.
Großartig! Danke für den Code, scheint gut zu funktionieren.
Vielen Dank, mein Lieber… Eine großartige Arbeit….
Gestern sagte ich, es funktioniert… aber irgendwie, wenn wir auf einen Beitrag klicken, wird er richtig berechnet, aber wenn wir zum zweitneuesten Beitrag gehen und dann zum neuesten Beitrag, wird die Anzahl für den neuesten Beitrag um 2 erhöht. Ein ähnliches Muster ist bei drei Beiträgen zu sehen.
Bei drei Beiträgen wird er um 1 erhöht, wenn wir zum drittneuesten Beitrag gehen, aber wenn wir zum zweitneuesten Beitrag gehen, wird er um 2 erhöht und dann zum neuesten Beitrag, wird er ebenfalls um 2 erhöht.
Es wäre toll, wenn jemand bei diesem Problem helfen könnte.
Ich auch, jeder Beitrag wird um 2 erhöht. Warum???
Es funktioniert in Chrome, Firefox, aber in Safari erhöht sich die Anzahl der Aufrufe beim Aktualisieren der Seite um 2. Gibt es eine Lösung, hat jemand in Safari getestet?
Habe das Problem gefunden, eine Zeile jQuery-Code lässt es beim Aktualisieren doppelt zählen, keine Ahnung warum, aber habe es behoben.
Hallo, ich habe das gleiche Problem. Können Sie mir bitte helfen, wie Sie es behoben haben? Bei mir zählt es in allen Browsern doppelt.
Hallo allerseits!!
Tolle Tipps! Vielen Dank.
Ich habe mich gefragt, ob wir ein „Zeit“-Datum hinzufügen können?
Weil ich die Aufrufe von gestern/vor 2 Tagen/vor 2 Tagen usw. anzeigen möchte?
wp_get_archives ermöglicht es Ihnen, einen kurzen Zeitraum zu definieren, etwas in dieser Art wäre meiner Meinung nach nützlich.
http://codex.wordpress.org/Function_Reference/wp_get_archives
Ok, ich weiß, was Sie meinen, aber das ist nicht genau das, was ich will.
Ich möchte eine Art Diagramm erstellen.
Um eine Funktion zu erstellen, die anzeigt, ob der Beitrag positive oder negative Aufrufe hat. Ich möchte also die Aufrufe von gestern und heute vergleichen.
Nun, das ist viel komplexer, ich würde etwas Einfacheres vorschlagen, wie dieses Plugin.
http://wordpress.org/extend/plugins/official-statcounter-plugin-for-wordpress/
Hallo Kevin – Tolle Sachen 😉 Kurze Frage: Es funktioniert bei mir reibungslos, aber die Zählung beginnt bei 0. Ist es möglich, die bereits vorhandenen Aufrufe der Beiträge abzurufen? Danke
Hallo Hugo,
Nun, der Snippet speichert in Post-Meta, also wenn Sie den Snippet entfernt und dann wieder hinzugefügt hätten, sollte er von den letzten Werten fortfahren. Sie können jedoch jederzeit die benutzerdefinierten Felder bearbeiten, um die Werte zu ändern.
Hallo
Kevin Chard, ich komme aus Vietnam, mein Englisch ist nicht gut 🙁
Ich möchte Ihnen eine Frage stellen 🙂 : wie man die Beitragsaufrufe nur für Administratoren anzeigt (nur Administratoren können die Beitragsaufrufe sehen) 😀
Sie können den Code per E-Mail senden 😀
Dieser Snippet zeigt die Beitragsaufrufe in der Beitragsspalte im Admin-Bereich an. Wenn Sie sie jedoch auf der Website anzeigen möchten, aber nur für Administratoren, können Sie dies tun.
if(is_admin()){
echo getPostViews(get_the_ID());
}
Kevin, wie kann ich es so konfigurieren, dass nur Besucher gezählt werden, die keine Administratoren sind? Dies ist kein Anzeigeproblem, sondern ein Zählproblem. Ich bin sicher, dass !is_admin() eine Rolle spielt, aber ich weiß nicht, wo? Danke für die tollen Snippets.
Dies sollte für Sie funktionieren, ersetzen Sie einfach den Code aus Schritt eins durch den folgenden.
if(!current_user_can(‘administrator’)){
echo setPostViews(get_the_ID());
}
Wie können wir die Beitragsaufrufe nur auf der Admin-Seite anzeigen, auf der alle Beiträge aufgeführt sind? Ich meine die edit.php-Seite
Ich habe einen Snippet dafür gepostet.
http://wpsnipp.com/index.php/functions-php/display-post-views-within-admin-post-columns/
Wie kann man das Wort „Views“ entfernen?
Zeile 9 bearbeiten
Danke, ich benutze es auf einer NEUEN Seite und es funktioniert brillant….
Ich lerne PHP unterwegs, daher hat mir Ihr Code ein paar Dinge beigebracht… VIELEN DANK NOCHMALS…
Cool Zaid, freut mich zu hören, dass Ihnen die Seite gefällt, und ich hoffe, dass Ihnen die Snippets gefallen!