<?php
global $wp_query;
$topuser = array();
$avatar_size = 100;
$args = array(
'role__in' => array('contributor', 'author'),
'hide_empty' => '1'
);
$users = get_users( $args );
foreach ( $users as $user ) {
$query = get_posts( array('author' => $user->ID, 'cat' => '3', 'numberposts' => -1, 'post_type' => 'post' ));
$counter = 0;
$post_count = count_user_posts( $user->ID );
if ( ! $post_count ) {
continue;
}
// get each post of a user
foreach ( $query as $post ){
$views = absint( get_post_meta( $post->ID, 'post_views_count', true ));
$counter += $views;
}
$topuser[] = array(
'id' => $user->ID,
'views' => $counter
);
wp_reset_query();
}
// function to sort array based on views count
function sortViews($a, $b) {
return $b['views'] - $a['views'];
}
usort($topuser, 'sortViews'); // sort the array
$rank = 0;
// Update rank of each user before pagination
foreach ($topuser as $user){
$rank++;
update_user_meta( $user['id'], 'user_rank', $rank );
}
// Pagination
$page = ! empty( $_GET['pg'] ) ? (int) $_GET['pg'] : 1;
$total = count( $topuser ); //total items in array
$limit = 20; //per page
$totalPages = ceil( $total/ $limit ); //calculate total pages
$page = max($page, 1); //get 1 page when $_GET['pg'] <= 0
$page = min($page, $totalPages); //get last page when $_GET['pg'] > $totalPages
$offset = ($page - 1) * $limit;
if( $offset < 0 ) $offset = 0;
// Get users from array for current page
$topuser = array_slice( $topuser, $offset, $limit );
//$rank=$offset;
$rankpostcount=$offset;
echo '<div id="top-artists-contributors">';
foreach ($topuser as $user){
//$rank++;
$rankpostcount++;
$query = get_posts( array('author' => $user['id'], 'cat' => '3', 'numberposts' => -1, 'post_type' => 'post' ));
$avatar = get_avatar($user['id'], $avatar_size);
$author_profile_url = get_author_posts_url($user['id']);
$profile = get_userdata($user['id']);
// get updated rank for each user
$rank = get_user_meta( $user['id'], 'user_rank', true );
if (count($query)) {
echo '<div class="rankpostcount-'.$rankpostcount.' single-item-9">';
echo '<div class="members-name-9"><a href="', $author_profile_url, '">' . $profile->first_name .'</a><div class="author-rank-9" title="Artist Rank">'.$rank.'</div></div>';
echo '</div>';
}
}
echo '</div>';
}
$link = get_the_permalink().'?pg=%d';
$pagerContainer="<div style="width: 300px;">";
if( $totalPages != 0 )
{
if( $page == 1 )
{
$pagerContainer .= '';
}
else
{
$pagerContainer .= sprintf( '<a href="' . $link . '" style="color: #c00"> « prev page</a>', $page - 1 );
}
$pagerContainer .= ' <span> page <strong>' . $page . '</strong> from ' . $totalPages . '</span>';
if( $page == $totalPages )
{
$pagerContainer .= '';
}
else
{
$pagerContainer .= sprintf( '<a href="' . $link . '" style="color: #c00"> next page » </a>', $page + 1 );
}
}
$pagerContainer .= '</div>';
echo $pagerContainer;
?>