WP Manifestindependent plugin directory
manifest / content / portfolio-wp-plugin

MPRO Portfolio releases

A complete portfolio / case-study management system for WordPress, with custom card styles, Elementor template support, and Rank Math SEO integration. Part of the MPRO plugin suite.

by Sayid Moghadam · github.com/moghadam-pro/portfolio-wp-plugin · website

2stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/moghadam-pro/portfolio-wp-plugin/archive/refs/heads/main.zip

Readme

MPRO Portfolio

A structured WordPress portfolio and case-study manager with reusable card styles, native archives, Elementor integration, shortcodes, REST-ready metadata, and Rank Math SEO support.

Current version: 1.1.0
Release date: July 1, 2026
License: GPL-2.0-or-later


Overview

MPRO Portfolio adds a dedicated Portfolio content type to WordPress while preserving the familiar post-editing workflow. Each portfolio item can contain full editor content, a native Featured Image, an independent Cover Image, structured project metadata, categories, tags, display settings, and optional Elementor templates.

The plugin is designed for:

  • Product design case studies
  • UI/UX portfolios
  • Digital product showcases
  • Agency work archives
  • Selected work sections on landing pages
  • Project libraries that need structured metadata

Version 1.1.0 introduces a rebuilt architecture focused on predictable WordPress behavior, maintainability, migration safety, and removal of duplicated taxonomy menus.


Table of Contents


Key Features

WordPress-native portfolio management

  • Dedicated public mpro_portfolio post type
  • Full block/classic editor content support
  • Excerpt support
  • Featured Image support
  • Revisions
  • Author, comments, trackbacks, custom fields, and page attributes
  • Public archive and single portfolio pages
  • REST API support

Structured project metadata

  • Short description
  • Separate Cover Image
  • Client or company
  • External project URL
  • Implementation date
  • Structured duration value and unit
  • Role in project
  • Repeatable tools
  • Repeatable collaborators with name, role, and URL
  • Repeatable custom metadata rows
  • Featured portfolio flag
  • Per-item card style
  • Per-item single template

Taxonomies

  • Hierarchical Portfolio Categories
  • Non-hierarchical Portfolio Tags
  • Public taxonomy archives
  • REST-enabled terms
  • Admin filters and list-table integration

Frontend presentation

  • Three built-in card styles
  • Built-in single portfolio template
  • Built-in archive and taxonomy template
  • Responsive grid rendering
  • Manual portfolio selection
  • Featured portfolio queries
  • Category and tag filtering
  • Pagination
  • Theme template overrides
  • Optional Elementor saved-template rendering

Integrations

  • Elementor Portfolio Grid widget
  • Rank Math and Rank Math PRO compatibility
  • Rank Math replacement variables
  • REST-ready metadata
  • PHP helper functions for theme development

Requirements

Requirement Minimum / Status
WordPress 6.0 or newer
PHP 7.4 or newer
Elementor Optional
Rank Math SEO Optional
Rank Math SEO PRO Optional

The plugin remains operational when Elementor or Rank Math is not installed or inactive.


Installation

Install from a ZIP file

  1. Download the plugin ZIP package.
  2. In WordPress, open Plugins → Add New Plugin → Upload Plugin.
  3. Select the ZIP file.
  4. Click Install Now.
  5. Activate MPRO Portfolio.
  6. Open Portfolio → Styles and review the default display settings.
  7. Create a test portfolio item.
  8. If portfolio URLs return a 404 response, open Settings → Permalinks and click Save Changes once.

Manual installation

  1. Extract the package.
  2. Upload the mpro-portfolio directory to:
/wp-content/plugins/
  1. Activate MPRO Portfolio from the WordPress Plugins screen.

Updating from an Earlier Build

Before replacing an earlier MPRO Portfolio build:

  1. Create a full database backup.
  2. Back up the existing plugin directory.
  3. Deactivate the previous build.
  4. Upload version 1.1.0.
  5. Choose Replace current with uploaded when WordPress displays the replacement prompt.
  6. Activate the new version.
  7. Open Settings → Permalinks and save once.
  8. Verify the Staging Acceptance Checklist.

Version 1.1.0 includes compatibility readers for metadata created by:

  • The earlier MPRO Portfolio build
  • A compatible alternative 1.0.x build using _mpro_pf_* metadata keys

When an existing portfolio item is saved, the plugin writes the canonical version 1.1.0 metadata structure.


Admin Menu Architecture

The admin menu is intentionally controlled by one component only.

WordPress automatic menu registration is disabled for:

  • The Portfolio post type
  • Portfolio Categories
  • Portfolio Tags

The plugin then creates one top-level Portfolio menu and exactly five submenus:

  1. All Portfolio
  2. Add Portfolio
  3. Tags
  4. Categories
  5. Styles

This single-owner architecture prevents the duplicated Categories and Tags issue that can occur when automatic and manual submenu registration are mixed.

The plugin targets the fourth visible admin-menu position and attempts to place Portfolio before another menu containing mpro in its slug.


Portfolio Content Model

Native WordPress fields

Field Description
Title Portfolio or case-study title
Editor content Full project content using normal WordPress editing tools
Excerpt Optional summary and fallback card description
Featured Image Native WordPress thumbnail
Publish date Native WordPress publication date
Author Native WordPress author
Revisions Native WordPress revision history
Comments Optional native comments
Page attributes Supports menu order and related attributes

MPRO project fields

Field Storage type Description
Short Description String Concise project summary used by cards and SEO variables
Cover Image Attachment ID Independent project cover; falls back to Featured Image when empty
Client or Company String Client, organization, or product owner
Project URL URL External link to the project
Implementation Date Date Date the project was implemented or delivered
Duration Value Numeric string Project duration amount
Duration Unit String Days, weeks, months, or years
Role String The author’s role in the project
Tools Array Repeatable list of tools used
Collaborators Array Repeatable name, role, and URL entries
Additional Details Array Repeatable label and value rows
Featured Boolean Marks the project for featured queries
Card Style String Per-item card presentation override
Single Style String Per-item single-page template override

Canonical metadata keys

_mpro_portfolio_short_description
_mpro_portfolio_cover_id
_mpro_portfolio_client
_mpro_portfolio_project_url
_mpro_portfolio_implementation_date
_mpro_portfolio_duration_value
_mpro_portfolio_duration_unit
_mpro_portfolio_role
_mpro_portfolio_tools
_mpro_portfolio_collaborators
_mpro_portfolio_meta_details
_mpro_portfolio_featured
_mpro_portfolio_card_style
_mpro_portfolio_single_style

Built-in Card Styles

Version 1.1.0 includes three reusable card styles:

Identifier Name Intended use
clean Clean Minimal, balanced portfolio grids
editorial Editorial Case-study and content-led layouts
immersive Immersive Image-forward featured work sections

A card uses the Cover Image first. When no Cover Image is set, it falls back to the native Featured Image.

Card style priority:

  1. Explicit style passed by shortcode, PHP, or Elementor
  2. Per-item card style
  3. Global default card style

An explicitly enabled Elementor saved template can also become a card style using an internal identifier such as:

elementor:123

Styles Settings

Open Portfolio → Styles to configure:

  • Default Card Style
  • Archive Card Style
  • Archive Columns
  • Default Single Template
  • Elementor saved templates explicitly allowed as card styles

Elementor templates are not automatically exposed as card styles. An administrator must opt in to each template on the Styles screen. This prevents unrelated Elementor templates from appearing in portfolio style selectors.

Published Elementor templates can be selected as single-page templates without being enabled as card templates.


Shortcodes

Main portfolio grid

[mpro_portfolio]

Default behavior:

  • Nine published items
  • Ordered by publish date
  • Descending order
  • Three desktop columns
  • Two tablet columns
  • One mobile column
  • Global or per-item card style

Shortcode attributes

Attribute Default Accepted values Description
ids Empty Comma-separated post IDs Manually selected items; supplied order is preserved
featured false true / false Restrict results to featured portfolio items
category Empty Comma-separated slugs or term IDs Filter by Portfolio Category
tag Empty Comma-separated slugs or term IDs Filter by Portfolio Tag
style Empty clean, editorial, immersive, or an enabled Elementor style Force one card style; empty uses item/global resolution
columns 3 16 Desktop columns
columns_tablet 2 14 Tablet columns
columns_mobile 1 12 Mobile columns
count 9 1100 or -1 Number of items; -1 returns all matches
posts_per_page Empty Same as count Compatibility alias for count
orderby date date, implementation_date, title, menu_order, rand, modified, ID Query ordering field
order DESC ASC / DESC Query direction
pagination false true / false Enable query-string pagination
page_var mpro_page Valid query-variable name Unique query parameter for pagination

Examples

Latest portfolio items

[mpro_portfolio count="9" style="clean" columns="3"]

Manual homepage selection

[mpro_portfolio ids="12,45,67" style="editorial" columns="3"]

The order of the supplied IDs is preserved.

Featured work

[mpro_portfolio featured="true" count="6" style="immersive" columns="2"]

Filter by category

[mpro_portfolio category="product-design" count="12"]

Filter by category and tags

[mpro_portfolio category="product-design" tag="saas,fintech" count="12"]

When both category and tag filters are present, they are combined with an AND relationship.

Order by implementation date

[mpro_portfolio orderby="implementation_date" order="DESC" count="12"]

Show all matching items

[mpro_portfolio category="case-study" count="-1"]

Enable pagination

[mpro_portfolio count="12" pagination="true" page_var="work_page"]

Use a unique page_var when multiple paginated grids appear on the same page.

Featured compatibility shortcode

[mpro_portfolio_featured]

Without explicit IDs, this displays six featured portfolio items.

Manual selection is also supported:

[mpro_portfolio_featured ids="12,45,67" style="editorial"]

Single card shortcode

[mpro_portfolio_single id="123" style="clean"]

Compatibility aliases

The following shortcode names are registered:

[mpro_portfolio]
[mpro_portfolio_grid]
[mpro_portfolio_featured]
[mpro_portfolio_single]

PHP Template Helpers

The plugin exposes public helper functions for themes and custom templates.

Return one card

$card = mpro_portfolio_get_card( 123, 'immersive' );
echo $card;

Print one card

mpro_portfolio_the_card( get_the_ID(), 'editorial' );

Return a grid

$grid = mpro_portfolio_get_grid(
    array(
        'category' => 'product-design',
        'style'    => 'clean',
        'columns'  => 3,
        'count'    => 9,
    )
);

echo $grid;

Print a manually curated grid

mpro_portfolio_the_grid(
    array(
        'ids'            => array( 12, 45, 67 ),
        'style'          => 'editorial',
        'columns'        => 3,
        'columns_tablet' => 2,
        'columns_mobile' => 1,
    )
);

Passing an empty card style allows the item/global style resolution to run. Passing item explicitly requests the per-item style and then falls back to the global default.


Elementor Integration

When Elementor is active, the plugin registers:

MPRO Portfolio → Portfolio Grid

The widget uses Elementor’s current widget registration hook:

elementor/widgets/register

Widget sources

  • Latest Portfolio
  • Manual Selection
  • Featured Portfolio

Read the full README on GitHub →

Releases

TagPublished
v1.1.0 Jul 1, 2026
v1.0.1 Jun 30, 2026

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.