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.
Irgendeine Idee, wie man das mit einem benutzerdefinierten Beitragstyp verwendet?
tolle Sachen, genau das, wonach ich gesucht habe?
Cool, freut mich zu hören, dass dir der Schnipsel gefällt, viel Spaß damit.
Können wir auch die Anzahl der auf der WordPress-Site hochgeladenen Bilder zählen? Ich bin sicher, wir können es... irgendeine Ahnung?
Entschuldigung für die Verzögerung!
http://wpsnipp.com/index.php/functions-php/count-total-number-of-jpg-gif-png-images-in-media-library/
Beispiel von Bob ist möglich?
Meist gesehene Beiträge
Beitragstitel3 100 Aufrufe
Beitragstitel1 50 Aufrufe
Beitragstitel2 10 Aufrufe
Welche Auswirkungen hat die Verwendung dieser Funktion auf die WordPress-Datenbank? Kann ich die Protokolle (Aufrufe) zu festgelegten Zeiten löschen??
Dies ist kein Plugin mit vielen Funktionen, es erhöht lediglich den Zähler in den Beitragseigenschaften bei jedem Aufruf des Beitrags um eins.
Wie entferne ich das Wort „Aufrufe“?
Hallo Joj,
Sie sehen in Zeile 09 return $count.’ Views’;
ersetzen Sie diese Zeile durch die folgende und das war's.
return $count;
Danke für den Schnipsel. Ich habe setPostViews() leicht modifiziert, um die Aufrufe von Redakteuren oder höherer Ränge abzuziehen:
function setPostViews($postID) { if (!current_user_can('level_7') ) : $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); } endif; }Danke Drew, sehr cool.
Funktioniert bei mir nicht auf localhost. Ich weiß nicht warum, aber jede Ansicht, egal ob auf Editor-Ebene oder höher, wird gezählt.
Apropos, wie kann man verhindern, dass die Ansichten vom Autor des Beitrags gezählt werden?
Ups. War beim Testen nicht als Admin angemeldet. (facepalm)
Freut mich zu hören, dass es jetzt funktioniert.
Hallo Kevin!
Habe diesen Code auf einer frischen WP 3.2-Installation ausprobiert und er funktioniert gut. Ich habe jedoch bemerkt, dass, obwohl er den Zähler nur um 1 erhöhen sollte, meiner um 4 erhöht. Irgendwelche Vorschläge, was falsch sein könnte?
Habe die Funktionen an der richtigen Stelle eingerichtet und die einzige Änderung, die ich vorgenommen habe, war, die Zählungen von angemeldeten Besuchern auszuschließen. Selbst ohne diese Änderung gibt der Code 4 Ansichten statt 1.
Hä? Sollte nur um eins zählen, da es nur count++ ist. Haben andere Leute deine Seite besucht, während sie lief, oder mehrere Tabs offen gehabt?
Es ist auf meinem localhost. Es ist wirklich seltsam, aber vielleicht ist es nur eine Browser-Sache. Danke trotzdem für den netten kleinen Code-Schnipsel!
Kevin,
Zuerst einmal, ich liebe die Einfachheit dieser Lösung! Ich habe den Code auf meinem lokalen Server richtig zum Laufen gebracht, aber ich habe bemerkt, dass bei jedem Neuladen meiner Homepage (die meine 5 neuesten Einträge enthält) jeder Neuladevorgang meiner Homepage eine Ansicht zum Zähler für jeden der 5 Beiträge hinzufügt. Gibt es eine Möglichkeit, das zu vermeiden und nur die tatsächlichen Seitenaufrufe des Artikels zu zählen? Danke
Hallo Rgsanchezz, freut mich zu hören, dass dir der Code-Schnipsel gefällt. Bezüglich deiner Frage stelle sicher, dass du setPostViews(get_the_ID()); innerhalb der single.php-Vorlage platzierst oder innerhalb von if(is_singular()) sollte auch funktionieren, wenn du keine single.php-Vorlage verwendest. Das sollte das Problem lösen.
Hast du diesen Code-Schnipsel in einer separaten Schleife verwendet? Wenn ja, solltest du setPostViews(get_the_ID()); außerhalb der „meistgesehenen“-Schleife platzieren, damit er nur +1 für den aktuell angezeigten Beitrag zählt und nicht für alle in der Liste. Zum Beispiel:
FALSCH:
( ) RICHTIG: ( )
Entschuldigung, ich habe den Code in das Antwortfeld kopiert. Shortlinked über Codepad, schau es dir dort an : )
http://codepad.org/QOUWc3XB
Es ist nur eine Fälschung, nichts weiter, Kumpel. Wenn du in Firefox nachsiehst, wird es angezeigt, aber wenn du deine URL in Chrome und IE überprüfst, wird sie dort nicht angezeigt. Wenn du in Firefox nachsiehst, werden nur deine Aufrufe angezeigt, nichts weiter... und wenn du denkst, es ist mein Problem, sag es mir einfach.
Hallo Sunnysuffy, nun, der Snippet ist nicht gefälscht, aber wenn du Caching-Software auf deiner WordPress-Kopie laufen hast, könnte es Probleme geben. Supercache usw.
[...] ein gutes Beispiel für die Art von Tipps, die du auf wpsnipp.com findest, ist „Beitragsaufrufe ohne Plugin mit Post Meta verfolgen“. Kevin beschreibt zunächst, was der Snippet bewirken wird, und gibt dir dann eine [...]
Hey, das ist cool..
vielen Dank.
Cool, freut mich, dass dir der Snippet gefällt.
Erstaunlich, danke!
Kein Problem @4f9649a2dc0c5d186623a62544564bfe:disqus, freut mich, dass dir der Snippet gefällt!
Unnötig zu sagen, dass dies ein großartiger Snippet ist. Aber wenn es eine Lösung gäbe, um ihn mit Caching-Plugins, z. B. mit W3TC, zum Laufen zu bringen, wäre es noch besser.
Auf jeden Fall gute Arbeit!
Ich habe mir das noch nicht angesehen, ich werde mir einige der Plugins genauer ansehen und sehen, was ich tun kann. Freut mich aber, dass dir der Snippet gefällt.
Hallo Kevin, ich habe Foren durchsucht, um eine Lösung zu finden. Anscheinend haben viele Leute Probleme damit, Funktionen vom Caching auszuschließen. Leider scheint es bisher keine Heilung zu geben. Ich bin sicher, dass es eine gibt. Hoffen wir, dass einer von uns bald etwas findet 🙂
Hallo, soweit ich weiß, hat W3TC eine „Ignored query stems“-Option, um einige Funktionen vom Cache auszuschließen.
Hallo, nette Informationen, ist es möglich, echo getPostViews(get_the_ID()); im Admin-Panel-Beitragsbereich zu verwenden, wenn ich Beitragsaufrufe nur für persönliche/Admin-Zwecke verwenden möchte
Ja, das kannst du. Ich habe kurz danach einen Ausschnitt gepostet, genau aus diesem Grund.
http://wpsnipp.com/index.php/functions-php/display-post-views-within-admin-post-columns/
Das ist großartig, es funktioniert brillant. Ich werde es auf einer neuen Wallpaper-Website verwenden, an der ich arbeite. Ich habe Ihre Website für zukünftige Referenzen in den Funktionen notiert.
Ich frage mich, ob etwas getan werden kann, um nur 1 Aufruf pro Sitzung für jeden Benutzer zu erfassen. Das wäre cool, um „gefälschte“ Aufrufe beim Aktualisieren der Seite zu verhindern. Wenn das jemand tun kann (wenn es überhaupt möglich ist), wäre das großartig.
Danke @6c9628c836d0d3ed67e8ef3b43a993dd:disqus Schön zu hören, dass Ihnen der Ausschnitt gefällt! Ich bin sicher, so etwas könnte gemacht werden, aber ich würde dies eher als Methode zur Verfolgung der Beliebtheit eines Beitrags verwenden als für detaillierte Statistiken.
Ich habe ein Problem damit. Wenn ich den zweitneuesten Beitrag ansehe, erhält der neueste Beitrag 1 Aufruf. Haben Sie eine Idee, warum?
Der einzige Grund, der mir einfällt, ist, dass Sie die Funktion setPostViews(get_the_ID()); nicht innerhalb von single.php haben? Können Sie bestätigen, dass dies der Fall ist...
Ja, es ist in single.php in der Schleife
Ich habe dasselbe Problem, nachdem ich eine Liste der beliebtesten Beiträge in der Seitenleiste eingerichtet habe, unter Verwendung des Artikels „Beliebteste Beiträge anhand von Aufrufen von Post-Meta“. setPostViews(get_the_ID()); ist in single.php. setPostViews(get_the_ID()); ist in single.php.
Ich habe hier auch ein Problem. Meins ist in single.php, ich habe die Anweisungen befolgt. Ich bemerke jedoch, dass, wenn ich einen Beitrag besuche (mit einer Beitrags-ID, sagen wir 20), ein anderer Beitrag (mit einer Beitrags-ID, sagen wir 22) ebenfalls +1 auf die Aufrufanzahl erhält. Das Seltsame ist, dass, wenn ich die von der Funktion setPostViews empfangene Beitrags-ID ausgebe, nur die Beitrags-ID 20 auf meinem Bildschirm angezeigt wird.
Nun, es sollte ohne Probleme funktionieren, aber wenn Sie die Beiträge bearbeiten, können Sie das benutzerdefinierte Feld sehen, das mit den aktuellen Beitragsaufrufen hinzugefügt wurde. Ich würde die eine Seite neu laden und sehen, ob sich das benutzerdefinierte Feld bei beiden Beiträgen aktualisiert. Welche Version von WordPress verwenden Sie derzeit?
Ich hatte dasselbe Problem. Es hat ewig gedauert, bis ich es herausgefunden habe. Das Problem wird dadurch verursacht, dass WordPress relationale Links für die vorherigen und nächsten Beiträge im Kopf lädt. Firefox ruft standardmäßig REL-Links mit dem Wert „Next“ vorab ab, sodass beide Beiträge „aufgerufen“ werden.
Die Lösung, die ich gefunden habe, war, die Aktion zu entfernen, die diese Funktionalität zur wp_head-Funktion hinzufügt: remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);
Chris, danke für den Kommentar. Ich habe den Beitrag aktualisiert, um andere über diese Lösung für das Problem zu informieren. Ich habe auch einen Link zu Ihrer Website hinzugefügt. Nochmals vielen Dank,
Hallo Wprebel, Sie haben möglicherweise ein Plugin oder etwas anderes, das ein Problem mit dem Snippet verursacht hat. Das Snippet ist ziemlich einfach und aktualisiert nur die Beitragsmetadaten, wenn ein Benutzer den Beitrag lädt, da kann nicht viel schiefgehen. Ohne Ihr Theme im Detail zu betrachten, würde ich nur raten.
@e4fcff6cc58dc5e1b2ab556d9cdb2cb2:disqus Sie müssen die getPostViews()-Funktion verwenden, wenn Sie Beitragsaufrufe anzeigen möchten, und setPostViews() in single.php.
[…] Beitragsaufrufe ohne Plugin über Beitragsmetadaten verfolgen […]
[…] Via : link […]
Diese Technik funktioniert nicht mit Caching-Plugins. Ich würde das WP-PostViews-Plugin verwenden, da es eine bessere Kompatibilität mit Caching-Plugins bietet.
Das stimmt, es funktioniert nicht gut mit Caching-Plugins. Als schnelles Snippet zur Verfolgung von Aufrufen funktioniert es jedoch recht gut.
Ich würde den Meta-Schlüssel post_views_count in _post_views_count umbenennen, um ihn zu verbergen und zu vermeiden, dass Benutzer die Beitragsaufrufe über benutzerdefinierte Felder bearbeiten.
Ahh, guter Punkt, Daniel, das könntest du tun.
[…] um die Anzahl der Aufrufe anzuzeigen: <?php echo getPostViews(get_the_ID()); ?> Quelle →Anzahl der Beitragsaufrufe mit Beitragsmetadaten verfolgenDieses Snippet erstellt eine Liste Ihrer beliebtesten Beiträge […]
Gibt es eine Möglichkeit, eine Übersicht der meistbesuchten Beiträge zu erstellen?
Ähnlich wie die beliebtesten in Ihrer Seitenleiste, aber unter Verwendung der Beitragsaufrufe anstelle der Kommentare?
Hallo Alec,
Ich habe gestern einen Beitrag dazu fertiggestellt und werde ihn in etwa einer Stunde veröffentlichen.
Erster Besuch auf Ihrer Seite, und ich bin schon Ihr Held! +1
Ist es möglich, basierend auf diesem Code eine Liste der am wenigsten angesehenen Beiträge zu erstellen?
Ich bin mir nicht sicher, ob ich das richtig verstehe. Können Sie das etwas genauer erklären.
Beispiel:
Meistgesehene Beiträge
Beitragstitel3 100 Aufrufe
Beitragstitel1 50 Aufrufe
Beitragstitel2 10 Aufrufe
Hallo Bob,
Ja, ich hatte darüber nachgedacht, so etwas zu tun. Ich werde ein wenig damit herumspielen und einen Snippet posten.
Habe gerade diesen Beitrag gefunden.
http://www.moocr.com/blog/posts/2010/display-posts-views-count-without-plugin-in-wordpress.html
Habe gemacht, was der Typ gesagt hat. Funktioniert anscheinend nicht. Funktioniert es auf localhost?
Es sollte auf localhost einwandfrei funktionieren. Allerdings müssten Sie die Seite neu laden, um die Aufrufe zu sehen. Vergessen Sie nicht, setPostViews innerhalb der Schleife in single.php einzufügen. Ich habe es auf wpsnipp.com getestet, um Aufrufe zu verfolgen, und es hat gut funktioniert. Der Snippet fügt eine Zahl zu den Post-Metadaten hinzu und erhöht diese jedes Mal, wenn single.php geladen wird. Welche WordPress-Version verwenden Sie?
Danke. Habe gerade herausgefunden, dass ich es nicht richtig implementiert habe.
Cool, freut mich, dass alles perfekt funktioniert hat…
Muss ich sie manuell festlegen?:/
Ja, Sie müssten diesen Code manuell zu Ihren WordPress-Vorlagen hinzufügen.
Großartige Weitergabe, Chad. Danke 😀