Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add Custom filter to User admin list

Tags:

php

wordpress

I am displaying one custom column called company name in default user listing page. Now i want to filter that user listing page by that column name company name. How i can add my custom filter (one of meta_key) to filter default listing of user by using my column. Please find image for more clarity -

enter image description here

//Code to filter user list by Status
function admin_users_filter( $query ){
global $pagenow,$wp_query;

if ( is_admin() && $pagenow=='users.php' && isset($_GET['abc']) && $_GET['abc'] != '') {
   $query->search_term = urldecode($_GET['abc']);

   global $wpdb;

    if (!is_null($query->search_term)) {

      $query = $wpdb->get_results( " SELECT DISTINCT account_status FROM wp_custom_user_details ORDER BY account_status ASC " );

    }    
}
}

add_filter( 'pre_user_query', 'admin_users_filter' );


add_action( 'restrict_manage_users', 'restrict_abc_manage_list' );
function restrict_abc_manage_list()
{
?>
<select name="abc" style="float: none;">
    <option value=""><?php _e('Filter By Status', 'baapf'); ?></option>
    <option value="1">Active</option>
    <option value="2">Inactive</option>


 </select> 
 <input id="post-query-submit" class="button" type="submit" value="Filter" name="">
<?php  
}
like image 466
Hina Avatar asked Sep 20 '25 21:09

Hina


1 Answers

Mr. Eek have given the solution to add custom column in users list. so i am giving how to add filter for 'Company' option .the code is given

function admin_users_filter( $query ){
global $pagenow,$wp_query;

if ( is_admin() && $pagenow=='users.php' && isset($_GET['abc']) && $_GET['abc'] != '') {
   $query->search_term = urldecode($_GET['abc']);

   global $wpdb;

    if (!is_null($query->search_term)) {

      $query->query_from .= " INNER JOIN {$wpdb->usermeta} ON " . 
        "{$wpdb->users}.ID={$wpdb->usermeta}.user_id AND " .
        "{$wpdb->usermeta}.meta_key='meta_key_name_here' AND "."{$wpdb->usermeta}.meta_value LIKE '%{$query->search_term}%'";

    }    
}
}

add_filter( 'pre_user_query', 'admin_users_filter' );


add_action( 'restrict_manage_users', 'restrict_abc_manage_list' );
function restrict_abc_manage_list()
{
?>
<select name="abc" style="float: none;">
    <option value=""><?php _e('Filter By College', 'baapf'); ?></option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>

 </select> 
 <input id="post-query-submit" class="button" type="submit" value="Filter" name="">
<?php  
}

find any doubt then ask...thxs

like image 182
surendra maurya Avatar answered Sep 22 '25 10:09

surendra maurya