When they search, make sure they find you!

ID Plugin Portfolio

Showcase your WordPress plugins for sale with a beautiful grid layout, detail pages, screenshot galleries, and badge support.

v1.3.0 $39/yr

Requirements

WordPress 5.0+
PHP 7.2+
Tested Up To 6.9

Changelog

# Changelog

All notable changes to ID Plugin Portfolio will be documented in this file.

## [1.3.0] - 2026-02-15

### Added
- Self-hosted plugin downloads via ZIP file upload (`_idpp_plugin_zip` meta field)
- `IDPP_Zip_Parser` class for extracting metadata from uploaded plugin ZIPs
- `IDPP_Download` class with rewrite endpoint (`idpp-download/{id}`) and REST route (`idpp/v1/download/{id}`)
- Automatic metadata sync from ZIP: version, tagline, changelog, requirements (WP, PHP, tested up to)
- "Plugin File" meta box with media uploader (filtered to ZIP), file info display, and AJAX parse
- "Pro Version" meta box with has_pro toggle, pro price, and pro-only features fields
- Free vs Pro comparison table on single plugin page when pro is enabled
- Download button with version label, file size, and download count on single plugin page
- "Synced from ZIP" badge indicators on auto-populated admin fields
- "Pro Available" badge on plugin cards (archive and shortcode)
- Download icon link on plugin cards (archive and shortcode)
- Download count tracking (`_idpp_download_count` meta field)
- `wp_localize_script` for AJAX nonce and URL in admin

## [1.2.1] - 2026-02-15

### Added
- IDVE (Insight Dezign Visual Editor) block integration
- WPBakery Page Builder element integration

## [1.2.0] - 2026-02-14

### Fixed
- Added sanitization callbacks to all `register_setting()` calls
- Added `wp_unslash()` to all `$_POST` data processing in `save_meta()`
- Escaped `$description` output with `wp_kses_post()` in archive template
- Escaped `$hero_image` output with `wp_kses_post()` in single template
- Added `phpcs:disable` annotations for template and uninstall variable prefixing
- Added `phpcs:ignore` for `tax_query` and direct DB query in uninstall

### Removed
- External Font Awesome CDN dependency (icon `` tags removed from single template)
- Deprecated `load_plugin_textdomain()` call (handled automatically since WP 4.6)

### Changed
- Freemius checkout script version changed from `null` to `'1.0.0'`
- Updated `Tested up to` from 6.4 to 6.9

## [1.1.0] - 2026-02-14

### Added
- Category filter pills on archive page for client-side filtering by plugin category
- `data-categories` attribute on plugin cards for filter matching
- No-results message when filter yields zero matches
- JavaScript and CSS enqueued on archive and taxonomy pages

### Changed
- Archive query loads all plugins (no pagination) to support client-side filtering

## [1.0.0] - 2026-02-12

### Added
- Custom post type `id_plugin` for managing plugins
- `plugin_category` taxonomy for organization
- Six meta boxes: Plugin Details, Plugin Links, Requirements, Key Features, Changelog, Screenshot Gallery
- `[id_plugins]` shortcode with grid layout and customizable attributes
- Single plugin detail template with hero, description, features, requirements, screenshots, and changelog sections
- Screenshot gallery with vanilla JS lightbox (keyboard navigation, arrow keys, escape to close)
- Badge support: New, Popular, Sale
- Responsive CSS grid layout (3 columns → 2 at 991px → 1 at 575px)
- Settings page for global defaults (columns, gap, visibility toggles, button text)
- WordPress media uploader integration for screenshot gallery management
- Drag-and-drop reordering for gallery screenshots
- Full internationalization support
- GPL v2 license