'Authors', 'displayType' => 'cols', 'number' => '1', 'avSize' => '60' ); } // GET AUTHORS' IDS, NICE NAMES, AND DISPLAY NAMES (in post count 'descending' order) $get_authors_by_id = "SELECT ".$wpdb->users.".ID, ".$wpdb->users.".user_nicename ,".$wpdb->users.".display_name FROM ".$wpdb->users. " INNER JOIN ".$wpdb->posts." ON ".$wpdb->users.".ID=".$wpdb->posts.".post_author WHERE post_status='publish' GROUP BY post_author ORDER BY count(post_author) DESC"; $author_ids = $wpdb->get_results($get_authors_by_id); // FIND THE NECESSARY WIDTH OF THE DIV THAT SURROUNDS THE WIDGET $width = ($authorGrid_options['avSize']+5)*$authorGrid_options['number']; // SET DIV echo '
'; // IF WE'RE DISPLAYING BY COLUMNS if($authorGrid_options['displayType'] == 'cols') { $i = 1; foreach($author_ids as $author) { // DISPLAY AVATAR AS LINK TO AUTHOR'S POSTS PAGE echo "user_nicename."\" style=\"margin-right: 1px;\">"; echo get_avatar($author->ID, $authorGrid_options['avSize'], none, $author->display_name); echo "\n"; $i++; // INSERT
TAG WHEN THE COLUMN LIMIT IS REACHED if($i > $authorGrid_options['number']) { echo "
\n"; $i = 1; } } // IF WE'RE DISPLAYING BY ROWS } else { // FIGURE OUT HOW MANY COLUMNS WILL GO IN THE FIRST ROW $numberOfAuthors = count($author_ids); $numberOfColumns = intval($numberOfAuthors / $authorGrid_options['number']); if($numberOfColumns < $numberOfAuthors / $authorGrid_options['number']) { $numberOfColumns++; } $i = 1; $r = 0; foreach($author_ids as $author) { // FIX TOP AND BOTTOM MARGINS FOR ONE-COLUMN DISPLAYS, DISPLAY AVATARS if($numberOfColumns == 1) { echo "user_nicename."\" style=\"margin: 1px 0px 0px 0px; padding: 0px;\" >"; echo get_avatar($author->ID, $authorGrid_options['avSize'], none, $author->display_name); echo "\n"; } else { echo "user_nicename."\" style=\"margin: 0px 2px 0px 0px; padding: 0px;\" >"; echo get_avatar($author->ID, $authorGrid_options['avSize'], none, $author->display_name); echo "\n"; } $i++; $numberOfAuthors--; // WHEN WE'VE REACHED THE END OF THE ROW, INSERT A
TAG if($i > $numberOfColumns) { echo "
\n"; $r++; $i = 1; // DETERMINE THE NUMBER OF COLUMNS IN THE NEXT ROW if($numberOfAuthors > 0) { $numberOfColumns = intval($numberOfAuthors / ($authorGrid_options['number'] - $r)); if($numberOfColumns < $numberOfAuthors / ($authorGrid_options['number'] - $r)) { $numberOfColumns++; } } } } } // END THE DIV echo '
'; } function widget_authorGrid($args) { global $wpdb; // GET OPTIONS FROM DATABASE, IF NO OPTIONS EXIST, SET DEFAULTS if(get_option('authorGrid_options')) { $authorGrid_options = get_option('authorGrid_options'); } else { $authorGrid_options = array( 'title' => 'Authors', 'displayType' => 'cols', 'number' => '1', 'avSize' => '60' ); } extract($args); echo $before_widget; echo $before_title;?> $authorGrid_title, 'displayType' => $authorGrid_displayType, 'number' => $authorGrid_number, 'avSize' => $authorGrid_avSize ); // INSERT OPTIONS ARRAY INTO DATABASE update_option( 'authorGrid_options', $authorGrid_options); unset($_POST); } // DISPLAY WIDGET OPTIONS // GET PRE-EXISTING OPTIONS FROM DATABASE $authorGrid_options = get_option('authorGrid_options'); // FIND THE NUMBER OF AUTHORS WITH AT LEAST ONE PUBLISHED POST $numberOfAuthors = $wpdb->get_results("select distinct post_author from $wpdb->posts where post_status='publish' and post_type='post'"); // SET TITLE echo "Title:
\n"; echo ""; echo "

\n"; // SET WHETHER WE'RE USING COLUMNS OR ROWS echo "Display in:
\n"; if($authorGrid_options['displayType'] == "rows") { echo " Columns\n"; echo " Rows\n"; } else { echo " Columns\n"; echo " Rows\n"; } echo "

\n"; // SET THE NUMBER OF COLUMNS OR ROWS echo "Number of Columns/Rows
\n"; echo ""; echo "

\n"; // SET THE AVATAR SIZE echo "Avatar Size
\n"; echo ""; // HIDDEN INPUT echo ""; } function authorGrid_init() { wp_register_sidebar_widget( 'authorGrid', 'Author Grid', 'widget_authorGrid', array( 'description' => 'Displays all authors\' avatars in a grid' ) ); wp_register_widget_control('authorGrid', 'Test 123', 'widget_authorGridConfig', array( 'id_base' => 'authors' ) ); } add_action("plugins_loaded", "authorGrid_init"); ?>