Title: Maya Team Directory
Author: ayalip
Published: <strong>May 15, 2026</strong>
Last modified: May 15, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/maya-team-directory.svg)

# Maya Team Directory

 By [ayalip](https://profiles.wordpress.org/ayalip/)

[Download](https://downloads.wordpress.org/plugin/maya-team-directory.1.0.2.zip)

 * [Details](https://test.wordpress.org/plugins/maya-team-directory/#description)
 * [Reviews](https://test.wordpress.org/plugins/maya-team-directory/#reviews)
 *  [Installation](https://test.wordpress.org/plugins/maya-team-directory/#installation)
 * [Development](https://test.wordpress.org/plugins/maya-team-directory/#developers)

 [Support](https://wordpress.org/support/plugin/maya-team-directory/)

## Description

Maya Team Directory lets you create and display a clean, fast team directory on 
your WordPress site. Add team members with profile photos, positions, departments,
contact details, and bios, then display them with a simple `[maya_team]` shortcode.

The free plugin is intentionally lean and focused. It ships with everything you 
need to publish a working team page: the custom post type, group taxonomy, a responsive
grid layout, search, group filtering, pagination, and a single-member template.

This plugin makes no remote calls, has no license key, no in-plugin upsell prompts,
and never asks for your credit card to unlock built-in features.

Optional companion add-ons (CSV import/export, REST API endpoints, extra layouts,
sidebar widget, custom CSS, accent color picker, social-network fields and icons—
LinkedIn, X, Facebook, Instagram, GitHub, YouTube — featured-member highlighting,
per-group layout overrides, and more) are available separately at https://mayanaikotech.
com/maya-team-directory/. They install as their own plugin and are 100% optional—
this plugin works fully without them.

#### What’s Included (Free)

 * Custom post type for team members
 * Group taxonomy for organizing members
 * Custom fields: Position, Department, Email, Phone, Website
 * Responsive grid layout
 * Search bar and group filter
 * Pagination
 * Single-member profile template
 * Mobile responsive
 * Admin photo thumbnails and sortable columns
 * Translation-ready (.pot file included)
 * A documented hook & filter API for add-ons (see below)

#### Shortcode Usage

Display all team members:
 [maya_team]

Filter by group:
 [maya_team group=”management”]

Show multiple groups:
 [maya_team groups=”management,board”]

Hide members in a specific group:
 [maya_team exclude_groups=”alumni”]

Custom pagination and ordering:
 [maya_team per_page=”8″ orderby=”title” order=”
ASC”]

Hide controls:
 [maya_team search=”false” filter=”false”]

Force grid column count (1–6):
 [maya_team columns=”4″]

#### Template Overrides

Copy templates from `maya-team-directory/templates/` to your theme:

 * `your-theme/maya-team-directory/single-maya_member.php`
 * `your-theme/maya-team-directory/archive-maya_member.php`
 * `your-theme/maya-team-directory/taxonomy-maya_group.php`

#### Hooks & Filters

These hooks form the public API that companion add-ons (and any third-party plugin)
can use to extend the free plugin without modifying its files.

Filters:

 * `maya_td_query_args` — Modify the main member query (receives `$query_args`, `
   $atts`).
 * `maya_td_card_data` — Modify card template data before rendering (receives `$
   data`, `$post_id`).
 * `maya_td_card_renderer` — Return a callable to take over rendering for a non-
   grid layout (receives `null`, `$layout`, `$data`, `$post_id`).
 * `maya_td_card_social_keys` — Add extra social networks to read for each card (
   receives `network-slug => meta-key` map).
 * `maya_td_meta_fields` — Add extra fields to the Member Details meta box.
 * `maya_td_social_fields` — Add extra fields to the Social Links meta box.
 * `maya_td_social_icons` — Provide SVG icon markup for additional social networks.
 * `maya_td_member_meta_keys` — Extend the list of meta keys cleaned up on uninstall.
 * `maya_td_available_layouts` — Register additional layouts (list, compact, masonry,
   etc.) so they appear in the layout toggle and validate as shortcode `layout=""`
   values.
 * `maya_td_layout_icon` — Provide the SVG icon for a registered layout’s toggle
   button.
 * `maya_td_single_member_template` — Override the path of the single-member template
   file.
 * `maya_td_sanitize_settings` — Sanitize and persist add-on-registered settings
   fields.
 * `maya_td_resource_links` — Add, remove, or reorder links in the Settings page
   Resources sidebar.

Actions:

 * `maya_td_init` — Fires after the free plugin’s core classes are instantiated.
   Add-ons should bootstrap from here.
 * `maya_td_register_admin_menu` — Fires after the Settings submenu is registered,
   so add-ons can add their own submenus under the Maya Team Directory menu.
 * `maya_td_settings_sections` — Render extra `<div class="maya-settings-section"
   >` blocks inside the settings form.
 * `maya_td_settings_sidebar` — Render extra panels in the settings sidebar.
 * `maya_td_before_directory` — Fires before the directory wrapper opens (receives`
   $atts`, `$members` WP_Query).
 * `maya_td_after_directory` — Fires after the directory wrapper closes (receives`
   $atts`, `$members` WP_Query).
 * `maya_td_after_card_content` — Add content inside each card, after the bio (receives`
   $data`, `$post_id`).
 * `maya_td_after_member_details_fields` — Add inputs inside the Member Details 
   meta box.
 * `maya_td_after_social_fields` — Add inputs inside the Social Links meta box.
 * `maya_td_display_options_fields` — Add inputs inside the Display Options side
   meta box.
 * `maya_td_save_member_meta` — Persist add-on-owned member meta keys when a member
   post is saved.

#### External Services

This plugin does not connect to any external services. All processing happens locally
on your WordPress site. No data is sent to any third-party server.

### Support

For support, please email ayalip@mayanaikotech.com or visit https://mayanaikotech.
com/maya-team-directory.

## Installation

 1. Upload the `maya-team-directory` folder to `/wp-content/plugins/`
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. Go to Team Members > Add New to create team members
 4. Use the `[maya_team]` shortcode on any page or post
 5. Configure settings at Team Members > Settings

## FAQ

### How do I display team members?

Use the shortcode `[maya_team]` on any page or post. You can filter by group with`[
maya_team group="your-group-slug"]`.

### Does it work with page builders?

Yes. The shortcode works with Elementor, Beaver Builder, Divi, and any builder that
supports WordPress shortcodes.

### Can I customize the design?

Override any template by copying it from the plugin’s `templates/` folder into your
theme under `your-theme/maya-team-directory/`. You can also style the front-end 
output from your theme’s stylesheet — every element has a stable `.maya-*` class.

### Does the plugin call any external services?

No. The plugin operates entirely on your own WordPress install. Nothing is sent 
to any third-party server.

### Where did Import/Export, the REST API, the sidebar widget, list/compact layouts, custom CSS, accent color, and the social-network fields go?

They were moved to a separately-distributed companion add-on so the free plugin 
can stay small and focused. The hooks and filters required to add them back are 
documented above. The add-on is available at https://mayanaikotech.com/maya-team-
directory/ and is entirely optional.

### Why are there no LinkedIn / X / Facebook fields in the member editor?

Social-network fields and their icons (LinkedIn, X, Facebook, Instagram, GitHub,
YouTube, etc.) are entirely owned by the optional companion add-on. The free plugin
exposes the `maya_td_social_fields`, `maya_td_social_icons`, and `maya_td_card_social_keys`
filters so any plugin can register networks and have them appear in the Social Links
meta box and on member cards.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Maya Team Directory” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ ayalip ](https://profiles.wordpress.org/ayalip/)

[Translate “Maya Team Directory” into your language.](https://translate.wordpress.org/projects/wp-plugins/maya-team-directory)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/maya-team-directory/),
check out the [SVN repository](https://plugins.svn.wordpress.org/maya-team-directory/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/maya-team-directory/)
by [RSS](https://plugins.trac.wordpress.org/log/maya-team-directory/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.2

 * Plugin Check pass. Fixed two `WordPress.Security.EscapeOutput.OutputNotEscaped`
   errors in `Maya_Shortcode::render_shortcode()`: the wrapper inline-style is now
   built as a value-only string and escaped with `esc_attr()` at the point of output,
   and the `<option selected>` attribute now uses the core `selected()` helper instead
   of a hand-rolled string. Renamed every template-scope variable in `templates/
   single-maya_member.php`, `templates/archive-maya_member.php`, and `templates/
   taxonomy-maya_group.php` to use the `$maya_` prefix so Plugin Check’s `WordPress.
   NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound` rule no longer fires.
   Added narrowly-scoped `phpcs:ignore` annotations (with justifications) for the
   unavoidable `tax_query`, `meta_query`, and `post__not_in` query parameters that
   are inherent to the directory’s filtering and ordering features.

#### 1.0.1

 * Pre-release hardening based on the WordPress.org plugin review feedback. Updated
   the readme `Contributors` field to use the correct WordPress.org username (`ayalip`).
   Sanitized the nonce input in `Maya_Meta_Fields::save_meta()` with `sanitize_text_field(
   wp_unslash( ... ) )` before passing it to `wp_verify_nonce()`. Captured the `
   ob_start()` buffer in `Maya_Shortcode::ajax_load_more()` into an explicit `$html`
   variable via `ob_get_clean()` in the same function scope, so the buffer is unambiguously
   paired and cannot be left open by any code path. Replaced the `Maya_Meta_Fields::
   kses_svg()` echo helper with direct `wp_kses( $svg, Maya_Meta_Fields::svg_allowed_tags())`
   calls at every echo site (front-end card renderer and the single-member template)
   so Plugin Check sees a recognised core escaper at the point of output. Wrapped
   the imploded group-link list in `wp_kses_post()` instead of relying on a phpcs
   ignore comment. The `kses_svg()` helper itself is kept as a thin wrapper around`
   wp_kses()` for backwards compatibility.

#### 1.0

 * Initial release.

## Meta

 *  Version **1.0.2**
 *  Last updated **15 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/maya-team-directory/)
 * Tags
 * [directory](https://test.wordpress.org/plugins/tags/directory/)[members](https://test.wordpress.org/plugins/tags/members/)
   [profile](https://test.wordpress.org/plugins/tags/profile/)[staff](https://test.wordpress.org/plugins/tags/staff/)
   [team](https://test.wordpress.org/plugins/tags/team/)
 *  [Advanced View](https://test.wordpress.org/plugins/maya-team-directory/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/maya-team-directory/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/maya-team-directory/reviews/)

## Contributors

 *   [ ayalip ](https://profiles.wordpress.org/ayalip/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/maya-team-directory/)