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

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 8 Jahre zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

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(); ?>

Comments are closed.