array key: extra_navigation

returns: HTML string

The extra_navigation definition is designed so that a filter can be accommodated, generally dropdowns, but it also could be radio buttons or similar. The extra_navigation is outputted into the List Table form and the form values must be processed via query string in get_data and get_data_count. Typically the extra_navigation is followed by the filter button, however the filter button could be omitted for various reasons, including a Javascript submit.

$list_table_definitions['extra_navigation'] = "saturn_tables_cars_make_dropdown";
function saturn_tables_cars_make_dropdown() {

    global $wpdb;

    $makes = $wpdb->get_col( "SELECT DISTINCT make FROM saturn_tables_cars ORDER BY make" );

    $output = '<label for="filter-by-make" class="screen-reader-text">Filter by Make</label>';  
    $output .= '<select name="make" id="filter-by-make">';
    $output .= '<option>All Makes</option>';
    foreach ($makes as $make) {
        $selected = (isset($_GET['make']) && ($make == $_GET['make'])) ? " selected" : "";
        $output .= "<option$selected>" . esc_html($make) ."</option>";
    }
    $output .= '</select>';

    return $output;
}