{"id":158926,"date":"2022-06-19T15:07:01","date_gmt":"2022-06-19T15:07:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ultimate-member-widgets-for-elementor\/"},"modified":"2026-04-27T05:03:08","modified_gmt":"2026-04-27T05:03:08","slug":"ultimate-member-widgets-for-elementor","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ultimate-member-widgets-for-elementor\/","author":20447401,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.5","stable_tag":"2.5","tested":"6.9.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Ultimate Member Widgets for Elementor - WordPress User Directory","header_author":"userelements","header_description":"Awesome Ultimate Member widgets for the Elementor page builder.","assets_banners_color":"fefefe","last_updated":"2026-04-27 05:03:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"http:\/\/userelements.com\/ultimate-member-elementor","header_author_uri":"http:\/\/userelements.com\/","rating":5,"author_block_rating":0,"active_installs":400,"downloads":11528,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"userelements","date":"2022-06-19 15:08:43"},"1.2":{"tag":"1.2","author":"userelements","date":"2023-04-19 18:28:46"},"1.3":{"tag":"1.3","author":"userelements","date":"2023-05-20 09:11:58"},"1.4":{"tag":"1.4","author":"userelements","date":"2023-05-20 09:27:38"},"1.5":{"tag":"1.5","author":"userelements","date":"2023-08-31 02:49:26"},"1.6":{"tag":"1.6","author":"userelements","date":"2023-09-03 07:20:14"},"1.7":{"tag":"1.7","author":"userelements","date":"2024-03-07 02:41:58"},"1.8":{"tag":"1.8","author":"userelements","date":"2024-04-28 01:30:48"},"1.9":{"tag":"1.9","author":"userelements","date":"2025-07-08 05:27:44"},"2.0":{"tag":"2.0","author":"userelements","date":"2025-07-28 07:39:35"},"2.1":{"tag":"2.1","author":"userelements","date":"2025-08-05 03:18:36"},"2.2":{"tag":"2.2","author":"userelements","date":"2025-09-24 08:36:26"},"2.3":{"tag":"2.3","author":"userelements","date":"2025-10-09 06:45:24"},"2.4":{"tag":"2.4","author":"userelements","date":"2025-11-17 09:47:43"},"2.5":{"tag":"2.5","author":"userelements","date":"2026-04-27 05:03:08"}},"upgrade_notice":{"2.5":"<p>Security release. Fixes unauthenticated data exposure on AJAX endpoints, unsanitized meta_query input, and nonce bypass on class-loading path. Upgrade immediately.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3338423,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2915093,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":2915093,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.2","1.3","1.4","1.5","1.6","1.7","1.8","1.9","2.0","2.1","2.2","2.3","2.4","2.5"],"block_files":[],"assets_screenshots":{"screenshot-1.gif":{"filename":"screenshot-1.gif","revision":2848917,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3335167,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3335167,"resolution":"3","location":"assets","locale":""},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":2744820,"resolution":"4","location":"assets","locale":""},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3335167,"resolution":"5","location":"assets","locale":""},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3335167,"resolution":"6","location":"assets","locale":""},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3335167,"resolution":"7","location":"assets","locale":""}},"screenshots":{"1":"Elementor editor \u2014 User Directory Grid widget and controls panel","2":"Live directory \u2014 card grid layout with avatar, name, and meta fields","3":"Live directory \u2014 list layout","4":"Pro: Sortable user table with column sort and search","5":"Pro: User profile carousel","6":"User Profile Flip Cards \u2014 front and back views","7":"Meta field selector \u2014 choose any registered user field","8":"Pagination options \u2014 numbers, Load More, Infinite Scroll","9":"AJAX meta field filter in action"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[76538,15070,11762,14513,42733],"plugin_category":[58],"plugin_contributors":[210940],"plugin_business_model":[],"class_list":["post-158926","plugin","type-plugin","status-publish","hentry","plugin_tags-elementor","plugin_tags-member-directory","plugin_tags-staff-directory","plugin_tags-ultimate-member","plugin_tags-user-directory","plugin_category-user-management","plugin_contributors-userelements","plugin_committers-userelements"],"banners":{"banner":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/banner-772x250.png?rev=2915093","banner_2x":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/banner-1544x500.png?rev=2915093","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/icon-128x128.jpg?rev=3338423","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/screenshot-1.gif?rev=2848917","caption":"Elementor editor \u2014 User Directory Grid widget and controls panel"},{"src":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/screenshot-2.png?rev=3335167","caption":"Live directory \u2014 card grid layout with avatar, name, and meta fields"},{"src":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/screenshot-3.png?rev=3335167","caption":"Live directory \u2014 list layout"},{"src":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/screenshot-4.jpg?rev=2744820","caption":"Pro: Sortable user table with column sort and search"},{"src":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/screenshot-5.jpg?rev=3335167","caption":"Pro: User profile carousel"},{"src":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/screenshot-6.jpg?rev=3335167","caption":"User Profile Flip Cards \u2014 front and back views"},{"src":"https:\/\/ps.w.org\/ultimate-member-widgets-for-elementor\/assets\/screenshot-7.png?rev=3335167","caption":"Meta field selector \u2014 choose any registered user field"}],"raw_content":"<!--section=description-->\n<p><strong>Ultimate Member Widgets for Elementor<\/strong> adds a full set of user directory widgets to the Elementor page builder. Build member grids, searchable directories, staff pages, and user profile displays visually \u2014 no shortcodes, no custom code.<\/p>\n\n<p>The plugin ships two separate directory engines: one powered by <a href=\"https:\/\/wordpress.org\/plugins\/ultimate-member\/\">Ultimate Member<\/a> for membership sites, and one built on native WordPress users that works on <strong>any WordPress site<\/strong>, even without Ultimate Member installed.<\/p>\n\n<p><a href=\"https:\/\/demo.userelements.com\/demo\/\">Live Demo<\/a> | <a href=\"https:\/\/userelements.com\/ultimate-member-elementor\/\">Go Pro<\/a> | <a href=\"https:\/\/userelements.com\/create-user-directory-elementor\/\">Documentation<\/a><\/p>\n\n<p><strong>Free Widgets<\/strong><\/p>\n\n<p><strong>User Directory Grid<\/strong> \u2014 Responsive card or list layout with AJAX live search, role filters, meta field filters, and three pagination modes (numbered pages, Load More button, Infinite Scroll). <a href=\"https:\/\/demo.userelements.com\/user-directory-grid\/\">Demo<\/a><\/p>\n\n<p><strong>WordPress User Directory Grid<\/strong> \u2014 A native WordPress user directory with no Ultimate Member dependency. Ideal for team pages, staff directories, and contributor lists on any site.<\/p>\n\n<p><strong>User Profile Flip Cards<\/strong> \u2014 Interactive flip cards with configurable front and back meta fields. <a href=\"https:\/\/demo.userelements.com\/users-flipbox\/\">Demo<\/a><\/p>\n\n<p><strong>User Avatar Display<\/strong> \u2014 Single-user avatar for profile pages. Full border, radius, and CSS filter controls.<\/p>\n\n<p><strong>User Meta Fields<\/strong> \u2014 Display any combination of user meta fields on the currently viewed profile. Supports text, URL, phone, image, and file field types. <a href=\"https:\/\/demo.userelements.com\/users-meta-fields\/\">Demo<\/a><\/p>\n\n<p><strong>User Profile Name<\/strong> \u2014 Output the current profile user's name in any format (display name, first, last, full, username, nickname) with full typography and color controls. <a href=\"https:\/\/demo.userelements.com\/user-profile-name\/\">Demo<\/a><\/p>\n\n<p><strong>Free Feature Highlights<\/strong><\/p>\n\n<ul>\n<li>Filter directory by any WordPress user role<\/li>\n<li>Show any custom user meta field from Ultimate Member or any other plugin<\/li>\n<li>Card grid and list layouts<\/li>\n<li>Pagination: numbered pages, Load More button, or Infinite Scroll<\/li>\n<li>AJAX live search and AJAX meta field filters \u2014 no page reload<\/li>\n<li>Show only approved Ultimate Member users, or all WordPress users<\/li>\n<li>Order by display name, registration date, last login, post count, or any custom field<\/li>\n<li>1 to 6 responsive columns<\/li>\n<li>Full Elementor styling: colors, typography, spacing, border radius, box shadow<\/li>\n<li>Works with free Elementor \u2014 Elementor Pro not required<\/li>\n<\/ul>\n\n<p><strong>Pro Widgets<\/strong><\/p>\n\n<ul>\n<li><strong>Sortable User Table<\/strong> \u2014 Searchable, sortable DataTable with column sort and pagination. <a href=\"https:\/\/demo.userelements.com\/sortable-user-table\/\">Demo<\/a><\/li>\n<li><strong>User Profile Carousel<\/strong> \u2014 Touch-friendly Swiper slider. <a href=\"https:\/\/demo.userelements.com\/user-carousel-or-slider\/\">Demo<\/a><\/li>\n<li><strong>User Directory Filter<\/strong> \u2014 Standalone filter panel: dropdowns, checkboxes, and radio buttons. <a href=\"https:\/\/demo.userelements.com\/users-list-with-filter-buttons\/\">Demo<\/a><\/li>\n<li><strong>Two Column, Three Column, Zigzag layouts<\/strong> \u2014 Additional directory layouts.<\/li>\n<li><strong>Profile Page Builder (9 widgets)<\/strong> \u2014 Build a fully custom Ultimate Member profile page inside Elementor. Includes: cover photo, header, bio, meta fields, social links, action bar, completion bar, custom tabs, and profile body. The only plugin that gives you full Elementor control over the UM profile page.<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/userelements.com\/ultimate-member-elementor\/\">See all Pro features<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <a href=\"https:\/\/wordpress.org\/plugins\/elementor\/\">Elementor<\/a> \u2014 the free version is sufficient.<\/li>\n<li>Optionally install <a href=\"https:\/\/wordpress.org\/plugins\/ultimate-member\/\">Ultimate Member<\/a> for UM-powered widgets. The WordPress User Directory Grid widget works without it.<\/li>\n<li>Install this plugin via <strong>Plugins \u2192 Add New<\/strong> or upload the zip manually.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open any page in the Elementor editor and find the widgets under the <strong>User Directory<\/strong> panel category.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20without%20ultimate%20member%3F\"><h3>Does this work without Ultimate Member?<\/h3><\/dt>\n<dd><p>Partially. The <strong>WordPress User Directory Grid<\/strong> widget is fully independent and works on any WordPress site. The remaining widgets (Directory Grid, Flip Cards, Avatar, Meta Fields, Profile Name) are designed to work with Ultimate Member.<\/p><\/dd>\n<dt id=\"is%20elementor%20pro%20required%3F\"><h3>Is Elementor Pro required?<\/h3><\/dt>\n<dd><p>No. All free widgets work with the free version of Elementor.<\/p><\/dd>\n<dt id=\"can%20i%20filter%20members%20by%20custom%20fields%3F\"><h3>Can I filter members by custom fields?<\/h3><\/dt>\n<dd><p>Yes. The User Directory Grid supports AJAX meta field filters \u2014 visitors can filter by any custom field without a page reload.<\/p><\/dd>\n<dt id=\"can%20i%20show%20only%20approved%20ultimate%20member%20users%3F\"><h3>Can I show only approved Ultimate Member users?<\/h3><\/dt>\n<dd><p>Yes. A \"Show Only Approved Users\" toggle is available in the widget settings.<\/p><\/dd>\n<dt id=\"can%20i%20display%20ultimate%20member%20custom%20fields%20like%20phone%2C%20location%2C%20or%20bio%3F\"><h3>Can I display Ultimate Member custom fields like phone, location, or bio?<\/h3><\/dt>\n<dd><p>Yes. The field selector lists every registered user meta key, including all fields created by Ultimate Member. Pick the fields you want and they appear on each user card.<\/p><\/dd>\n<dt id=\"can%20i%20order%20the%20directory%20by%20last%20login%20or%20a%20custom%20field%3F\"><h3>Can I order the directory by last login or a custom field?<\/h3><\/dt>\n<dd><p>Yes. Sort options include display name, first name, last name, registration date, last login, post count, user ID, and any custom meta field.<\/p><\/dd>\n<dt id=\"can%20i%20control%20who%20sees%20sensitive%20fields%20like%20email%3F\"><h3>Can I control who sees sensitive fields like email?<\/h3><\/dt>\n<dd><p>The free version restricts sensitive fields (email, login, first\/last name) to users with the <code>list_users<\/code> capability. Public visitors receive only safe whitelisted fields. The Pro version adds per-field visibility rules configurable per widget.<\/p><\/dd>\n<dt id=\"can%20i%20build%20a%20custom%20profile%20page%20with%20elementor%3F\"><h3>Can I build a custom profile page with Elementor?<\/h3><\/dt>\n<dd><p>Yes, with Pro. The Profile Page Builder provides 9 dedicated widgets for replacing the default Ultimate Member profile template with a fully custom Elementor layout.<\/p><\/dd>\n<dt id=\"is%20this%20compatible%20with%20caching%20plugins%3F\"><h3>Is this compatible with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. If you experience issues with minification, exclude <code>wp-content\/plugins\/ultimate-member-widgets-for-elementor\/assets\/js\/<\/code> from your caching plugin's JS processing.<\/p><\/dd>\n<dt id=\"does%20this%20work%20in%20multisite%3F\"><h3>Does this work in multisite?<\/h3><\/dt>\n<dd><p>Yes. Each site in the network operates independently with its own user query scope.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.5<\/h4>\n\n<ul>\n<li>Security: AJAX filter endpoints now verify nonce before any file I\/O or class loading. Unauthenticated requests can no longer probe server-side structure.<\/li>\n<li>Security: meta_query items from the widget_settings payload are now sanitized (key, value, compare allowlist) before reaching WP_User_Query.<\/li>\n<li>Security: per_page in the UM AJAX handler clamped to a maximum of 100.<\/li>\n<li>Security: debug output (stack trace, file paths, line numbers) gated behind WP_DEBUG on all error paths.<\/li>\n<li>Security: email address removed from default public meta fields in WP User List handler.<\/li>\n<li>Fixed: sort order control now works for all options \u2014 ID, first\/last name, last login, post count, email. Previously all options except display_name silently fell back to registration date.<\/li>\n<li>Fixed: box shadow control referenced a non-existent Controls_Manager constant. Replaced with Group_Control_Box_Shadow.<\/li>\n<li>Fixed: admin notice dismiss nonce mismatch caused every dismiss click to silently fail.<\/li>\n<li>Fixed: PHP fatal when Elementor is inactive \u2014 two admin notice callbacks were referenced but never defined.<\/li>\n<li>Fixed: deprecated Elementor\\Scheme_Color and Scheme_Typography imports in the flip card widget caused PHP warnings on Elementor 3.x.<\/li>\n<li>Fixed: widget category sometimes did not appear in the Elementor panel due to hook registration timing.<\/li>\n<li>Fixed: meta key selector ran an uncached table scan on every Elementor editor load. Results now cached for one hour.<\/li>\n<li>Fixed: Pro layout values stored in the database (e.g. from a template import) caused user cards to disappear. They now fall back to the card layout.<\/li>\n<li>Fixed: serialized meta LIKE query produced incorrect SQL patterns.<\/li>\n<li>Fixed: filter key sanitization used sanitize_text_field instead of sanitize_key in the UM AJAX handler.<\/li>\n<li>Fixed: widget order_by and order settings not passed to the query engine, so the panel sort setting was ignored.<\/li>\n<li>Added: Table and Carousel layout options visible in the free widget with an upgrade tooltip on click.<\/li>\n<li>Added: meta cache primed after user queries to avoid N+1 meta fetches when rendering cards.<\/li>\n<li>Added: query result transients invalidated automatically on user profile, meta, or role changes.<\/li>\n<li>Improved: user-processing loop unified into shared static methods across both AJAX handlers.<\/li>\n<li>Improved: pro upgrade notice scoped to admin-only roles and screens.<\/li>\n<li>Improved: admin notice CSS moved from an inline style block to an external file.<\/li>\n<\/ul>\n\n<p>For older entries see changelog.txt included in the plugin.<\/p>","raw_excerpt":"Create searchable member directories, user grids, and profile displays in Elementor. Works with Ultimate Member and native WordPress users.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/158926","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=158926"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/userelements"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=158926"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=158926"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=158926"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=158926"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=158926"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=158926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}