I have custom fields in the user profile that displays in the team page. It reads "director" "researcher" "graduate" "intern" and some others. When adding a new team member, you pick from a select box with the options.
Right now the page displays the users in date of creation order but I need to show them in hierarchy order (all directors first, then the researchers, then graduate, etc, etc).
The new fields for the profile are in functions.php with the following code:
<!-- ROLE -->
<?php $role = get_user_meta($user->ID, 'member_role', true); ?>
<table class="form-table">
<tr>
<th><label for="member_role">Lab Role</label></th>
<td>
<select name="member_role" id="member_role">
<option value="" <?php if($role == ''){echo('selected="selected"');}?>>Choose role</option>
<option value="principal-investigator" <?php if($role == 'principal-investigator'){echo('selected="selected"');}?>>Principal Investigator</option>
<option value="labmanager" <?php if($role == 'labmanager'){echo('selected="selected"');}?>>Lab Manager</option>
<option value="administrativeassistant" <?php if($role == 'administrativeassistant'){echo('selected="selected"');}?>>Administrative Assistant</option>
<option value="postdoc" <?php if($role == 'postdoc'){echo('selected="selected"');}?>>Postdoctoral Fellow</option>
<option value="gradstudent" <?php if($role == 'gradstudent'){echo('selected="selected"');}?>>Graduate Student</option>
<option value="researchtech" <?php if($role == 'researchtech'){echo('selected="selected"');}?>>Research Technician</option>
<option value="undergradstudent" <?php if($role == 'undergradstudent'){echo('selected="selected"');}?>>Undergraduate Student</option>
<option value="labsupport" <?php if($role == 'labsupport'){echo('selected="selected"');}?>>Lab Support</option>
</select>
<br />
<span class="description">Please select your role at the lab.</span>
</td>
</tr>
</table>
<?php }
add_action( 'personal_options_update', 'my_save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'my_save_extra_profile_fields' );
add_action('user_register', 'my_save_extra_profile_fields');
add_action('profile_update', 'my_save_extra_profile_fields');
function my_save_extra_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) )
return false;
update_usermeta( absint( $user_id ), 'degrees_and_affiliations', wp_kses_post( $_POST['degrees_and_affiliations'] ) );
update_usermeta( absint( $user_id ), 'member_role', wp_kses_post( $_POST['member_role'] ) );
$items = array('principal-investigator', 'labmanager', 'administrativeassistant', 'postdoc', 'gradstudent', 'researchtech', 'undergradstudent', 'labsupport' );
$role = get_user_meta($user_id, 'member_role', true);
$order = array_search($role, $items);
update_user_meta( absint( $user_id ), 'lab_member_order', $order);
}
Then the code that shows the users in the page is as follows:
$results = get_users();
foreach ($results as $result) {
// Get data about each user as an object
$user = get_userdata($result->ID);
// Create a flat array with only the fields we need
$directors[$user->ID] = array(
'dir_order' => $user->menu_order,
'dir_id' => $user->ID,
'dir_name' => $user->first_name.' '.$user->last_name,
'dir_email' => $user->user_email,
);
}
// Sort
sort($directors);
// The list
echo '<ul id="rightcolumndirector">';
// For each result
foreach ($directors as $director) {
// Set up the variables
$dir_id = $director['dir_id'];
$dir_order = $director['dir_order'];
$dir_name = $director['dir_name'];
$dir_email = $director['dir_email'];
$dir_link = get_bloginfo('home').'/?author='.$director['dir_id'];
$dir_status = get_field('alumni', 'user_'.$dir_id);
if ($dir_status == 0 && $dir_id !== 24) { ?>
<div class="author-nucleus">
<a href="<?php echo get_author_posts_url( $dir_id ); ?>">
<div class="author-avatar">
<div class="hexa">
<div class="hex1">
<div class="hex2">
<?php echo get_wp_user_avatar( $dir_email, 'large' ); ?>
</div>
</div>
</div>
</div>
</a>
<div class="author-info">
<h2>
<a class="author-name" href="<?php echo get_author_posts_url( $dir_id ); ?>">
<?php echo $dir_name; ?>
</a><?php
if($dir_email != '')
{
printf('<a href="mailto:%s">%s</a>', $dir_email, '<span class="dashicons dashicons-email-alt"></span>');
}
?>
</h2>
<hr />
<?php
get_member_role($dir_id);
?>
<ul class="nucleus-icons-test">
<li>
<div>
<img src="<?php $user_icon = get_field('user_icon', 'user_'.$dir_id);
echo $user_icon['url']; ?>" />
<span><?php echo $dir_name; ?></span>
</div>
</li>
<?php
get_subjects($dir_id, 'post', 4);
?>
</ul>
</div>
</div>
<?php
}
}
?>