Vexal Documentation by WileyLabs

Vexal Portfolio User Guide

Stable

Plugin: vexal-portfolio

Pairs with: Vexal Media (optimization, Media Library columns)

Updated: July 2026

Vexal Portfolio manages structured project galleries, showcases, and client media intake. It organizes media into destination pools, links attachments to projects, and routes uploads through Vexal Media for optimization—without replacing your theme templates.

What Vexal Portfolio does

  • Projects — individual jobs/sites with gallery media pools and metadata
  • Showcases — public portfolio pages with shortcodes and assigned projects
  • Galleries — reusable media collections organized by type and purpose
  • Gallery Types & Subtypes — configurable uploader classification registry
  • Vexal Categories — shared filter taxonomy across Portfolio and Media
  • Media Linkage — sync attachment ↔ project/showcase/category links
  • Before/After — destination pools for comparison media
  • Client Project Media Uploader — frontend intake via [vexal_project_uploader]
  • Project Workspace — admin shell (Phase 1: Media tab placeholder)

Terminology (read this first)

TermMeaningCode / CPT
Vexal CategoryFilter taxonomy shared with Vexal Mediavexal_portfolio_category
Vexal GalleryReusable media collection / project record (admin: Projects)vxp_portfolio
Vexal Project / ShowcaseHigher-level public display container (admin: Showcases)vxp_project
Gallery TypeWhat kind of gallery it is (e.g. Before & After, Project Progress)Content types registry
Gallery SubtypeMore specific subtype under a gallery typeRegistry defaults + custom
Media PurposeDestination/pool for uploaded mediabefore, after, progress, detail, project_video, featured, reference

Admin naming note: In WordPress admin, Projects = vxp_portfolio (a job/gallery). Showcases = vxp_project (a public portfolio page). Code slugs are stable; admin labels are optimized for client workflows.

Media hierarchy

Media (attachments)
  └── Project / Gallery (vxp_portfolio)
        └── optional Showcase (vxp_project)
              └── Vexal Category (vexal_portfolio_category)

One project can appear on multiple showcases. One showcase lists many projects.

Projects and Showcases

Projects (vxp_portfolio)

Admin menu: Projects. Each record is one job, site, or body of work.

  • _vxp_gallery_media — JSON destination pools from uploader (before, after, progress, etc.)
  • _vxp_gallery_type / _vxp_gallery_subtype — classification metadata
  • Attachments link back via _vxp_portfolio_item_id
  • Manage gallery media: admin.php?page=vexal-portfolio-portfolios&edit={id}&view=media

Showcases (vxp_project)

Admin menu: Showcases. Public portfolio pages.

  • Shortcode: [vexal_portfolio id="slug"] using _vxp_slug
  • _vxp_portfolio_ids — assigned project IDs
  • Layout, transition, and frontend label settings

Admin menu: Gallery Types. Registry class: Vexal_Portfolio_Content_Types.

14+ default types including Project Progress, Before & After, Final Showcase, Detail Gallery, Project Video, Materials, Design Process, Installation Process, Team, Equipment, Product Gallery, Manufacturing Process, Inspection/QA, Documents, and Reference—each with default subtypes.

Admins can add custom subtypes (persisted in options). AI suggestion hook: vexal_portfolio_suggest_content_type.

Media Linkage

Admin screen: Media Linkage. Syncs attachment ↔ project/showcase/category relationships. Use after bulk imports or when columns appear empty.

Before/After and featured media

Media Purpose before and after populate dedicated pools in _vxp_gallery_media. featured and project_video serve hero and video destinations. Admin can build comparison galleries from organized pools.

Media Library columns (via Vexal Media)

ColumnLinked to
Vexal Galleryvxp_portfolio project record
Vexal Projectvxp_project showcase (when assigned)
Vexal Categoryvexal_portfolio_category term

Filter: upload.php?vexal_gallery={portfolio_id}

Asset Batch IDs

Each uploader submission receives an asset batch ID and queue batch ID. Stored on submission CPT vxp_submission. Use batch IDs to trace intake → processing → Media Library placement.

_vxp_gallery_media stores JSON pools keyed by Media Purpose. Uploaded files are organized into the correct pool during processing. Admin builds portfolio displays from these pools—upload does not auto-publish showcases.

Client Project Media Uploader

Shortcode: [vexal_project_uploader] (parameterless).

Requires: workspace_enabled in settings, Vexal Media active, processing ready.

Full uploader workflow guide →

Project Workspace admin shell

When workspace_enabled is on (default: off), admins see Project Workspace in the menu.

Phase 1: Only the Media tab is active (placeholder). Other tabs show “Coming soon.”

Does not register [vexal_project_workspace] or [vexal_project_media] shortcodes.

Phase 1 vs future

Phase 1 (shipped)

  • Client intake via [vexal_project_uploader]
  • Gallery-first organization (type, subtype, media purpose)
  • Vexal Media optimization bridge
  • Media Library linkage (gallery, category, project columns)
  • Asset batch tracking
  • Enabled destinations: before, after, progress, detail, project_video, featured, reference

Future Coming soon

  • Publishing sync — auto-place media on public showcases
  • Workspace tabs — Overview, Story, Publishing, Visibility, Requests, Activity
  • Phase 2 destinations — drone_footage, materials, documents, inspiration (registered but disabled)
  • Request links — shortcode attrs destination, token
  • Per-project allow lists for non-admin uploaders
  • Full lifecycle: Media → Story → Publishing → Visibility → Requests

Uploaded media may not appear on public gallery/project pages until an admin builds the display. Publishing sync is a future step—not a Phase 1 gap.

Integrations

  • Vexal Media — required for uploader processing; provides Media Library columns and optimization
  • Vexal SmartBlocks — optional; media readiness in ledger snapshots when both active

API credentials belong in Vexal Media settings—not in Project Workspace. See Ecosystem bridges.

Recommended workflow

  1. Configure Gallery Types and Vexal Categories
  2. Enable Project Workspace in Portfolio settings
  3. Ensure Vexal Media is active and processing is configured
  4. Place [vexal_project_uploader] on a client-facing page
  5. Clients upload via the 5-step wizard
  6. Review processed media in Media Library (filter by Vexal Gallery)
  7. Organize pools in Project → Manage gallery
  8. Assign projects to Showcases and publish portfolio pages

See also