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.


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 !
January 18, 2019
If you look for a directory with a customisable look (in CSS), a search engine (on type or on enter) and no page for each staff member (only a customisable shortcode to paste on your website page), you find the good plugin ! Also thanks ERA4O4 for your quick answers that allow me to custom some sharp points.
December 18, 2018
"Only CSV, XLS, XLSX imports are currently supported. This filetype was: application/octet-stream." I get this error when trying to upload csv and xls files.
Read all 18 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.



  • 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.