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 organizes Projects into public Portfolios. Each Project holds Project Assets (uploads), a visual Gallery module, and other Project modules such as Services and Materials. Client intake routes files through Vexal Media for optimization—without replacing your theme templates.

First time? See the unified Quick Start for install order. Portfolio uploader processing requires Vexal Media active.

Getting started

  1. Install and activate vexal-portfolio. Ensure Vexal Media is active for optimization and Media Library columns.
  2. Open WordPress admin → Vexal Portfolio → Dashboard.
  3. Review Project Asset Types (14+ defaults ship) and Categories (shared vexal_portfolio_category taxonomy).
  4. Create a Portfolio (vxp_project) with a shortcode slug.
  5. Create Projects (vxp_portfolio) and assign them to one or more Portfolios.
  6. For client uploads: open Vexal Portfolio → Settings, enable Project Workspace (workspace_enabled; default off), and confirm Vexal Media processing is ready.
  7. Place [vexal_project_uploader] on a page when intake is ready — see Project Uploader guide.
  8. Publish with [vexal_portfolio id="slug"].

What Vexal Portfolio does

  • Portfolios — public collections with shortcodes, layout, and assigned Projects
  • Projects — individual bodies of work with Gallery Assets and Project modules
  • Project Assets — uploaded or attached files classified by Asset Type / Asset Subtype
  • Gallery — Project module that presents eligible visual Assets
  • Project Asset Types — uploader classification registry
  • Vexal Categories — shared filter taxonomy across Portfolio and Media
  • Media Linkage — sync attachment ↔ Project / Portfolio / category links
  • Client Project Media Uploader — frontend intake via [vexal_project_uploader]

Terminology (read this first)

TermMeaningCode / CPT
PortfolioCollection of Projectsvxp_project
ProjectOne body of workvxp_portfolio
Project AssetsUploaded or attached Project resourcesAttachments + _vxp_gallery_media pools
GalleryProject module that displays visual AssetsProject Gallery UI / pools
Asset Type / Asset SubtypeClassification for uploaded AssetsVexal_Portfolio_Content_Types registry
Asset destinationPool for uploaded Assetsbefore, after, progress, detail, project_video, featured, reference
Vexal CategoryFilter taxonomy shared with Vexal Mediavexal_portfolio_category
ShowcaseDescriptive word only — not a product object

Compatibility: CPT slugs are retained (vxp_project = Portfolio, vxp_portfolio = Project). Admin page slugs such as vexal-portfolio-projects remain for bookmarks. Services and Materials text fields are Project modules, not Asset Types—unless you are classifying uploaded material photos via the Asset Types registry.

Hierarchy

Portfolio (vxp_project)
└── Project (vxp_portfolio)
    ├── Project Details
    ├── Project Assets (uploads)
    │   └── Gallery (visual presentation)
    ├── Services / Materials (structured modules)
    └── Related Projects

One Project can belong to multiple Portfolios. Membership is stored only on Portfolio posts as _vxp_portfolio_ids.

Portfolios and Projects

Portfolios (vxp_project)

Admin menu: Portfolios. Public collection pages.

  • Shortcode: [vexal_portfolio id="slug"] using _vxp_slug
  • _vxp_portfolio_ids — assigned Project IDs
  • Layout, transition, filters, CTA, and frontend labels

Projects (vxp_portfolio)

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

  • _vxp_gallery_media — JSON Asset pools from uploader
  • _vxp_gallery_type / _vxp_gallery_subtype — Asset Type classification metadata
  • Attachments link back via _vxp_portfolio_item_id
  • Project Gallery: admin.php?page=vexal-portfolio-portfolios&edit={id}&view=media

Project Asset Types and Subtypes

Admin menu: Project Asset Types. Registry class: Vexal_Portfolio_Content_Types (internal name unchanged).

Default types include Project Progress, Before & After, Finished Work, Detail Gallery, Project Video, Materials (upload classification), Design Process, Installation Process, Team, Equipment, Product Gallery, Manufacturing Process, Inspection/QA, Documents, and Reference—each with default subtypes.

Admins can add custom subtypes. AI suggestion hook: vexal_portfolio_suggest_content_type.

Media Linkage

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

Before/After and featured Assets

Asset destinations before and after populate dedicated pools in _vxp_gallery_media. featured and project_video serve hero and video destinations.

Media Library columns (via Vexal Media)

ColumnLinked to
Vexal Projectvxp_portfolio Project record
Vexal Portfoliosvxp_project Portfolio collections containing the Project
Vexal Categoryvexal_portfolio_category term

Filter: upload.php?vexal_gallery={project_id} (query arg name retained for compatibility).

Asset Batch IDs

Each uploader submission receives an asset batch ID and queue batch ID. Stored on submission CPT vxp_submission.

_vxp_gallery_media stores JSON pools keyed by Asset destination. Visual pools feed the Project Gallery. Upload does not auto-publish Portfolios.

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

When workspace_enabled is on (default: off), admins can open the Project Workspace utility (not in the primary shell by default).

Phase 1: Media tab is the active surface; other tabs may show “Coming soon.”

Recommended workflow

  1. Configure Project Asset Types and Vexal Categories
  2. Create a Portfolio
  3. Add Projects and Project Assets
  4. Assign Projects to Portfolios
  5. Enable Project Workspace if clients upload via shortcode
  6. Publish with [vexal_portfolio id="slug"]

See also