If you’re using a WordPress Google Sheets integration like SheetWise to sync your website data with Google Sheets, you may not want every single event to be recorded.
That’s where Conditional Logic comes in. It allows you to filter what gets synced so your spreadsheet stays clean, relevant, and easy to analyze.
What is Conditional Logic in a WordPress Google Sheets Integration?
Conditional Logic lets you control which data is sent from WordPress to Google Sheets based on specific rules.
For example, you can:
Only sync completed orders
Only include users with company email addresses
Skip empty or irrelevant fields
This ensures your WordPress Google Sheets integration only sends meaningful data.
How to Set Up Conditional Logic in SheetWise
Open an existing integration or create a new one
Configure your data source, spreadsheet, and column mapping
Expand the Conditional Logic section
Click Add Rule
Select Field, Operator, and Value
Save the integration
Available Operators
Operator
What it does
Example
equals
Exact match
Status equals “completed”
not equals
Does not match
Role not equals “administrator”
contains
Text includes the value
Email contains “@company.com”
not contains
Text does not include the value
Title not contains “[Draft]”
greater than
Number or date is larger
Order Total greater than 100
less than
Number or date is smaller
Order Total less than 50
is empty
Field has no value
Description is empty
is not empty
Field has a value
URL is not empty
ALL vs ANY Rules
When using multiple conditions in your WordPress Google Sheets integration, you can define how rules are combined.
ALL Rules Must Match
Every condition must be true. Example: Order total greater than 100 and status equals completed.
ANY Rule Can Match
At least one condition must be true. Example: Role equals admin or role equals editor.
What Happens to Filtered Events?
Events that do not meet your conditions are skipped. They appear in the Sync Log with a “Skipped” status. They are not treated as errors and do not trigger alerts.
Best Practices
Start with one rule and expand gradually
Test using sample events before going live
No rules means everything will sync by default
Why Conditional Logic Improves Your WordPress Google Sheets Integration
Reduces unnecessary data
Improves reporting accuracy
Saves time on cleanup
Keeps your Google Sheets organized
Final Thoughts
Conditional Logic gives you full control over your WordPress Google Sheets integration. Instead of syncing everything, you sync only what matters.
If you’re using SheetWise, this feature can significantly improve how your data is managed and analyzed.
Collecting phone numbers on your WordPress site shouldn’t be complicated. Whether you’re building a membership community, running a business directory, or managing event registrations, having reliable phone number collection with proper country code formatting is essential.
WP User Frontend Pro gives you not one, but two purpose-built phone fields — each designed for a different job. Together, they give you complete flexibility over how you collect, store, and use phone numbers across your site.
Two Phone Fields, Two Purposes
Profile Phone Field — Your Users’ Contact Number
The Profile Phone Field is designed for registration and profile forms. When a user signs up or updates their profile, this field saves the phone number directly to their user account. Think of it as their personal contact number that stays with them across your site.
This is the field that powers phone number display in User Directory listings. When you enable it, visitors can see member phone numbers in directory profiles, contact info blocks, and search or sort users by their phone number.
Best for:
Membership sites that need member contact details
Professional directories where visitors need to reach listed members
Community platforms where users share their phone number on their profile
Any site using the User Directory feature
Phone Field — Flexible Integration for Any Use Case
The Phone Field gives you full control over the field’s meta key — meaning you can match it with any third-party plugin or custom integration. Need the phone number stored in a format that your CRM plugin expects? Or want it to sync with a booking system? This is the field for that.
Best for:
Real estate sites collecting agent or client phone numbers on property listings
Job boards where applicants submit their contact number with applications
Event registration forms that need attendee phone numbers
Any form where the phone number needs to integrate with another plugin or external service
Smart Country Code Selection Built In
Both phone fields come with a powerful international phone input that supports 200+ countries with automatic country code detection. Your users see a clean dropdown with country flags, and the phone number is always formatted correctly.
You get full control over the country list:
Show all countries — Let users pick from the full list
Show only specific countries — Limit the dropdown to the countries you operate in
Hide specific countries — Remove countries you don’t serve
Set a default country — Pre-select the most common country for your audience
Auto placeholder — Automatically show an example phone number format for the selected country so users know exactly what to enter
Use Them Together for Maximum Flexibility
Here’s where it gets interesting. You can use both phone fields on the same form. This is by design.
For example, on a registration form for a freelancer marketplace:
Use the Profile Phone Field to collect the freelancer’s personal contact number (displayed in the User Directory)
Use the Phone Field to collect a business phone number that syncs with your CRM or invoicing plugin
Or for a healthcare directory:
Use the Profile Phone Field for the practitioner’s main office number (visible in search results)
Use the Phone Field for an emergency or after-hours number stored as custom metadata
Phone Numbers in Your User Directory
When you use the Profile Phone Field, the collected number automatically becomes available in your User Directory. This means:
Phone numbers appear in user profile cards and contact info blocks
Visitors can click to call directly from the directory listing
You can search and sort directory members by phone number
Display is fully configurable — show or hide icons, labels, and clickable links
Getting Started
Adding a phone field to your form takes just a few steps:
Open your form in the WP User Frontend form builder
Drag the Phone or Phone Field from the field panel onto your form
Configure the country list settings under the Advanced tab
Set your default country and choose which countries to show or hide
Save your form — that’s it!
For the Profile Phone Field, the number is automatically available in User Directory once collected. No extra configuration needed.
Works With Your Existing Forms
Adding phone fields to your forms has no impact on your existing setup. Your current forms, fields, and submissions remain exactly as they are. The phone fields are fully optional — they only appear when you add them to a form.
Ready to collect phone numbers the right way? Head to WP User Frontend form builder and try it now. With smart country code formatting, flexible storage options, and built-in User Directory support, your forms just got a whole lot more powerful.
Your WordPress site can list pages and posts just fine, but when it comes to showing events on a calendar, with dates, times, and the ability to book, you need something more. A visual event calendar lets visitors browse what’s coming up, see availability at a glance, and take action without leaving your site.
This guide shows you how to add an interactive event calendar to any WordPress page in a few minutes, using a free plugin. No coding, no theme changes.
What You’ll End Up With
An interactive calendar on your site that:
Shows events in month, week, day, or list views
Lets visitors switch between views
Displays multi-day events spanning across calendar cells
Links each event to its own page for details and booking
Works on mobile and desktop
Updates automatically when you add or edit events
Step 1: Install Nemtly Booking
If you haven’t already:
Go to Plugins → Add New in your WordPress admin
Search for “Nemtly Booking”
Click Install Now, then Activate
The plugin handles both event management and calendar display, so you don’t need separate plugins for each.
Step 2: Create a Few Events
A calendar isn’t much to look at without events on it. If you already have events, skip ahead to Step 3.
Go to Nemtly Booking → Events and click Add New Event. You’ll need at minimum:
A title (e.g., “Team Strategy Workshop”)
A date and time — set in the Schedule step of the event form
Click Publish
Create 2–3 events across different dates so your calendar has something to display. You can always edit or add more later.
The shortcode works inside Elementor, Beaver Builder, Divi, and any other page builder that supports WordPress shortcodes.
Understanding the Calendar Views
Each view serves a different purpose. Choosing the right default depends on your use case.
Month View
The classic calendar grid. Best for:
Event organizers showing a full month of activities
Businesses with events spread across many dates
Visitors who want a big-picture overview
Events appear as chips on their date. Multi-day events span across cells. If a day has more events than the events_per_cell limit, a “+N more” link appears.
Week View
A 7-day view with time slots visible. Best for:
Service providers showing a week of available appointments
Fitness studios displaying a weekly class schedule
Visitors who need to see exact times
Day View
A single day with hour-by-hour detail. Best for:
Busy days with many events (conferences, all-day workshops)
Showing a detailed schedule for a specific date
List View
A chronological list of upcoming events — no grid, just a clean list. Best for:
Simple event listings without the visual calendar overhead
Mobile-first sites where a grid may feel cramped
Visitors who just want to scan what’s coming up
Clicking an Event
When a visitor clicks an event on the calendar, they’re taken to the event’s dedicated WordPress page. There they can see the full description, date and time details, location, pricing, and the booking form.
This means your calendar serves as both a visual overview and a navigation tool — visitors find what interests them, click through, and book.
Common Setups
Here are a few real-world examples of how to configure the calendar for different use cases.
Yoga Studio Weekly Schedule
Show a repeating weekly schedule where students pick a class time:
This gives you a minimal, clean list of upcoming events with no calendar UI — just titles, dates, and times.
Calendar vs Event List: When to Use Which
Nemtly Booking also offers an event list via the [nemtly_event_list] shortcode or the Nemtly Events block. Here’s when to use each:
Use Calendar When
Use Event List When
You want a visual date-based layout
You want a card/grid layout like a blog
Visitors need to find events by date
Visitors want to browse and search events
You have events spread across many dates
You have a smaller number of featured events
You want multiple view options (month/week/day)
You want filtering, search, and pagination
You can use both on the same site — for example, a “Calendar” page with [nemtly_calendar] and an “Events” page with [nemtly_event_list].
Tips
Keep the default view relevant to your audience. If most visitors want to see what’s happening this week, set view="week". If they want the big picture, stick with view="month".
Limit views if your audience is non-technical. Four view options can be overwhelming. For a simple site, views="month,list" gives enough flexibility without clutter.
Use fixed height for consistent page layouts. If the calendar sits alongside other content, set height="fixed" and height_px="600" to prevent the page from shifting as visitors switch views.
Hide past events to keep things clean. The default show_past_events="false" is usually what you want. Enable it only if you need an archive view.
Summary
Adding an event calendar to WordPress takes about 5 minutes:
Install and activate Nemtly Booking
Create your events
Drop the Event Calendar block or [nemtly_calendar] shortcode onto any page
Configure the view and options to match your use case
The calendar updates automatically as you add, edit, or remove events. Visitors can browse by month, week, day, or list — and click through to book directly.
If you run a service business, teach classes, or organize events, you’ve probably wished your WordPress site could handle bookings on its own, without forwarding people to a third-party scheduling tool or dealing with back-and-forth emails.
Good news: you can set up a fully working booking system on WordPress for free, without writing a single line of code. This guide walks you through the entire process. From installing a plugin to accepting your first booking with online payments.
What You Need Before Starting
A WordPress site (self-hosted, version 5.8 or higher)
Admin access to your WordPress dashboard
A Stripe account if you want to accept payments (optional. Free events work without it)
That’s it. No special hosting, no PHP extensions, no developer required.
Step 1: Install a Booking Plugin
WordPress doesn’t include booking functionality out of the box, so you need a plugin. In this guide we’ll use Nemtly Booking, a free plugin that handles events, appointments, and payments in one package.
In your WordPress admin, go to Plugins → Add New
Search for “Nemtly Booking”
Click Install Now, then Activate
After activation, you’ll see a new Nemtly Booking menu item in your admin sidebar.
Step 2: Create Your First Event
Now for the main event (pun intended). Click Nemtly Booking → Events in your admin menu, then click Add New Event.
The event creation form has four steps:
Basic Info
Enter a title for your event or service. For example:
“30-Minute Career Consultation”
“Saturday Morning Yoga Class”
“Annual Marketing Conference”
Add a description explaining what attendees can expect. This appears on the event page your customers will see.
Schedule
This is where it gets interesting. First, pick your event type:
One-on-One — Private appointments with one attendee per slot. Best for consultations, tutoring, therapy sessions. The plugin creates individual time slots (e.g., every 30 minutes between 9 AM and 5 PM).
Group — Classes or workshops where multiple people attend the same slot. You set the capacity (up to 20 by default). Best for yoga classes, cooking workshops, group coaching.
Event — A single gathering on a specific date. Attendees pick the date, not a time slot. Best for conferences, meetups, webinars.
For slot-based types (one-on-one and group), you’ll set your availability — which days of the week and what hours you’re available. The plugin generates bookable time slots automatically based on the duration you set.
For example, if you offer 30-minute consultations and mark Tuesday and Thursday as available from 9 AM to 5 PM, the plugin creates sixteen 30-minute slots across those two days.
You can also set:
Location — A physical address or a virtual meeting URL
Buffer time — Padding before or after each appointment to prevent back-to-back scheduling
Booking & Pricing
Set the price for your event. Enter 0 or leave it blank for free events — the payment step will be skipped entirely for your customers.
Configure:
Max attendees — How many people can book each slot (or the entire event)
Booking cutoff — How far in advance someone must book (e.g., 2 hours before for one-on-one, 48 hours for events)
Waitlist — Allow people to join a waitlist when slots fill up (available for group and event types)
Advanced
Optionally add a featured image that shows on event listings and the calendar.
Click Publish when you’re ready, or Save as Draft to finish later.
Step 3: Display Events on Your Site
Your events need to appear somewhere your visitors can find them. Nemtly Booking gives you two ways to do this: Gutenberg blocks and shortcodes.
Option A: Gutenberg Blocks (Block Editor)
Open any page in the block editor and add one of these blocks:
Event Calendar — Displays an interactive calendar where visitors can browse events by month, week, day, or list view. Visitors click an event to see details and book.
Nemtly Events — A list/grid of your upcoming events with filters, search, and pagination. This is actually a variation of the core WordPress Query Loop block, so it works anywhere the block editor is available.
Option B: Shortcodes (Classic Editor or Page Builders)
If you use a classic editor or a page builder like Elementor, use shortcodes instead:
[nemtly_calendar] — The interactive event calendar
[nemtly_event_list] — A searchable, filterable event grid with pagination
Just paste the shortcode into any page or post. Shortcodes work inside Elementor, Beaver Builder, Divi, and any other builder that supports them.
Both options display your events with real-time availability. When a visitor clicks an event, they see available dates and times and can book directly.
Step 4: Set Up Payments (Optional)
If you’re charging for your events, connect Stripe so customers can pay during the booking process.
Go to Nemtly Booking → Settings → Payments
Enable Stripe as a payment method
Enter your Stripe Publishable Key and Secret Key (find these in your Stripe Dashboard under Developers → API Keys)
Enter your Webhook Secret (create a webhook endpoint in Stripe pointing to the URL shown in your settings)
Save changes
Nemtly uses Stripe’s Payment Element, which means your customers can pay with credit cards, Apple Pay, Google Pay, and other methods you’ve enabled in your Stripe account — all from a single checkout interface.
For offline payments (cash, bank transfer, check), you can also enable manual payment recording and provide instructions that appear during checkout.
Don’t need payments? Skip this step entirely. Free events work without any payment gateway.
Step 5: Test the Booking Flow
Before going live, test the experience your customers will have:
Visit the page where you added your calendar or event list
Click on an event
Pick an available date and time slot (for slot-based events)
Fill in the booking form — name, email, and optionally phone number
Complete payment (if it’s a paid event) or click “Confirm Booking” (if it’s free)
Check your email for the booking confirmation
In your admin panel under Nemtly Booking → Bookings, you’ll see the new booking with its status.
What Your Customers Experience
Here’s the full booking flow from your customer’s perspective:
Browse — They visit your page and see your events in a calendar or list
Select — They click an event and pick a date and time
Book — They fill in their name and email
Pay — They complete payment through Stripe (or see manual payment instructions, or skip payment for free events)
Confirm — They receive a confirmation email immediately
Remind — They get an automated reminder email before the event (if you’ve enabled reminders in settings)
Manage — They can view their bookings anytime through a customer dashboard (more on that below)
No account creation required. No passwords to remember.
Bonus: Set Up a Customer Dashboard
Give your customers a place to view their booking history:
Create a new page in WordPress (e.g., “My Bookings”)
Add the shortcode [nemtly_booking_dashboard]
Publish the page
When customers visit this page, they enter their email address and receive a magic link — a one-time login link sent to their inbox. Clicking it logs them in for 24 hours without needing a password or WordPress account. They can see all their past and upcoming bookings.
Bonus: Sync with Google Calendar
If you manage your schedule in Google Calendar, Nemtly Booking can sync events both ways:
Go to Nemtly Booking → Settings and connect your Google account via OAuth2
Once connected, confirmed bookings automatically appear in your Google Calendar
If a booking is cancelled, the Google Calendar event is removed automatically
Set it up once and it runs in the background.
Bonus: Email Reminders
Reduce no-shows by sending automated reminder emails:
Go to Nemtly Booking → Settings → Emails
Enable Automated Reminders
Set how many hours before the event the reminder should be sent (default: 24 hours)
Customize the reminder subject and message
Reminders go out automatically via WordPress cron — no manual work needed.
Summary
Here’s what you’ve built — in about 15 minutes and zero code:
A booking system with real-time availability
An event calendar or event list on your website
Online payments via Stripe (or free events without payment)
Automated confirmation and reminder emails
A customer dashboard with magic link login
Google Calendar sync
All of this is free. Nemtly Booking is available on WordPress.org with no premium tier required for the features covered in this guide.
When you’re building a user directory, community site, or membership portal, a user’s photo can make all the difference. The User Avatar Block lets you display user profile pictures beautifully and consistently across your site, from compact lists to full-page profiles. Whether users upload their own images or rely on fallbacks, this block ensures every profile looks polished.
Let’s explore how this block works, how to customize it, and how you can make the most of it in your designs.
What is the User Avatar Block?
The User Avatar Block is part of the WPUF User Directory system and is designed to display profile photos for your users. It acts like a dynamic “photo frame” that automatically pulls the right image for each user. Ideal for directories, team pages, or profile layouts.
Key Features
Display each user profile pictures
Choose avatar size (Small, Medium, Large, Extra Large, or Custom)
Customize avatar shape (Circle, Square, Rounded)
Handle missing profile photos with fallback options
Use initials or Gravatar as fallbacks
How to Use the User Avatar Block
Step 1: Add the Block
Open any User Directory or User Profile block.
Click the + icon to add a new block.
Search for “User Avatar”.
Select WPUF – User Avatar from the block list.
Step 2: Configure the Settings
Once added, click on the block to open the settings panel on the right. From there, you can control everything. Size, shape, and fallback behavior.
Block Settings Explained
Avatar Size
Choose how large you want the profile photo to appear:
Small (32px) – Compact, great for lists
Medium (96px) – Perfect for directories
Large (150px) – Best for profile pages
Extra Large (300px) – Ideal for featured users
Custom – Set a specific pixel value (32px to 600px)
If you pick “Custom,” you can define the exact size (between 32px and 600px). Use this to match unique design layouts or branding requirements.
Avatar Shape
Decide how avatars are styled:
Circle – Modern and friendly
Square – Clean and professional
Rounded – Balanced, soft-cornered design
Fallback Type
Choose what appears when a user has no uploaded photo:
Initials – Displays user initials in a styled background (default)
Gravatar – Pulls from the Gravatar service if available
The block automatically prioritizes available profile photos.
If none exist:
It tries Gravatar (if selected).
Otherwise, it shows Initials by default.
Unlock the User Directory module with WPUF Professional and start showcasing your users beautifully. Get it directly from weDevs site.
Best Practices
Size Recommendations
Lists: Small to Medium
Profiles: Medium to Large
Featured areas: Large to Extra Large
Shape Recommendations
Circle – Modern, social feel
Square – Professional, clean look
Rounded – Versatile, balanced
Fallback Recommendations
Initials – Best default (always available)
Gravatar – Great for communities with existing Gravatar users
Troubleshooting
No Avatar Showing?
Check fallback type (Initials or Gravatar).
Make sure user data is loaded.
Test with different users.
Avatar Too Small or Large?
Verify the size option.
Keep custom sizes within 32px to 600px.
Check your theme’s layout constraints.
Shape Looks Off?
Confirm the shape setting.
Try different shapes to isolate CSS conflicts.
Clear your cache after making changes.
Fallback Not Working?
Make sure the fallback type is selected.
Ensure the user has a display name (for initials).
These combinations help you create flexible, professional user layouts.
FAQ
What if a user doesn’t have a photo?
The block automatically shows initials or pulls from Gravatar, depending on your fallback setting.
Can I use custom image sizes?
Yes! Choose “Custom” and set any pixel value between 32 and 600.
Does it work with all WordPress themes?
Yes. The block follows your theme’s styles, and you can override with CSS if needed.
Can I use it outside the User Directory block?
It’s primarily designed for the WPUF User Directory and Profile blocks. So it should not work outside the WPUF User Directory or User Profile block.
How can I make avatars load faster?
Use optimized images, caching plugins, and avoid unnecessarily large sizes.
What’s Next?
You’ve mastered the User Avatar Block, the visual cornerstone of user profiles. Next up in this series, we’ll explore the User Name Block, where you’ll learn how to display names dynamically and combine them with avatars for beautiful user cards.
If you want to create a WordPress user directory or a membership listing without custom code, the User Directory Block is your starting point. This block acts as the main container for displaying users on your site in different layouts (table, cards, or grids).
Whether you’re building a team page, community directory, or author list, the User Directory Block gives you full control over search, sorting, roles, and layout, directly inside the Gutenberg editor.
What is the User Directory Block?
The User Directory Block is the backbone of the WPUF User Directory system. Think of it as a digital phone book that organizes your users into a professional, searchable, and customizable listing.
What You Can Do With It
Display lists of users (team, staff, members, authors, etc.)
Enable search to quickly find specific users
Allow frontend sorting by name, email, registration date, and more
Control how many users appear per page (pagination included)
Show only certain user roles or exclude others
Choose from multiple layouts (table, card, or grid)
Add user details (avatar, name, bio, contact info) using inner blocks
Getting Started
Step 1: Add the Block Open your WordPress page or post in the block editor.
Click the “+” button to add a new block.
Search for “User Directory”.
Select WPUF – User Directory to insert it.
Step 2: Choose Your Layout
When you add the block, you’ll see layout options: Round Grids, Square Grids, Sidecards, Wide Sidecards, Table
Step 3: Add User Information Blocks
Inside the User Directory Block, you can add supporting blocks like:
User Avatar – Profile pictures
User Name – Display names
User Bio – Biographies
User Contact Info – Emails, websites, phone numbers
User Social Fields – Social media links
User Custom Field – Any custom usermeta
User Posts / Comments / Files – User-generated content
Profile Button – Links to individual user profiles
Block Settings
Click the User Directory Block to configure its settings in the sidebar.
🔹 Layout Settings
Choose Different Layout – Switch between table, card, and grid designs.
Users Per Row (Grid Layouts) – Control how many users appear per row (e.g., 1, 2, 3, or 4).
🔹 Display Options
User Roles
All Roles – Show all users (default).
Specific Roles – Display only Administrators, Editors, Authors, etc.
Multiple Roles – Select multiple roles for inclusion.
Exclude Options
Exclude Roles – Hide users from specific roles.
Exclude Users – Hide specific individual accounts.
Max Profiles Per Page – Control pagination (1–50 per page).
🔹 Search Options
Enable Search
Toggle ON to show a search bar.
Toggle OFF to hide search.
Search Settings (when enabled)
Search Placeholder – Text inside the search box (default: “Search Users”).
Searchable Fields – Choose which fields are searched:
Username
Email
Display Name
First Name
Last Name
Custom fields (e.g., job title, department)
🔹 Sorting Options
Enable Frontend Sorting
Toggle ON to let visitors sort results.
Toggle OFF to use only the default sort order.
Sort Settings
Available Sort Options – Select from:
User ID
Username
Email
Display Name
Registration Date
Default Sort Order – Ascending (A–Z) or Descending (Z–A).
Layout Options in Detail
Table Layout
Best for: Business directories, author lists, structured data.
Features: Displays users in a traditional table.
Special Settings:
Show Avatar – Toggle avatars in the table.
Avatar Size – Small, Medium, or Large.
Avatar Shape – Circle or Square.
Avatar Fallback Type – Show initials when no avatar is available.
Table Columns – Choose which columns to show (e.g., email, display name, role).
Other Layouts: Round Grids, Square Grids, Sidecards, Wide Sidecards
Extra design options for different site styles.
Choose the one that fits your branding best.
Search Functionality
Visitors can type into the search box.
The system checks the selected searchable fields.
Results update instantly with matching users.
Search Tips:
Enable multiple fields for flexibility.
Include custom fields if your users have specific metadata.
Always test search with real user data.
Sorting and Organization
Default Sorting → Set the default order (e.g., by display name ascending).
Frontend Sorting → Let users sort dynamically.
Pagination → Adjust how many users show per page.
Unlock the User Directory module with WPUF Professional and start showcasing your users beautifully. Get it directly from weDevs site.
Use Cases
Member Directory
Layout: Modern Cards
Roles: All Roles
Search: Enabled
Sort: Display Name (Ascending)
Blocks: Avatar, Name, Bio, Profile Button
Team Page
Layout: Professional Grid
Roles: Administrators + Editors
Search: Enabled
Sort: Display Name (Ascending)
Blocks: Avatar, Name, Custom Field (Job Title), Contact Info
✅ Configured user roles, exclusions, and pagination
✅ Enabled search and/or sorting if needed
✅ Set table-specific settings (if using Layout 1)
✅ Tested on mobile and desktop
✅ Previewed the final result
With the User Directory Block, you can turn WordPress into a flexible membership or team directory, styled exactly the way you want, directly in Gutenberg.
Creating a user directory or profile page in WordPress isn’t always simple. By default, WordPress gives you user registration and management, but it doesn’t provide a flexible way to showcase users on the front end. Whether you’re building a membership site, team page, student directory, or a community hub, you often need plugins or custom development to make it work.
Recently, I’ve developed the Gutenberg Blocks for WPUF User Directory. A complete solution that lets site admins build beautiful, flexible, and customizable user directories right inside the block editor. These blocks allow you to display users in a listing format or show detailed individual profiles, with total control over layout, styling, and visibility.
In this post, I’ll introduce the main blocks, explain how they work together, and share use cases where they shine. This is part 1 of a full series that will cover setup, customization, and detailed guides for each block.
What Are WPUF User Directory Blocks?
The WPUF User Directory Blocks are a set of Gutenberg blocks designed to give WordPress site owners a drag-and-drop way to display users, their information, and their content. Instead of relying on shortcodes or fixed templates, you can build dynamic user directories and profiles directly in the WordPress editor.
There are two main container blocks and several supporting blocks that display user details, content, or interactions:
Main Blocks
User Directory Block – Display a list of users (great for membership listings or team pages).
User Profile Block – Display a detailed view of a single user (perfect for profile pages or author pages).
✅ Fully Customizable – Control typography, colors, spacing, and layout within the editor.
✅ Conditional Visibility – Show or hide blocks based on user role or viewer role.
✅ Responsive & Mobile-Friendly – Works on any device without extra coding.
✅ Extendable – Use with custom usermeta, integrations, or additional plugins.
This means you can design exactly the directory or profile layout you need, without touching a line of code.
Example Use Cases
Here are a few real-world ways you might use the WPUF User Directory Blocks in WordPress:
Team Directory
Perfect for business sites showcasing staff.
User Directory Block
├── User Avatar Block
├── User Name Block
├── User Custom Field Block (Job Title)
└── Profile Button
Membership or Student Directory
Great for schools, communities, or clubs.
User Profile Block
├── User Avatar Block
├── User Name Block
├── User Bio Block
├── User Contact Info Block
├── User Social Fields Block
└── User Posts Block
Author Pages for Blogs
Turn your authors into featured contributors.
User Profile Block
├── User Avatar Block
├── User Name Block
├── User Bio Block
├── User Posts Block
├── User Comments Block
└── User Social Fields Block
Each of these layouts can be styled, reordered, or expanded with just a few clicks in the block editor.
Unlock the User Directory module with WPUF Professional and start showcasing your users beautifully. Get it directly from weDevs site.
SEO Benefits for Your WordPress Site
Adding user directories and profiles isn’t just good for usability, it can also boost your site’s SEO:
More indexable content (author pages, team bios, member listings).
Internal linking opportunities (profile buttons link to user pages).
Increased dwell time (visitors spend longer browsing user content).
If you run a membership site, educational portal, or content-heavy blog, structured user directories can help both users and search engines navigate your site better.
What’s Next in the Series
This is just the beginning. Over the coming weeks, I’ll publish dedicated posts on each block, including:
Quick Start Guide: Building your first directory.
User Directory Block – settings, layouts, and customization.
User Profile Block – detailed profiles and advanced setups.
User Avatar, Bio, and Contact Info Blocks – displaying user details.
User Posts, Comments, and Files Blocks – showcasing user activity.
User Social Fields and Custom Field Blocks – extending profiles with social links and metadata.
Advanced Features – conditional display, responsive layouts, and integrations.
Each post will include screenshots, block settings, and real-world examples to help you implement the features step by step.
Wrapping Up
With the new WPUF User Directory Blocks, you no longer need complex shortcodes or heavy third-party plugins to create user listings and profiles. Instead, you can design beautiful, functional directories right inside the Gutenberg editor, whether it’s for a team page, membership listing, or a full community directory.
Let’s face it—debugging in WordPress can sometimes feel like chasing a mosquito in a dark room. You know there’s a bug, but where?!
Thankfully, WordPress provides us with some handy tools to make our lives a whole lot easier. One of those unsung heroes is the wp_debug_backtrace_summary() function.
What Is wp_debug_backtrace_summary() and Why Should You Care?
In simple terms, wp_debug_backtrace_summary() gives you a neat little breadcrumb trail of function calls that led to the current point in your code. It’s like GPS for your brain when you’re trying to figure out “Wait… how did we even get here?”
Think of it as a summarized version of debug_backtrace(), but trimmed down, cleaner, and just easier to read. It tells you what function was called, from where, and in what order.
Common Use Cases
– Tracking down who called a particular function (plugin? theme? some mysterious ghost?)
– Debugging unexpected behavior in hooks, filters, or template overrides
– Custom logging or building a dev toolkit
– Adding context to error logs
A Real Example (Because We Love Code)
Let’s say you’re debugging a custom plugin and you want to know what triggered your function:
function my_custom_function() {
error_log( wp_debug_backtrace_summary() );
}
Translation? Your function was called by some_method() inside My_Plugin, which was triggered by a WordPress hook during the init action. Detective mode: Activated.
Let’s unpack those parameters like it’s a birthday gift:
$ignore_class — Want to ignore your own class to keep the output clean? You can.
$skip_frames — Skip N number of stack frames. Handy if you’re wrapping the function in helpers.
$pretty — If true, you get a nice readable format. False gives you raw class/function names (great for nerdier logging).
🧠 Bonus Tip: When Not to Use It
This function is for development and debugging. Don’t leave it in production unless you’re logging for a very specific reason and you know what you’re doing. Otherwise, it’s like leaving a walkie-talkie on during a top-secret mission.
The Difference Between wp_debug_backtrace_summary() vs debug_backtrace()
debug_backtrace() is like the full Sherlock Holmes novel: detailed, deep, but maybe a bit much when all you want is the killer’s name. wp_debug_backtrace_summary() is the: just the juicy parts you care about.
Also, the WordPress function makes sure the output is clean, consistent, and WordPress-friendly.
Wrapping Up
If you’re debugging WordPress and still not using wp_debug_backtrace_summary(), you’re missing out on one of the easiest ways to track down issues. It’s fast, informative, and helps you stay sane when your hooks, plugins, and themes start playing the blame game.
Next time something weird happens in your WordPress site (and let’s be honest, it will), drop in a wp_debug_backtrace_summary() and follow the breadcrumbs.
Happy debugging, and may your logs be ever helpful!
Hey there, fellow WordPress wrangler! Ever wish you could sneak into the backstage of WordPress and whisper, “Hey, do this when that happens”? Well, you can — thanks to WordPress hooks.
Whether you’re building a personal site, crafting a client project, or just tinkering to learn — mastering hooks gives you superpowers.
In this post, we’re diving into:
✅ What the heck a WordPress hook actually is ✅ Two shiny tables: admin dashboard vs frontend hooks ✅ Key info: hook name, what it does, how many parameters it passes, and little pro tips ✅ Some cheeky commentary (because code is fun)
Let’s hook in!
So… What Is a WordPress Hook?
A WordPress hook is a way to tap into the core without hacking it.
Hooks come in two flavors:
Action Hooks: Do something when WordPress gets to a certain point.
Filter Hooks: Change something before it’s output or saved.
Think of them like event listeners or interceptors — but friendlier.
Now, WordPress is hooked up with hundreds of these. But instead of listing them all like a phonebook, I’ve split the most useful ones for personal developers into two tidy camps:
🛠️ Admin Dashboard Hooks (for the admin wizards)
🏡 Frontend Hooks (for what users actually see)
Grab your coffee ☕, it’s table time.
Frontend Hook Execution Order
Order
Hook Name
Type
Description
Parameters
1
mu_plugin_loaded
Action
Fires once all must-use plugins are loaded.
None
2
network_plugin_loaded
Action
Fires once all network plugins are loaded.
None
3
muplugins_loaded
Action
All must-use plugins are connected.
None
4
registered_taxonomy
Action
Fires after a taxonomy is registered.
None
5
registered_post_type
Action
Fires after a post type is registered.
None
6
plugin_loaded
Action
Fires once a plugin is loaded.
None
7
plugins_loaded
Action
All plugins are plugged in.
None
8
sanitize_comment_cookies
Action
Sanitize comment cookies.
None
9
setup_theme
Action
Before loading the theme’s functions.php file.
None
10
load_textdomain
Action
Load the theme’s textdomain.
None
11
after_setup_theme
Action
After the theme’s functions.php file is loaded.
None
12
auth_cookie_malformed
Action
Fires when an authentication cookie is malformed.
None
13
auth_cookie_valid
Action
Fires when an authentication cookie is valid.
None
14
set_current_user
Action
Set the current user.
None
15
init
Action
Initialize WordPress.
None
16
widgets_init
Action
Initialize widgets.
None
17
register_sidebar
Action
Register sidebars.
None
18
wp_register_sidebar_widget
Action
Register sidebar widgets.
None
19
wp_default_scripts
Action
Register default scripts.
None
20
wp_default_styles
Action
Register default styles.
None
21
admin_bar_init
Action
Initialize the admin bar.
None
22
add_admin_bar_menus
Action
Add menus to the admin bar.
None
23
wp_loaded
Action
WordPress is fully loaded.
None
24
parse_request
Action
Parse the request.
None
25
send_headers
Action
Send HTTP headers.
None
26
parse_query
Action
Parse the query.
None
27
pre_get_posts
Filter
Modify the main query before it’s executed.
$query
28
posts_clauses
Filter
Modify the SQL clauses of the query.
$clauses, $query
29
posts_selection
Action
After the posts are selected.
None
30
wp
Action
WordPress environment is set up.
None
31
template_redirect
Action
Before the template is loaded.
None
32
get_header
Action
Before the header template is loaded.
None
33
wp_head
Action
Inside the <head> section of the theme.
None
34
wp_enqueue_scripts
Action
Enqueue scripts and styles for the front end.
None
35
wp_print_styles
Action
Print styles in the header.
None
36
wp_print_scripts
Action
Print scripts in the header.
None
37
get_search_form
Filter
Filter the search form HTML.
$form
38
loop_start
Action
Before the loop starts.
$query
39
the_post
Action
After each post is set up.
None
40
get_template_part_content
Action
Before a template part is loaded.
None
41
loop_end
Action
After the loop ends.
$query
42
get_sidebar
Action
Before the sidebar template is loaded.
None
43
dynamic_sidebar
Filter
Filter the sidebar’s widgets output.
$sidebar_output, $index
44
pre_get_comments
Filter
Modify the comments query before it’s executed.
$query
45
wp_meta
Action
Add meta tags to the header.
None
46
get_footer
Action
Before the footer template is loaded.
None
47
wp_footer
Action
Inside the footer section of the theme.
None
48
wp_print_footer_scripts
Action
Print scripts in the footer.
None
49
admin_bar_menu
Action
Modify the admin bar menu.
$wp_admin_bar
50
wp_before_admin_bar_render
Action
Before the admin bar is rendered.
None
51
wp_after_admin_bar_render
Action
After the admin bar is rendered.
None
52
shutdown
Action
After WordPress has finished processing.
None
Admin Panel & AJAX Hook Execution Order
Order
Hook Name
Type
Description
Parameters
1
mu_plugin_loaded
Action
Fires once all must-use plugins are loaded.
None
2
network_plugin_loaded
Action
Fires once all network plugins are loaded.
None
3
muplugins_loaded
Action
All must-use plugins are connected.
None
4
registered_taxonomy
Action
Fires after a taxonomy is registered.
None
5
registered_post_type
Action
Fires after a post type is registered.
None
6
plugin_loaded
Action
Fires once a plugin is loaded.
None
7
plugins_loaded
Action
All plugins are plugged in.
None
8
sanitize_comment_cookies
Action
Sanitize comment cookies.
None
9
setup_theme
Action
Before loading the theme’s functions.php file.
None
10
load_textdomain
Action
Load the theme’s textdomain.
None
11
after_setup_theme
Action
After the theme’s functions.php file is loaded.
None
12
auth_cookie_valid
Action
Fires when an authentication cookie is valid.
None
13
set_current_user
Action
Set the current user.
None
14
init
Action
Initialize WordPress.
None
15
widgets_init
Action
Initialize widgets.
None
16
register_sidebar
Action
Register sidebars.
None
17
wp_register_sidebar_widget
Action
Register sidebar widgets.
None
18
wp_default_scripts
Action
Register default scripts.
None
19
wp_default_styles
Action
Register default styles.
None
20
admin_bar_init
Action
Initialize the admin bar.
None
21
add_admin_bar_menus
Action
Add menus to the admin bar.
None
22
wp_loaded
Action
WordPress is fully loaded.
None
23
auth_redirect
Action
Redirects unauthenticated users to the login page.
None
24
_admin_menu
Action
Internal hook for setting up the admin menu.
None
25
admin_menu
Action
Allows adding items to the admin menu.
None
26
admin_init
Action
Initialize the admin panel.
None
Quick Peek: Hook in Action
Let’s say you want to add a custom stylesheet only for the admin:
Or maybe, you’re sneaking a cheeky “Read More” after every post:
add_filter('the_content', function($content) {
if (is_single()) {
$content .= '<p>Thanks for reading! More coming soon.</p>';
}
return $content;
});
Wrapping It Up (With a Cherry on Top)
WordPress hooks might feel a bit invisible at first, but once you get them, you’ll start seeing the Matrix of WordPress. They’re your way of bending WordPress to your will — without touching core files, breaking updates, or sacrificing kittens.
If you’re building your personal developer site, this is where your personality and code style shine. Want a slick dashboard experience for you and your clients? Use admin hooks. Want buttery frontend interactivity? Frontend hooks to the rescue!
What’s Next?
-> Try adding a few of these to your functions.php -> Pick one unfamiliar hook and build something fun -> Bookmark this post — trust me, future-you will thank you
Have a favorite hook not listed here? Or a custom use-case you’re proud of? Drop it in the comments. Let’s keep this hook party going!
TechFlow had already navigated the challenges of revamping a major module, but now they faced a new dilemma—what if they scheduled their big release just before a major holiday?
After months of development, leadership saw an opportunity to capitalize on the holiday season. With user engagement expected to be at its peak, a pre-holiday launch seemed like the perfect way to maximize impact, boost adoption, and enter the new quarter with strong momentum.
The Plan
The TechFlow team worked tirelessly, streamlining development, testing, and user feedback. The timeline was aggressive, but leadership was optimistic. Their plan looked like this:
Final Development Sprint – Address major bugs and refine UI/UX.
Beta Testing & Feedback Round – Select a small user group for real-world validation.
Marketing & Awareness – Generate excitement through emails, blog posts, and social media.
Pre-Holiday Release – Deploy the new version a few days before the holiday, ensuring users experience the improvements firsthand.
The Pros of a Pre-Holiday Release
Increased Engagement: With more users online during the holiday season, adoption rates could surge.
Marketing Advantage: A fresh release can generate buzz and give TechFlow an edge over competitors.
Revenue Opportunities: If the platform included premium features, this period could drive upgrades and new purchases.
Year-End Momentum: A successful launch could set the stage for a strong start in the following quarter.
The Challenges & Risks
Limited Developer Availability: Many team members were planning time off, making rapid responses to critical issues difficult.
Higher Stakes for Bugs: A major issue post-launch could frustrate users and damage brand reputation.
Support Team Overload: A spike in user activity often means more support tickets, potentially overwhelming the reduced holiday staff.
Rollback Risks: If a rollback was necessary, it could disrupt users during a peak usage period.
The Reality Check
As the release date approached, tensions ran high. Internal testing revealed last-minute performance issues, and the support team raised concerns about their ability to handle holiday traffic. A heated discussion followed—should they push through or delay?
After weighing the risks, TechFlow’s leadership made a strategic decision: a limited rollout to a smaller audience first. This approach allowed them to gather real-time feedback without exposing all users to potential disruptions. The wider release was scheduled for post-holiday, when the team was fully available.
The Outcome
The phased release strategy proved to be a win. The limited launch uncovered minor issues, which were quickly addressed before the full rollout. Users responded positively, and TechFlow entered the new quarter with both confidence and valuable insights.
Key Takeaways
Holiday releases can be high-reward but come with significant risks.
Team availability should always be factored into release planning.
A phased rollout can mitigate risks and allow for quick fixes.
User excitement must be balanced with stability—launching a polished product is more valuable than rushing an incomplete one.
This experience reinforced an important lesson: timing is crucial, but readiness is even more important.