Created
November 15, 2012 23:23
-
-
Save Pleiades/4082312 to your computer and use it in GitHub Desktop.
Show Blog Statistics
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
add_shortcode('wcs_count', 'wcs_count_shortcode_handler'); | |
function wcs_count_shortcode_handler($atts) | |
{ | |
// extract parameters | |
$parms = shortcode_atts(array( | |
'type' => 'posts', | |
'format' => 'true', | |
'extra' => '1', | |
), $atts); | |
$type = strtolower($parms['type']); | |
$format = strtolower($parms['format']); | |
$extra = $parms['extra']; | |
// process t/f options | |
$b_format = false; | |
if (($format == 'yes') || ($format == 'y') || | |
($format == 'true') || ($format == '1')) | |
{$b_format = true;} | |
// exit | |
return wcs_get_count($type, $b_format, $extra); | |
} | |
function wcs_get_count($type='posts', $format='1', $extra='1') | |
{ | |
// TYPES: | |
// posts, posts_by_author, pages, tags, categories | |
// users, ms_users, blogroll, blogroll_categories, commenters | |
// comments, comments_pending, comments_spam, comments_pingback | |
// comments_by_user, comments_by_nicename, comments_by_email | |
// comments_per_post | |
// $extra is used with: | |
// posts_by_author, comments_by_user, comments_by_nicename, comments_by_email | |
// comments_per_post | |
// init | |
global $wpdb; | |
$type = strtolower($type); | |
$count = 0; | |
// process | |
switch($type) | |
{ | |
case 'posts': // published | |
$count = wp_count_posts('post'); | |
$count = $count->publish; | |
// options: publish, future, draft, pending, private, trash, auto-draft, & inherit | |
case 'posts_by_author': // use $extra for user/author id | |
case 'posts_by_user': | |
$query = "SELECT COUNT(*) FROM $wpdb->posts "; | |
$where = "WHERE post_type='post' AND post_status='publish' AND post_author='$extra'"; | |
$count = $wpdb->get_var($query . $where); | |
// alternative method is: count_user_posts() | |
break; | |
case 'pages': // published | |
$count = wp_count_posts('page'); | |
$count = $count->publish; | |
break; | |
case 'tags': | |
$count = wp_count_terms('post_tag'); | |
break; | |
case 'categories': | |
$count = wp_count_terms('category'); | |
break; | |
case 'users': | |
$count = count_users(); | |
$count = $count['total_users']; | |
break; | |
case 'ms_users': // multi-site | |
$count = get_user_count(); | |
break; | |
case 'blogroll': | |
$query = "SELECT COUNT(*) FROM $wpdb->links "; | |
$where = "WHERE link_visible='Y'"; | |
$count = $wpdb->get_var($query . $where); | |
break; | |
case 'blogroll_categories': | |
$count = wp_count_terms('link_category'); | |
break; | |
case 'commenters': | |
$query = "SELECT COUNT(DISTINCT comment_author) FROM $wpdb->comments "; | |
$where = "WHERE comment_approved='1' AND comment_type=''"; | |
$count = $wpdb->get_var($query . $where); | |
break; | |
case 'comments': | |
$query = "SELECT COUNT(*) FROM $wpdb->comments "; | |
$where = "WHERE comment_approved='1' AND comment_type=''"; | |
$count = $wpdb->get_var($query . $where); | |
break; | |
case 'comments_pending': | |
$query = "SELECT COUNT(*) FROM $wpdb->comments "; | |
$where = "WHERE comment_approved='0' AND comment_type=''"; | |
$count = $wpdb->get_var($query . $where); | |
break; | |
case 'comments_spam': | |
$query = "SELECT COUNT(*) FROM $wpdb->comments "; | |
$where = "WHERE comment_approved='spam' AND comment_type=''"; | |
$count = $wpdb->get_var($query . $where); | |
break; | |
case 'comments_pingback': | |
case 'comments_pingbacks': | |
case 'comments_trackback': | |
case 'comments_trackbacks': | |
$query = "SELECT COUNT(*) FROM $wpdb->comments "; | |
$where = "WHERE comment_approved='1' AND comment_type='pingback'"; | |
$count = $wpdb->get_var($query . $where); | |
break; | |
case 'comments_by_user': // use $extra for user_id | |
$query = "SELECT COUNT(*) FROM $wpdb->comments "; | |
$where = "WHERE comment_approved='1' AND comment_type='' AND user_id='$extra'"; | |
$count = $wpdb->get_var($query . $where); | |
break; | |
case 'comments_by_author': // use $extra for author nicename (case INsensitive) | |
case 'comments_by_nicename': | |
$query = "SELECT COUNT(*) FROM $wpdb->comments "; | |
$where = "WHERE comment_approved='1' AND comment_type='' AND comment_author='$extra'"; | |
$count = $wpdb->get_var($query . $where); | |
break; | |
case 'comments_by_email': // use $extra for author email (case INsensitive) | |
$query = "SELECT COUNT(*) FROM $wpdb->comments "; | |
$where = "WHERE comment_approved='1' AND comment_type='' AND comment_author_email='$extra'"; | |
$count = $wpdb->get_var($query . $where); | |
break; | |
case 'comments_per_post': // $extra is decimal place precision (0 for integer only) | |
// posts | |
$posts_count = wp_count_posts('post'); | |
$posts_count = $posts_count->publish; | |
// comments | |
$query = "SELECT COUNT(*) FROM $wpdb->comments "; | |
$where = "WHERE comment_approved='1' AND comment_type=''"; | |
$comment_count = $wpdb->get_var($query . $where); | |
// average | |
return round($comment_count / $posts_count, $extra); | |
default: | |
$count = 0; | |
} | |
// exit | |
if ($format) {$count = number_format_i18n($count);} | |
return $count; | |
/ | |
Copyright © 2011 Gizmo Digital Fusion (http://wpCodeSnippets.info) | |
you can redistribute and/or modify this code under the terms of the | |
GNU GPL v2: http://www.gnu.org/licenses/gpl-2.0.html | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[wcs_count type="posts"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment