Sidebar
ein-/ausblenden

Summe der Beiträge, Seiten, Kategorien, Tags, Kommentare für das WordPress Theme

Plugin für WordPress SEO

Anzeige

Im vorhergehenden Beitrag habe ich eine Lösung gezeigt, wie man ohne den Einsatz eines Plugins die Gesamtanzahl der Kommentare ausgeben kann, siehe Artikel „Summe der Kommentare in WordPress“. Scheinbar ist es aktuell sehr beliebt oder die Frage stand schon des öfteren und so kamen einige Anfragen per Kommentar, wie man auch andere statistische Werte auslesen kann und so im Frontend des Blog dem User mitteilen kann. Jeriko hat in den Kommentaren schon einen Hinweis gegeben der aber für den einen oder anderen nicht ausführlich genug ist, daher in diesem Artikel die Lösung.

Die folgenden Lösungen sind nur mit einer Version von WordPress größer/gleich 2.5 funktionieren. Da ich davon ausgehe, dass die meisten „Theme-Designer/-schrauber“, ihr Blog auf einer dieser Version fahren. Alternativ gern per Kommentar, dann versuche ich zu helfen.

Anzahl der Beiträge


$num_posts = wp_count_posts( 'post' );
$num_posts = $num_posts->publish; //publish, draft

Anzahl der Seiten


$num_pages = wp_count_posts( 'page' );
$num_pages = $num_pages->publish; //publish

Anzahl der Kategorien


$num_cats  = wp_count_terms('category');

Anzahl der Tags


$num_tags  = wp_count_terms('post_tag');

Anzahl der Kommentare


$num_comm  = get_comment_count();
$num_comm  = $num_comm['approved']; //approved, awaiting_moderation, spam, tot

// Möglichkeit 2
$num_comm2 = wp_count_comments( );
$num_comm2 = $num_comm2->approved; //approved, moderated, spam, total_comments

Ausgabe

Die obigen Syntax zeigen einfach und ohne die direkte Einbindung in HTML, wie man zu den Werten kommt. Kann man verschieden Arten von Inhalten auslesen, so stehen die entsprechenden Schlüssel im Kommentar des Code. An einem weiteren Beispiel zeige ich nochmal alle Ergebnisse mit Sprachanpassung und die Ausgabe in HTML als Liste. Diese Ausgabe kann sich dann sicher jeder anpassen und in sein Design integrieren.


<?php
$num_posts = wp_count_posts( 'post' );
$num_posts = $num_posts->publish; //publish, draft
$num_posts = sprintf( __ngettext( '%s Beitrag', '%s Beitr&auml;ge', $num_posts ), number_format_i18n( $num_posts ) );

$num_pages = wp_count_posts( 'page' );
$num_pages = $num_pages->publish; //publish
$num_pages = sprintf( __ngettext( '%s Seite', '%s Seiten', $num_pages ), number_format_i18n( $num_pages ) );

$num_cats  = wp_count_terms('category');
$num_tags  = wp_count_terms('post_tag');

$num_comm  = get_comment_count();
$num_comm  = $num_comm['approved']; //approved, awaiting_moderation, spam, total_comments
$num_comm  = sprintf( __ngettext( '%s Kommentar', '%s Kommentare', $num_comm ), number_format_i18n( $num_comm ) );
$num_comm2 = wp_count_comments( );
$num_comm2 = $num_comm2->approved; //approved, moderated, spam, total_comments

echo '<ul>';
echo '<li>Beitr&auml;ge: ' . $num_posts . '</li>';
echo '<li>Seiten: ' . $num_pages . '</li>';
echo '<li>Kategorien: ' . $num_cats . '</li>';
echo '<li>Tags: ' . $num_tags . '</li>';
echo '<li>Kommentare: ' . $num_comm . '</li>';
echo '<li>Kommentare 2: ' . $num_comm2 . '</li>';
echo '</ul>';
?>

Auch beide dieser Ausgabe kann man mittels diverser Möglichkeiten das Design anpassen. Dazu kann man Klassen oder IDs vergeben, die man dann per CSS anspricht. Ein Beispiel zeigt der Artikel „Summe der Kommentare in WordPress“, bei dem man einen Button mit der Anzahl der Kommentare dargestellt hat.

Meistkommentierten Beiträge


<?php
if ( !function_exists('most_popular_posts') ) {
	function most_popular_posts($no_posts = 5, $before = '<li>', $after = '</li>', $show_pass_post = false, $duration='') {
		global $wpdb;

		$request  = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments";
		$request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish'";

		if(!$show_pass_post)
			$request .= " AND post_password =''";

		if($duration != "") {
			$request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date ";
		}

		$request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
		$posts    = $wpdb->get_results($request);

		$output = '';
		if ($posts) {
			foreach ($posts as $post) {
			$post_title    = stripslashes($post->post_title);
			$comment_count = $post->comment_count;
			$permalink     = get_permalink($post->ID);

			$output .= $before . '<a href="' . $permalink . '" title="' . $post_title.'">' . $post_title . '</a> (' . $comment_count.')' . $after;
			}
		} else {
			$output .= $before . "None found" . $after;
		}

		return $output;
	}
}
?>

<?php echo most_popular_posts(); ?>

21 Kommentare zu „Summe der Beiträge, Seiten, Kategorien, Tags, Kommentare für das WordPress Theme“

  1. 1
    Kommentar von Marvin

    danke sehr. da schreibt man einen kommentar was man sich noch wünscht und zack ist es da. sehr schön beschrieben!

  2. 2
    Kommentar von ad

    Du hast bei dir im Feed die Anzahl der Kommentare für den Beitrag eingebaut. Ist das eine Funktion des Copyright-Plugins oder auch eine Sonderlösung?

  3. 3
    Kommentar von Frank Bültge

    @ad: ja, das Plugin kann mit diversen Syntax erweitert werden, steht in den Optionen zum Plugin.

  4. 4
    Kommentar von nastorseriessix

    Danke Frank, für diese ausführliche Erklärung des ganzen. Somit kann ich dann jetzt endlich mich daran machen und diese Funktion in meinem Blog verbauen. DANKE, mein HELD! ;)

  5. 5
    Kommentar von ad

    @Frank: Danke, da habe ich es nicht gefunden, aber auf der Seite des Plugins! ;)

  6. 6
    Kommentar von Jan Amundsen

    Sehr interessante Lösung. Ich denke, das werd ich auch noch irgendwo einbauen. Vielleicht im Footer ungefähr so:

    "Es wurden bislang W Beiträge in X Kategorien mit Y Tags versehen. Insgesamt wurden Z Kommentare verfasst."

    Die Zahl der moderierten und nicht moderierten Kommentare und wieviele Drafts man hat, dürfte den gemeinen Besucher nicht so interessieren. Trotzdem gut, dass man das so auslesen und anzeigen kann.

  7. 7
    Kommentar von Nici

    Vielen Dank, für deine ausführliche Erklärung! ^_^
    Aber was ist denn mit diesen Befehlen:


    Sind die veraltet? Kann man die noch benutzen?

  8. 8
    Kommentar von Frank Bültge

    @Nici: der Code wurde verschluckt, eventuell sendest du ihn per Mail, dann pflege ich ihn nach.

  9. 9
    Kommentar von Nici

    Ok, noch ein Versuch:

    (?php print sem_showTotalPosts(); ?)
    (?php print sem_showTotalComments(); ?)

    Dieses mal habe ich die spitzen Klammern, durch runde ersetzt ^_~

  10. 10
    Kommentar von Frank Bültge

    @Nici: Die Funktionen kommen sicher aus einem Plugin oder Theme, die sind nicht von WordPress.

  11. 11
    Kommentar von nastorseriessix

    Noch anbei ne Frage dazu.

    Kann man So eine Besucher Anzeige wie dort im Footer, auch ohne Plugin hinbekommen? Also auf etwa die gleiche Weise?

    Ein kleines Code-Tutorial von dir dazu, evtl. ? ;)

  12. 12
    Kommentar von Frank Bültge

    @nastorseriessix: Dies ist nicht ohne die Speicherung von Daten zu machen; Frank macht das via Service und die Integration von JS.

  13. 13
    Kommentar von nastorseriessix

    Aha, verstehe. ;)

    Na so wichtig ist mir diese Funktion nun auch nicht, wollte nur mal halt genau wissen, von jemanden der Ahnung hat davon, ob das auch ohne Plugin funktioniert. Am besten auf die ähnliche Art und Weise wie das Auslesen der anderen Daten, mit hilfe des Codes-snippet das du hier vorgestellt hast. Danke aber für die Erklärung. ;)

    ...anbei noch eine Frage, da ich es selber nicht mehr rausfinde so recht. Es gibt doch die Möglichkeit, für verschiedene Usergruppen auch verschiedene Themes anzuzeigen, aber wie ging das noch mal? Meines wissens mit einem Plugin, aber ich weiss nicht mehr wie das heisst. Ne idee?....

  14. 14
    Kommentar von Frank Bültge

    @nastorseriessix: Dazu gibt es hier im Blog eine Lösung, die du dir anpassen kannst: User Theme

  15. 15
    Kommentar von ocean90

    Vielen Dank für den Beitrag, genau das, was ich gesucht habe :)

  16. 16
    Kommentar von Markus

    Danke Frank für dieses Tutorial, Dein Blog ist immer wieder eine Schatztruhe für WP-Anwender :)

    Was mich noch interessieren würde: Ist es auch möglich, die meistgelesenen und/oder meistkommentierten Beiträge auszugeben? Ich habe das bisher mit Semmelstatz gemacht, aber irgendwie verträgt sich das Plugin nicht mehr mit meinem Theme...

  17. 17
    Kommentar von Frank Bültge

    @Markus: Die meistgelesenen kann man nur via Plugin ausgeben, ich nutze dafür mein PostReadCouter, siehe Plugins.
    Für die meistkommentierten Beiträge geht folgende Funktion.

    <?php
    if (!function_exists('most_popular_posts')) {
    	function most_popular_posts($no_posts = 5, $before = '
    
  18. ', $after = '
  19. ', $show_pass_post = false, $duration='') { global $wpdb; $request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments"; $request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish'"; if(!$show_pass_post) $request .= " AND post_password =''"; if($duration !="") { $request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date "; } $request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts"; $posts = $wpdb->get_results($request); $output = ''; if ($posts) { foreach ($posts as $post) { $post_title = stripslashes($post->post_title); $comment_count = $post->comment_count; $permalink = get_permalink($post->ID); $output .= $before . '' . $post_title . ' (' . $comment_count.')' . $after; } } else { $output .= $before . "None found" . $after; } return $output; } } ?> <?php echo most_popular_posts(); ?>
  20. 18
    Kommentar von Markus

    Danke für die schnelle Antwort. Dass ich für die meistgelesenen Artikel ein Plugin benötige, habe ich befürchtet. Das andere werde ich gleich mal testen.

  21. 19
    Kommentar von Neschkudla Patrick

    Danke! Sehr hilfreich!

  22. 20
    Kommentar von michou

    perfekt. genau das hab ich gesucht. allerdings hätte ich noch eine frage.

    und zwar wollte ich genau wie auf deiner seite unten eine navigation einfügen. Doe muss aber gar nocht o umfangreich sein, ich würde gern einfach nur "Seite ? von ?" dastehen haben. einen count hab ich ja jetzt .. aber vlt könntest du mir noch sagen wie ich die aktuelle seite auslesen kann.

  23. 21
    Kommentar von Frank Bültge

    @mihou:dazu gibt es Plugins für WordPress, z.B. WP PageNavi

Überlastung, Kommentare sind vorübergehend geschlossen

Ich bin urlaubsreif, ersticke in Arbeit und damit auch für die Leser des Weblogs nicht zu erreichen. Bitte geduldet euch ein wenig mit Supportanfragen.
Leider muss ich die Kommentarfunktion deaktivieren, ansonsten würde ich weiter in Arbeit ersticken oder die Anfragen nicht nach bestem Gewissen beantworten.

Vielen Dank für das Verständnis!