Display daily subordinates

A list of current and next day’s schedule can be displayed via shortcode. Only subordinates who are not set up on a “leave” schedule will appear.

Subordinates of the current day: [shift-schedule-users]

Subordinates of a given day: [shift-schedule-users day="2020-12-20"]

Tomorrow’s subordinates: [shift-schedule-users day="tommorow"]

Subordinates 1 day later than the current one: [shift-schedule-users day="+1"]

Subordinates x day(s) later than the current one: [shift-schedule-users day="+x"]

Use shift filter: [shift-schedule-users filter="slug1,slug2"]

Use category filter: [shift-schedule-users category="category_slug1,category_slug2"]

The display can be changed through three filters. To do this, place the following codes in the (child) theme in functions.php and modify them as needed:

To display an employee:

remove_filter('shift_schedule_show_user', 'shift_schedule_698_show_user');
function my_show_user($id, $flag) {

    $user = get_post($id);
    $image_src = get_the_post_thumbnail_url($id, 'post-thumbnail');
    $flag = shift_schedule_698_get_flag($flag);

    $html = '<li class="shift-schedule-user">'; 
    if (!empty($image_src)) {
        $html .= '<img src="'.$image_src.'" />';
    }
    $html .= '<span class="shift-schedule-user-title">'.$user->post_title.'</span>' .
             '<span class="flag" style="background-color:'.$flag->color.';">'.$flag->chars.'</span>'.
             '<span class="flag-title" data-slug="'.$flag->alias.'">'.$flag->title.'</span>';            
    
    $html .= '</li>';
    
    return $html;
}
add_filter('shift_schedule_show_user', 'my_show_user', 10, 2);

Grouping:

remove_filter('shift_schedule_render_group', 'shift_schedule_698_render_group');
function my_render_group($html) {
    $html = '<ul class="shift-schedule-users">' . $html . '</ul>';
    return $html;    
}
add_filter('shift_schedule_render_group', 'my_render_group', 10, 1);

Show date and schedule type:

This filter is not defined in the plugin, but if you define it in a (child) theme functions.php, the plugin will use it. It allows you to display the date and shift types.

function shift_schedule_my_render_properties($original_html, $day, $flags_text) {
    
    $day = date_i18n(get_option('date_format'), strtotime($day));
    
    $flags_html = '';
    $flags = array();
    if (!empty($flags_text)) {

        $flags = explode(',', $flags_text);
        $flags_html = array();
        $options = shift_schedule_698_get_options();

        foreach ($options['types'] as $type) {
            if (in_array($type->alias, $flags)) {
                $flags_html[] = '<div class="flag" style="background-color:'.$type->color.';">'.$type->title.'</div>';
            }
        }
        $flags_html = implode(', ', $flags_html);
    }

    $html = '<div class="shift-schedule-users-properties">' . 
            '<div class="shift-schedule-users-date '.implode(' ', $flags).'">'.$day.'</div>';
    if (!empty($flags_html)) {
        $html .= '<div class="shift-schedule-users-flags '.implode(' ', $flags).'">'.$flags_html.'</div>';
    }
    $html .= $original_html . '</div>';

    return $html;    
}
add_filter('shift_schedule_render_properties', 'shift_schedule_my_render_properties', 10, 3);

If there are no employees to display:

remove_filter('shift_schedule_no_sunordinates', 'shift_schedule_698_no_sunordinates');
function my_no_sunordinates($text) {
    return '<div class="shift-schedule-warning">' . $text . '</div>';
}
add_filter('shift_schedule_no_sunordinates', 'my_no_sunordinates', 10, 1);