Most WordPress sites use roles in a simple way: administrator, editor, author, subscriber. But platforms that serve multiple distinct user types — each with different permissions, dashboards, and registration flows — quickly outgrow that model. This case study documents a set of WordPress modifications built for acteursbelangen.nl, a Dutch platform for professional actors, where the challenge was introducing a new user type, a Casting Director, alongside the existing actor member base.

The project was scoped at nine discrete tasks covering user roles, frontend registration, admin approval workflows, mobile navigation, video thumbnails, and a custom casting management interface. All modifications were implemented using native WordPress features, Advanced Custom Fields (ACF), and targeted custom code — without relying on heavy membership plugins.

Project Overview

ProjectWordPress platform modifications
Client siteacteursbelangen.nl — professional actor membership platform
CountryNetherlands
StackWordPress, ACF, WPCode, custom PHP
Scope9 tasks across roles, forms, menus, video, and admin UI
Estimated effort15–22 hours

The Nine Tasks at a Glance

The modifications covered three areas of the platform. The first was fixing existing issues: YouTube video thumbnails were not rendering correctly on actor profile pages due to a query string problem in the stored URLs. The second was improving the existing actor experience: the mobile dropdown menu was not showing the correct items for logged-in actors. The third — and largest — area was building an entirely new user type from scratch.

The Casting Director role required a frontend registration page at /aanmelden-casting-director with fields for company name, full name, address, contact details, social links, and professional affiliations. New registrations would be stored as pending users, requiring manual admin approval before login was permitted. Once approved, Casting Directors could create and manage posts of the tom_project custom post type — the same post type used for castings visible on the Top of Mind section of the site — and view the list of actors who had applied to each casting.

Technical Approach

Every modification was implemented as targeted custom code rather than an additional plugin. For the video thumbnail fix, a small JavaScript snippet was added via WPCode to intercept the lazy loader before it attempted to fetch the malformed URLs and replace them with correctly formatted ones. For the mobile menu, a wp_nav_menu_args filter directed logged-in subscribers to a dedicated profile menu (menu ID 2) instead of the general navigation. For the Casting Director role, a combination of ACF field groups, a custom frontend form handler, a login hook for approval enforcement, and capability assignments covered the full workflow.

The approval system used a simple user meta flag (account_approved) combined with a wp_authenticate_user hook to block unapproved users from logging in. This approach avoided any dependency on third-party user management plugins and kept the logic transparent and easy to modify later.

What the Technical Article Covers

The follow-up article in this series goes into the specific code and decisions behind each of the nine tasks: how the YouTube URL parsing was fixed, exactly how the menu filter works, the ACF field structure for Casting Director profiles, the approval hook implementation, and the capability setup that allows Casting Directors to create tom_project posts. It also covers the debugging process for the actor avatar that was not displaying in the mobile header, and the user meta viewer added to the admin panel to make all ACF field values inspectable without a plugin.

Result

All nine tasks were completed. The platform now supports two distinct user types with separate registration flows, separate mobile navigation, and separate backend capabilities. Existing actor accounts were not affected. The Casting Director workflow — from registration through admin approval to casting creation — runs entirely on native WordPress infrastructure with custom code, keeping the platform maintainable and free of unnecessary plugin dependencies.