Simple Portfolio custom post type for custom content. An easy drop-in solution – fast, simple, lightweight! Perfect for your favorite page builder. Fully translateable for multilingual WordPress installations.
- Contributors: David Decker, contributors
- Tags: portfolio, content, cpt, post type, custom
- Requires at least: 6.7
- Requires PHP: 7.4
- Stable tag: master
- Donate link: https://www.paypal.me/deckerweb
- License: GPL v2 or later
Support Project | Installation | Updates | Description | Features | Translations | Changelog | Plugin Scope / Disclaimer
If you find this project helpful, consider showing your support by buying me a coffee! Your contribution helps me keep developing and improving this plugin.
Enjoying the plugin? Feel free to treat me to a cup of coffee ☕🙂 through the following options:
- Download ZIP: portfolio-content.zip
- Upload via WordPress Plugins > Add New > Upload Plugin
- Once activated, you can see Portfolio admin menu – just add content
- Download .json: ddw-portfolio-content.code-snippets.json
- Activate or deactivate in your snippets plugin
This snippet version is for: Code Snippets (free & Pro), Advanced Scripts (Premium), Scripts Organizer (Premium)
➔ just use their elegant script import features
➔ in Scripts Organizer use the "Code Snippets Import"
For all other snippet manager plugins just use our plugin's main .php
file portfolio-content.php
and use its content as snippet (bevor saving your snippet: please check for your plugin if the opening <?php
tag needs to be removed or not!).
Also NOTE: When using the snippet version you have to re-save the Permalinks in WordPress after activating the code snippet!
➔ Please decide for one of both alternatives!
- WordPress: 6.7.2 / 6.8 Beta
- ClassicPress: 2.4.0 / 2.4.1
- PHP: 8.0 – 8.3
-
Alternative 1: Just download a new ZIP file (see above), upload and override existing version. Done.
-
Alternative 2: Use the (free) Git Updater plugin and get updates automatically.
-
Alternative 3: Upcoming! – In future I will built-in our own deckerweb updater. This is currently being worked on for my plugins. Stay tuned!
Just manually: Download the latest Snippet version (see above) and import it in your favorite snippets manager plugin. – You can delete the old snippet; then just activate the new one. Done.
The Portfolio CPT is defacto like "Posts" but just on its own.
A simple drop-in solution – fast, easy, lightweight!
The Post Type comes with two taxonomies registered as well, Portfolio Categories and Portfolio Tags.
This plugin is fully translateable by default so it works perfectly for multlingual installs - and multilingual plugins like Polylang.
The available filters allow you to tweak all registered arguments for the post type and its taxonomies. For example, you would also be able to change the slugs on a per language basis via filter functions that way.
- Simple post type - all that you know and would expect – slug:
portfolio-content
- Nothing extra – use custom field plugins like Meta Box, ACPT, ACF, JetEngine or Pods, please
- Gutenberg enabled by default (in post type parameters)
- Taxonomy: Portfolio Categories – slug:
portfolio-category
- Taxonomy: Portfolio Tags – slug:
portfolio-tag
- Filters for all 3 registrations available to tweak the arguments if needed
Manual Upload
- download current .zip archive from master branch here, URL: https://github.com/deckerweb/portfolio-content/archive/master.zip
- unzip the package, then rename the folder to
portfolio-content
, then upload renamed folder via FTP to your WordPress plugin directory - activate the plugin
Via "GitHub Updater" Plugin (recommended!)
- Install & activate the "GitHub Updater" plugin, get from here: https://github.com/afragen/github-updater
- Recommended: set your API Token in the plugin's settings
- Go to "Settings > GitHub Updater > Install Plugin"
- Paste the GitHub URL
https://github.com/deckerweb/portfolio-content
in the "Plugin URI" field (branch "master" is pre-set), then hit the "Install Plugin" button there - Install & activate the plugin
Updates
- Are done via the plugin "GitHub Updater" (see above) - leveraging the default WordPress update system!
- Setting your GitHub API Token is recommended! :)
- It's so easy and seamless you won't find any better solution for this ;-)
- Used textdomain:
portfolio-content
- Default
.pot
file included - German translations included (
de_DE
&de_DE_formal
) - Plugin's own path for translations:
wp-content/plugins/portfolio-content/languages/portfolio-content-de_DE.mo
- Recommended: Global WordPress lang dir path for translations:
wp-content/languages/plugins/portfolio-content-de_DE.mo
---> NOTE: if this file/path exists it will be loaded at higher priority than the plugin path! This is the recommended path & way to store your translations as it is update-safe and allows for custom translations! - Recommended translation tools: Poedit (free) OR Poedit Pro
- New: Confirmed full compatibility with ClassicPress 2.x
- Improved: Internal code & documentation improvements
- Updated
.pot
file, plus packaged German translations
- Bring back the plugin to a new life
- New: Transformed code into class-based approach (more future-proof)
- New: Flush permalink rewrite rules on plugin activation (and only then)
- New: Installable and updateable via Git Updater plugin
- Plugin: Add meta links on WP Plugins page
- Alternate install: Use "plugin" as Code Snippet version – now officially promoted here in Readme and with downloadable
.json
file - Updated
.pot
file, plus packaged German translations, now including newl10n.php
files!
- Everything's new 👍
- Initial public release on GitHub
This plugin comes as is.
Disclaimer 1: So far I will support the plugin for breaking errors to keep it working. Otherwise support will be very limited. Also, it will NEVER be released to WordPress.org Plugin Repository for a lot of reasons (ah, thanks, Matt!).
Disclaimer 2: All of the above might change. I do all this stuff only in my spare time.
Most of all: Have fun building great sites!!! ;-)
Icon used in promo graphics: © Tabler Icons by Paweł Kuna
Readme & Plugin Copyright: © 2019-2025, David Decker - DECKERWEB