15-task plan with TDD-style steps, WP PHPUnit tests, and a provider-interface architecture. Tasks cover scaffolding, both adapters, factory, settings, metabox, template, REST, download redirect, version bump, README, translations, and final smoke testing.
Projects Portfolio
Create a beautifully structured, developer-first showcase directory for your WordPress® plugins, themes, and patterns - powered by GitHub.
What It Does
Projects Portfolio adds a custom post type (projects) and taxonomy (project-type) to your WordPress® admin, allowing you to:
- Add plugins, themes, or patterns as projects.
- Connect each project to a GitHub repository.
- Automatically fetch and display data like:
- Latest version
- Stars, forks, issues
- License and language
- Download counts
- Create a public download URL:
/download/ID/ - Track and sort download metrics
- Render archive and single views with theme fallbacks or built-in templates
- Customize display settings via a clean settings page
- Provide social sharing buttons using Tabler Icons
- Use built-in REST API endpoints for listing and querying project data
Installation
From GitHub
- Download the latest ZIP from the GitHub Releases page.
- Go to your WordPress® Dashboard → Plugins → Add New → Upload Plugin.
- Upload the ZIP and activate the plugin.
From keithsolomon.net
- Visit the official plugin page: Projects Portfolio.
- Download the ZIP.
- Install it via the WordPress® dashboard like above.
Usage
Add a New Project
- In the WordPress® admin, go to Projects → Add New.
- Add your project title, description, and featured image.
- Select a Project Type: Plugin, Theme, or Pattern.
- In the sidebar, paste the GitHub Repository URL (e.g.,
https://github.com/username/repo). - Publish.
Enable Download Link
Each project automatically gets a unique download endpoint:
Example:
https://example.com/download/123
This URL fetches the latest .zip release from GitHub and increments the download count.
Settings Overview
Navigate to Projects → Settings to configure:
General Settings
- GitHub API Token – Recommended for authenticated requests (avoids GitHub rate limits).
- Telemetry – Toggle to help improve the plugin.
Templates Settings
Enable/disable the following GitHub data in your project views:
- Version
- Last Updated
- License
- Language
- Downloads
- Stars / Forks / Issues
- GitHub Owner
Archive Settings
Toggle components for the project archive view:
- Archive Title
- Project Title
- Project Excerpt
- Project Buttons
Connect Your GitHub Repo
To connect a project to GitHub:
- Paste the full repo URL into the GitHub URL field when editing a Project.
- Make sure your GitHub repo has a release with a
.zipasset or a validzipball_url.
Optional: Add a GitHub API Token
To avoid hitting rate limits or improve reliability:
- Go to GitHub → Settings → Developer Settings → Personal Access Tokens.
- Generate a token (no scopes required).
- Paste it into the settings screen under GitHub API Token.
How to Zip the Plugin for GitHub Releases
When attaching the plugin to a GitHub release:
- Zip only the contents of the plugin folder, not the parent folder.
- Ensure
projects-portfolio.phpand/includes,/admin,/templates,/assetsare at the root level of the ZIP. - Name the ZIP clearly (e.g.
projects-portfolio-1.0.0.zip). - Go to your GitHub repo → Releases → New Release.
- Tag the release with the version number (e.g.,
1.0.0). - Upload your correctly structured ZIP as a release asset.
Your users will be redirected to this file when they use the /download/ endpoint.
REST API Endpoints
All Projects
GET /wp-json/projects/v1/projects
Supports optional query params:
pageper_page
Popular Projects
GET /wp-json/projects/v1/popular
Returns the most downloaded projects.
Template Integration
You can override the plugin templates in your theme:
single-projects.phparchive-projects.phptaxonomy-project-type.php
Just copy the templates from the plugin's /templates/ folder into your theme's root and customize.
Social Sharing Buttons
Each project includes social sharing links for:
- Twitter/X
Developer Notes
- All public-facing code is translation-ready.
- Full support for Full Site Editing (FSE) and Classic themes.
- REST API ready and easily extendable.
- Clean separation of concerns: CPT/taxonomy, settings, metaboxes, API, styling.
Support & Contributions
Have a feature request or bug report? Open an issue on GitHub or contribute via pull request.
License
Projects for WordPress® is licensed under the GNU GPL v2+.
Author
Built and maintained by Robert DeVore.
Follow on Twitter or sponsor development on GitHub Sponsors.