This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.



A very light-weight plugin, designed to easily create and manage a staff directory on your WordPress theme. Admins can manage staff records by importing (from CSV) or editing records individually. Record columns may be reordered (or hidden). Directory is sortable by column header, paginated, searchable, and customizable (by subset of records or number of records per page) using simple shortcode attributes.

Simple, Straight-Forward

The plugin is very light-weight, but robust. It allows for the individual management of staff directory records, or append/replace using a simple CSV (comma-separated variables) document or Excel Spreadsheet.

  • Update five standard fields for each staff record (last name, first name, department, email, phone number)
  • Import from CSV or XLS allows administrators to keep their staff directory maintained, either by appending new records, or replacing the entire directory with an updated list
  • Fields are not required (and may be left blank) for general department mailboxes or numbers
  • Updates are performed on-the-fly, so no lengthy reloads are necessary
  • Design is split into separate stylesheet for ease of theming
  • No edit links or popups, just make your changes in-line
  • Case-insensitive substring search, with highlighted matches on front end
  • Uses jQuery/AJAX for page handling, sorting & searching without pageload (either on type, on enter, or both)
  • Tipsy is incorporated for contact cards, to display additional information about each StaffList record
  • StaffList can be placed into content editor using the shortcode [stafflist]
  • Multiple StaffLists are supported in a single page and are customizable by shortcode attribute (e.g.: [stafflist subset=”department:marketing”])
  • Language is customizable for standard column labels and other messaging

StaffList Public Demo

A demo of this plugin can be found on the developer’s site:

3rd Party Services

Be advised about the 3rd Party libraries used by this plugin.


  • The backend directory manager, for adding or modifying records individually
  • The backend directory manager, for importing a full directory list from CSV
  • The backend directory manager, for choosing and ordering your columns
  • The contact card displays additional information about each contact record
  • Example of a directory search
  • Customizing the front-end language (e.g.: Last Name –> Surname)


  1. Install StaffList either via the plugin directory, or by uploading the files to your server (in the /wp-content/plugins/ directory).
  2. Activate the plugin.
  3. Create a staff record (or as many as you need)
  4. Insert the staff directory into your page using the shortcode [stafflist], or customize with the following shortcode attributes.

Shortcode Attributes

  • [stafflist] include all records with default rows per page
  • [stafflist rows=50] include all records with specified 50 rows per page
  • [stafflist subset=”department:marketing”] include only records that have “marketing” in the standard department column
  • [stafflist subset=”state:michigan”] include only records that have “michigan” in the non-standard state column
  • [stafflist subset=”building:a|b”] include only records that have “a” or “b” in the non-standard building column
  • [stafflist on=”enter”] perform the search when the enter key is pressed, instead of while typing (default)
  • [stafflist on=”wait”] wait until a search value is entered before returning results

Email Addresses and Phone Numbers

  • Values in the email column will be presented with the standard mailto: markup, and values in the phone (and/or mobile, office, cell) column will be presented with tel: markup.

Web Addresses

  • If your spreadsheet contains a column called URL, Link, or Profile, it will be depicted as an icon with the column value used as a link, provided that value is a well-structured web address. The title text will read Link to: firstname lastname and the link target will be a blank page.


  • Any imported value in a non-standard column that begins with “img:” will be replaced with an image tag in your staff directory.
  • Image tags use the following CSS classes:
    Directory Table: stafflist_image_small
    Contact Card: stafflist_image_medium
  • Example: img:

Sample Data

  • An example spreadsheet to test your StaffList data can be found here: stafflist.csv


Are there any new features planned?

Yes. We plan to add a feature to use infinite scroll instead of page numbers.

Can i propose a feature?

If you wish. Sure.


February 20, 2023 1 reply
The list will revert to sorting however it pleases, it seems. This plugin needs better sorting functionality. I also lost my entire list. Still not sure why. Thankfully I had a back up stored on my machine. Not sure why that happened, but it should never happen The support has been okay, but that I need to reach out so frequently for something so simple is not great.
December 30, 2022 7 replies
Thanks for the easy and great stafflist. I think we are going to use this. However in Version 6.1.1 I’m unable to customize the labels and messages. It looks like that the save button is not working. Maybe you can fix this.
May 6, 2022 1 reply
I used it to maintain a contact list containing telephone extensions and email addresses, the plugin is simple to deploy and use. The option to keep updated by importing CSV files helps a lot with maintenance.
March 20, 2019
Superbe plugin. moderne, léger, souple et très simple d’utilisation. Le support est excellent, l’équipe a pris en main les deux problèmes rencontrés avec un professionnalisme et un savoir faire exemplaires. Nous recommandons fortement cette extension à tous ceux qui souhaitent mettre en place un carnet d’adresse ou un répertoire téléphonique d’entreprise ou tout autre type de liste ordonnée nécessitant un filtrage à la volée lors de la frappe. merci @era404 !
Read all 21 reviews

Contributors & Developers

“StaffList” is open source software. The following people have contributed to this plugin.


Translate “StaffList” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Fixed issue with sorts (1:firstname,2:lastname,3:phone,4:email,5:department,…) discovered by @mskwarwsd (thank you);


  • Fixed bug with >PHP7.4:parse_str() for Custom Labels & Messages, discovered by @eddieatwp (thank you);


  • Added a new shortcode attribute sort=n, where n is the column to be use for sorting when StaffList is first rendered (Your website visitors may still change the sort as they please afterward). Hover the column names in the admin page to reference column numbers that can be used. Per request by @jorniel1 (Thank you);


  • Rewrote a $wpdb->prepare statement that was producing a WP deprecated warning;


  • Another security patch for admin pager, as suggested by Erwan Le Rousseau (thank you);


  • Added wp_nonce_url and check_admin_referer to admin delete record feature to defend against CSRF, as suggested by Hassan Khan Yusufzai (thank you);


  • Fixed a vulnerability in admin search discoverd by Hassan Khan Yusufzai (thank you);


  • Fixed default sort issue discoverd by @biblab (thank you);


  • Spreadsheet library adjustments per suggestion by @thomasprice61 (thank you);


  • Reversed the PhpSpreadsheet changes from v3.0.0; Minimum PHP version now back to 5.6;
  • StaffList now uses the spreadsheet tools provided by Sergey Shuchkin per recommendation by @thomasprice61 (thank you);
  • Adjustments to table design for managing staff records;



  • Sourcemaps not needed for tippyjs, per @thomasprice61 (thank you);


  • Replaced tipsy tooltip library with tippyjs; Tested in WordPress 5.6;


  • Added support for making imported columns hidden, but still searchable, per @gwledford (thank you);


  • Fixed deprecated listener function in tipsy library, per @thomasprice61 (thank you);
  • For more information, see:;


  • Update to allow natural case sorting for columns that only contain numbers, per @gwledford (thank you);


  • Updated $wpdb->prefix to $wpdb->base_prefix, to support Multisite per @anigarzat (thank you);


  • Requested additional phone number columns (added: cell, mobile, office);


  • Subsets that contained ‘&’ were being rewritten by the WP editor to their HTML equivilent (&).
  • StaffList now does an entity decode (back to &) before returning the subset results;
  • Thanks @tpmcelvogue for the suggestion.


  • Added support for images, using the prefix “img:”. Please see the installation instructions for an explanation on how to use image columns.
  • At your request, we increased column width to 255 characters from 64, to accommodate longer column values.
  • Updated plugin documentation and the StaffList WordPress Installation Page instructions.


  • Adjusted styles to work better with WordPress 5.3.2


  • Shortcode on=’wait’ added, to prevent StaffList from showing results until a search is performed.


  • Clear search button added.


  • Contact card too now respects the user-specified column order.


  • Fixed export conflicts with adjacent plugins.


  • Fixed javascript issue with some themes.


  • Fallback gracefully to strtolower where mb_strtolower isn’t available.
  • This was producing fatal errors on servers without the multibyte string extension.


  • Tested on WordPress 5.1; fixed jquery-ui-sortable issue;
  • Expanded customization form for front-end messaging: “[#] Results”, “No Results Found.”, “Search Directory”, and “Page”.


  • Tested on WordPress 5.0.3 and updated documentation;


  • Added contact card in thead and aria-labelledby for search field, per request;


  • Removed single record insert form (redundant);
  • Added customization for standard column titles, per @metalflower88 (thank you).


  • Cleaned up redundant [permitted] filetypes list;


  • Changed sanitize on admin tools for searching foreign characters, per @pojeck (thank you).
  • Tested with WordPress core 5.0.


  • Added an option to toggle conforming imported data from variable encoding to UTF8 (“Clean”);


  • Added support for importing staff links (depicted as an icon) per request by @pojeck (thank you);
  • Links can be used by import a spreadsheet containing a column called “url”, “profile”, or “link”;
  • This not treated as a “standard” column, like the others, as it will require flushing WP database to rebuild;


  • Added a hyperlink to phone numbers (tel:xxx)


  • Fixed the subset query to allow for spaces. For example: [stafflist subset=”school:High School”];


  • Added a text scrubber to attempt to conform imported text to UTF8 (clean);


  • Made localized object keys more unique to prevent plugin conflicts;


  • Added multiple word search;


  • Increased max custom columns from 10 to 15 per request by @cetaceancousins;
  • Added export (to CSV/XLSx) of backend sort/search (or all) per request by @kaypohl;


  • Search queries now parameterized and phone added to searched columns;


  • Checks roles & capabilities on init;


  • Reorganized admin interface to put full directory first; Collapsible instructions panel; Add an individual staff record form now includes non-standard columns;


  • Fixed a bug that cleans and resets data-tables upon activation.


  • Updated pager for administrators.


  • StaffList now supports .xls/x import format, courtesy of PHPExcel Lib and recommendations by virgikins and gustavoo (thank you).


  • Modified CSV interpretation to support broadest range of UTf8 characters, per request by user virgikins and gustavoo (thank you).


  • Added shortcode to set search action on ‘type’, on ‘enter’, or on both (default), per request by user virgikins (thank you).


  • Defined a new role/capability for StaffList Editors, per request by user valdemaras (thank you).


  • Changed the INSERT from $wpdb->Insert to $wpdb->Query with prepared query to fix a bug brought up by blastiu17 (thank you).


  • Introducing subsets! StaffList now gives users control over which records are included in each instance of the directory using simple shortcode attributes. Multiple StaffLists can also be added in a single WordPress page.


  • Fixed an issue with sorting by custom columns; per pawlaz (thank you).


  • Changed PHP4-style constructor to PHP7; per recommendation by NetzzJD (thank you).


  • New admin feature to search the full directory; per recommendation by gustavoo (thank you).


  • Replaced mysql_real_escape_string(); per recommendation by encweb (thank you).
  • Added white-space: nowrap; per recommendation by digitlbill (thank you).


  • Major release: This version allows admins to order columns by preference, and choose which will be visible in the StaffList directory (versus those in the contact card). All columns are searched, and there are now upto 10 custom columns in addition to the five standard columns. Please be advised that this version does require a rebuild of the database tables, and will clean out any directory data you currently have stored.


  • Bug Fix: Updated ajax_object to use ajaxurl


  • New release now supports CSV import to append or replace your staff directory
  • More intuitive front-end sorting by First Name, Last Name, Department and Email Address
  • Better responsive style for narrower content areas
  • Added support for up to 9 custom columns (e.g.: Title, Building, Room) that are also searchable
  • Contact card now has hover to show additional columns


  • Minor change to allow multiple stafflist instances per page (for responsive view, perhaps). Testified/Verified Compatibility with WordPress 4.4.1


  • Testified/Verified Compatibility with WordPress 4.3


  • Update to fix interference with paging styles from some themes.


  • Testified/Verified Compatibility with WordPress 4.2.2


  • Added donate link 😉


  • Added new plugin icons.


  • StaffList now in official release.


  • Fixed issue with users pressing enter on a realtime search.


  • Adjusted pager to allow for user config of # records/page.
  • define(‘RECORDS_PER_PAGE’, 25); //stafflist.php


  • Improved styles.


  • Improved styles.


  • Added a banner image.


  • Added a new screenshot to show the regex search results


  • Plugin-out only in beta, currently. Standby for official release.