Skip to content

Workspaces Directory Theme

Version: 1.0.0 Parent: Blocksy Repository: derintolu/workspaces-directory

A taxonomy-based workspace theme for the Directory Hub with dynamic menu system. Cloned from workspaces theme with enhanced flexibility for any taxonomy-driven navigation.

Key Differences from Workspaces

FeatureWorkspacesWorkspaces Directory
Menu SystemHardcodedTaxonomy-agnostic
Menu LocationsFixed (Lender/Agent/Partner)Dynamic per-term
RoutingHub shortcodesTaxonomy archives
CustomizerBasic colorsColors + menu taxonomy
Tutor LMSOptionalFull integration

Features

Taxonomy-Agnostic Menu System

Any taxonomy can control sidebar menu assignment:

php
// Default: 'workspace' taxonomy
// Override via filter:
add_filter('workspaces_directory_menu_taxonomy', function() {
    return 'product_cat'; // Use WooCommerce categories
});

Dynamic Menu Locations

Menu locations are registered dynamically:

LocationPattern
Defaultsidebar_menu
Per-termsidebar_{taxonomy}_{term_slug}
User menuuser_menu

Three-level priority for sidebar state:

  1. Per-page - _sidebar_default_state post meta
  2. Per-term - Term meta setting
  3. Global - Customizer default

Installation

  1. Install and activate Blocksy theme
  2. Upload workspaces-directory theme
  3. Activate as child theme
  4. Configure menu taxonomy in Customizer
  5. Create menus and assign to term-specific locations

Template Files

FilePurpose
workspace-sidebar-frame.phpSidebar wrapper (467 lines)
workspace-sidebar-content.phpSidebar internals (701 lines)
taxonomy-workspace.phpWorkspace archives
tutor/single-course-iframe.phpCourse iframe display

Includes

FilePurpose
taxonomy-menu-system.phpDynamic menu registration
customizer-colors.phpColor settings
sidebar-state-metabox.phpPer-page sidebar control
sidebar-insights-slider.phpProfile completion widget

Customizer Settings

SettingCSS Variable
Sidebar Background--wd-sidebar-bg
Sidebar Text--wd-sidebar-text
Sidebar Accent--wd-sidebar-accent
Header Bar Background--wd-header-bar-bg
Header Bar Text--wd-header-bar-text
Border Color--wd-border-color
User Popup Background--wd-user-popup-bg
Profile Gradient Start--wd-profile-gradient-start
Profile Gradient End--wd-profile-gradient-end

Select which taxonomy controls menu locations:

php
// Customizer option: workspaces_menu_taxonomy
// Default: 'workspace'

Header Background

Same as Workspaces theme - image, video, or solid with overlay.

Post editor metabox for per-page sidebar control:

php
// Post meta: _sidebar_default_state
// Values: 'open', 'collapsed', 'inherit'

Learning Context

Special handling for /learning/ workspace:

  • Shows Tutor LMS dashboard instead of WordPress menu
  • Uses Workspaces_Tutor_Dashboard class
  • Hash-based navigation (#section-name)
  • Icon mapping from Tutor to Lucide icons

Tutor Page Detection

php
// Returns true for:
is_singular('courses')
is_singular('lesson')
is_singular('tutor_quiz')
is_post_type_archive('courses')

Profile Data Integration

Sidebar pulls user profile from frs-wp-users REST API:

GET /wp-json/frs-users/v1/profiles/user/{id}

Fallback: WordPress user meta if API unavailable.

Fields Used:

  • first_name, last_name, email
  • job_title, phone, company
  • nmls_id, description
  • facebook, twitter, linkedin

Theme.json

Same design tokens as Workspaces theme:

  • 15 colors - Blues, neutrals, teals, status
  • 10 gradients - Brand, hero, card variants
  • Fluid typography - XS to 5XL
  • 10-step spacing - 4px to 96px
  • Shadow presets - Small to 2XL

Interactivity API

Same stores as Workspaces:

StorePurpose
workspaces/sidebarToggle with localStorage
workspaces/datetimeLive clock
workspacesMenu interactions

Build Commands

bash
npm run start  # Watch mode (wp-scripts)
npm run build  # Production build (wp-scripts)

File Structure

workspaces-directory/
├── functions.php                (997 lines)
├── workspace-sidebar-frame.php  (467 lines)
├── workspace-sidebar-content.php (701 lines)
├── taxonomy-workspace.php       (123 lines)
├── style.css                    (388 lines)
├── theme.json                   (533 lines)
├── includes/
│   ├── taxonomy-menu-system.php
│   ├── customizer-colors.php
│   ├── sidebar-state-metabox.php
│   └── sidebar-insights-slider.php
├── assets/
│   ├── css/tailwind.css
│   ├── js/sidebar-view.js
│   ├── js/datetime-view.js
│   └── js/customizer-preview.js
└── tutor/
    └── single-course-iframe.php

Hooks and Filters

Actions

HookPurpose
workspaces_header_background_contentAdd header content
workspaces_header_background_errorHandle background errors

Filters

FilterPurpose
workspaces_directory_menu_taxonomyOverride taxonomy
hub_should_load_assetsControl asset loading
workspaces_auto_insert_header_backgroundAuto-insert background

Performance

  • Lazy load images in sidebar
  • Conditional asset loading
  • CSS custom properties (no recompiles)
  • localStorage for sidebar state
  • Optimized scrollbar styling

Security

  • Nonces on metabox saves
  • Capability checks for editing
  • Sanitized customizer inputs
  • Escaped output throughout
  • wp_remote_get() with timeout

Hub21 Platform Documentation