Upload a zip, paste a shortcode, import a spreadsheet. First directory live in about ten minutes, most of it spent deciding on a design.
You need WordPress 6.2 or newer on PHP 7.4 or newer, an administrator login, and the plugin zips from your purchase email. Two honest notes. First, filtering runs in the browser once the page has loaded, which keeps a list in the low thousands instant and makes a list in the tens of thousands the wrong tool; tell us what you are planning and we will say so before you buy. Second, these plugins have no licence screen to fill in. You install the zip and it works, and your licence is the terms you bought under rather than a key the software checks.
Go to Plugins → Add New → Upload Plugin and upload the zips from your purchase email. Install only the ones you will use: each is independent, and there is no shared framework plugin to install first. Activation adds a settings page and nothing else, and no directory appears on the site until you add a shortcode.
Every plugin registers under Settings: Company Directory (Company Directory Pro), Company Directory again (SME Company Directory Pro), Event Directory and Gym Timetable. If you run both company plugins, two entries carry the same menu label. The page heading tells you which is which, and the URL ends company-directory-pro or sme-company-directory-pro.
Create the page and paste one of [company_directory], [sme_company_directory], [event_directory] or [gym_timetable]. Publish it and you will see the bundled sample data rendered in the default design. Scripts and styles load only on pages containing a shortcode.
On the settings page, use Export CSV for Excel. This is your template, and it is the safest one, because it is generated from the live schema rather than copied from documentation. Keep the JSON export as a technical backup if you want one.
Do not rename the heading row. Keep the ID column so featured entries and future edits stay attached to the right record. Save as CSV UTF-8, then use Import on the same settings page. An invalid row is reported with its exact spreadsheet line number, so a bad time or URL is a named fix.
Choose one of the 18 designs. If none fits the site, enable custom colours and set the accent, background, card background and text colour. Turning custom colours back off restores the complete preset and keeps your values, so experimenting costs nothing.
View the page at desktop and mobile widths with the live theme active. The gym calendar scrolls sideways on a narrow screen by design; the directories reflow to two columns then one. This step catches theme conflicts that no test on our side can predict.
| Shortcode | Plugin | What it renders |
|---|---|---|
[company_directory] | Company Directory Pro | Listed-company cards with market tabs, sector multi-select, name and ticker search |
[sme_company_directory] | SME Company Directory Pro | Member cards with contact icons, sector multi-select and A to Z |
[event_directory] | Event Directory Pro | The saved default view: speaker cards, timeline or calendar |
[event_timeline] | Event Directory Pro | The grouped running order, all matching sessions |
[event_calendar] | Event Directory Pro | The multi-day timetable grid |
[gym_timetable] | Gym Directory Pro | The saved default view, which is the weekly calendar on a new install |
[gym_calendar] | Gym Directory Pro | The seven-column weekly grid |
[gym_classes] | Gym Directory Pro | Paginated class cards |
[gym_timeline] | Gym Directory Pro | Chronological day list (alias of view="list") |
Every shortcode above accepts theme="…". The event and gym shortcodes also accept day="…", and [event_directory] and [gym_timetable] accept view="…".
The behaviours you will actually live with.
In a non-autoloaded WordPress option, not in the plugin folder. Two consequences worth knowing: replacing or updating the plugin never erases an imported directory, and the data costs nothing on the pages that do not display one. Export before a major edit anyway, because an import replaces rather than merges.
The file you import becomes the directory. Adding ten members means exporting the current list, adding ten rows, and importing the whole thing back. This is why the export is the editing template rather than a backup you file away.
The primary filter leads and the rest narrow it. Selecting AIM shows every AIM company; adding a sector or typing a ticker narrows that AIM set; clearing the secondary filter restores the full AIM set without changing the market. The live result count sits above the filter panel so it stays visible while you change your mind.
Every shortcode takes a theme attribute: [gym_timetable theme="emerald"]. The saved setting rules the site and the attribute rules the page, so a public directory and a members-only one can look nothing alike. An unknown value falls back to the saved setting.
A day attribute filters on the server and removes the day selector: [event_directory day="2"] or [gym_timetable day="Monday"]. Your own custom day labels work as the value. Use this when each day has its own URL and its own ticket or booking link.
Company Directory Pro features by ticker, SME Company Directory Pro by stable company ID, one per line. Unknown values are ignored rather than erroring. The featured block hides itself whenever any filter is active, so a curated set can never sit above a filtered result and appear to be part of it.
Company Directory Pro checks four sources in order: a snapshot imported through settings, CDP_COMPANIES_JSON_PATH defined in wp-config.php, the cdp_companies_json_path filter, then the bundled snapshot. Point it at a server-side file you refresh on a cron and the directory updates without anyone logging into WordPress.
Event and gym plugins ship two named dummy portraits each and alternate them through the sample data. Replace those two files for a global placeholder change, or set an image URL per row for real photography. There is also a global on/off switch for speaker and instructor images.
Event Directory Pro and Gym Directory Pro both take a linked sponsor image in the header, picked from the media library. Use a 3:1 landscape asset around 600 by 200 pixels, transparent PNG or WebP under 250 KB. It renders only when the header and the sponsor setting are both on.
Each plugin renders optional HTML beneath pagination, sanitised with wp_kses_post(). Safe inline HTML and links survive; scripts and unsafe attributes are stripped. Clear the checkbox to suppress it entirely.
SME Company Directory Pro appends any combination of source, medium, campaign, term and content to every outbound HTTP link: website, both socials, map and branding. Existing query strings and fragments are preserved. Telephone and email links are excluded on purpose.
Gym Directory Pro filters Studio and Level live where the site allows it, and also gives every timetable an explicit Apply filters button as a fallback for cached or builder-heavy front ends. Each instance initialises once, so a page builder cannot attach the same handlers twice.
Each plugin uses its own PHP prefix, options, asset filenames and shortcodes: CDP, SCDP, ECDP and GYMDP. Nothing is shared and nothing collides. A chamber site can run the member directory, the annual conference programme and a class timetable on one install.
Tailwind is enqueued from a CDN, and only on pages that contain the shortcode. The plugin also ships its own namespaced CSS, so the layout holds if the CDN is blocked. Every theme rule is scoped beneath a cdp-theme-<name> wrapper class and nothing is output inline.
Administrators. Settings pages are registered with the manage_options capability, and import and export actions are nonce and capability protected, so an editor cannot replace a directory by finding the URL.