Add Filter Dropdown in admin List screen

Reference Url

step 1: add a drop down in listing screen ex. in users screen

add_action(‘admin_footer’,’add_filter_to_user_listing’);
function add_filter_to_user_listing() {
global $wpdb;
global $pagenow;

if($pagenow == “users.php”){
?>
<script type=”text/javascript”>
jQuery(document).ready(function(){
var filter_html = “<?php render_filter(); ?>”;//alert(filter_html);
jQuery(“.tablenav-pages”).before(“<div class=\”alignleft actions\”><form method=\”get\” action=\”\”>”+filter_html+”</form></div>”);

//add action to filter button
jQuery(“#club-filter-button”).live(“click”, function(){
//get club id
var club_id_value = jQuery(“#user-club-listing”).val();
//alert(“user listing filter”);
window.location = “<?php echo home_url(); ?>/wp-admin/users.php?<?php echo TP_TEXONOMY_NAME; ?>=”+club_id_value;
});
});
</script>
<?php
}
}

function render_filter() {
global $typenow;
global $wp_query;

$taxonomy = TP_TEXONOMY_NAME;
$terms = get_terms( $taxonomy,array(‘hide_empty’=>0) );
if ( $terms ) {
printf( “<select name=’%s’ id=’user-club-listing’ class=’postform’ style=’width:250px;’>”, $taxonomy );
printf( “<option value=’0′ selected>%s</option>”, “Select Company” );
foreach ( $terms as $term ) {
if(isset($_GET[TP_TEXONOMY_NAME])){
if($_GET[TP_TEXONOMY_NAME] == $term->slug){
printf( “<option value=’%s’ selected>%s</option>”, $term->slug, $term->name );
}else{
printf( “<option value=’%s’>%s</option>”, $term->slug, $term->name );
}
}else{
printf( “<option value=’%s’>%s</option>”, $term->slug, $term->name );
}
}
print( “</select>” );
print( “&nbsp;&nbsp;<input type=’button’ id=’club-filter-button’ class=’button’ value=’Filter’ />” );
}
}

step 2: change in query when filter apply

add_action( ‘pre_user_query’, ‘extended_user_search’ );
function extended_user_search( $user_query ){
global $wpdb;
if(isset($_GET[TP_TEXONOMY_NAME]) && $_GET[TP_TEXONOMY_NAME] != “” && $_GET[TP_TEXONOMY_NAME] != “0”){
$club_value = $_GET[TP_TEXONOMY_NAME];
}else{
$club_value = “0”;
}
if($club_value != “0” && !empty($club_value)){
$user_query->query_from .= ” JOIN $wpdb->usermeta AS alias ON ($wpdb->users.ID = alias.user_id)”;//
$user_query->query_where .= ” AND alias.meta_key = ‘tp_mag_newsletter_”.$club_value.”‘ AND alias.meta_value = 1″;//which meta are we sorting with?
}else{

}
}