Hmm, I decided to create a plugin, but while fiddling around, I realized I can do it all from inside a functions.php.
Here's my code, in case anyone wants to do something similar:
add_filter('the_content', 'display_users_replace_marker');
function display_users() {
global $wpdb;
$authors = $wpdb->get_results("SELECT ID, display_name from $wpdb->users where id != 1 ORDER BY display_name ASC");
$allusers = '';
$i=1;
foreach ($authors as $author) {
$allusers .= '<div class="usercolumn'.$i.'"><h2>'.$author->display_name.'</h2></div>';
$i++; if ($i==4) {$i=1;}
}
return $allusers;
}
function display_users_replace_marker($content) {
if(!preg_match('[display_users]', $content)) {
return $content;
}
else {
$allusers = display_users();
return str_replace('[display_users]', $allusers, $content);
}
}
I'd appreciate any input as to how clean this thing is. I'm not looking for long-term stability since I will not be updating this user's website to newer WP versions. So if it works now, I'll keep it :)
(it's a site that's only interesting for a limited time and will be turned off after the event.)