Three custom post types (project, testimonial, faq_item) drive dynamic displays of projects, testimonials, and FAQs
asadazam-portfolio-theme — WordPress Portfolio Template
By asadazam-dev
A WordPress portfolio theme written from scratch, using custom post types and ACF fields defined in PHP to drive projects, testimonials, and FAQ displays. The demo site is kreativehive.net/portfolio.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
ACF field groups are defined in PHP and version-controlled, so fields automatically appear when deployed to a new environment
functions.php only bootstraps, with features split into inc/ modules and template-parts/ block components
Light and dark themes switch via a data-theme attribute and CSS variables, with state persisted in localStorage
The README documents performance measures such as asynchronous fonts, script defer, and trimmed head output (author's own statements, not independently verified)
Template Details
This is a WordPress portfolio theme written from scratch without relying on page builders or starter frameworks. It serves both as the author's personal portfolio site (kreativehive.net/portfolio) and as a public code example. Dynamic content is supported by three custom post types: project (portfolio cards with a project_category taxonomy), testimonial (client testimonials), and faq_item (FAQ entries), all registered in inc/cpt.php with REST support, and default project categories are automatically written when the theme is activated. ACF field groups are written in PHP files (inc/acf-fields.php) rather than the database, covering project fields, testimonial fields, and a site options page, making them easy to version control and deploy across environments. Templates follow the WordPress template hierarchy, functions.php only bootstraps, and each feature is split into modules under inc/ and block components under template-parts/. The theme includes light and dark color schemes, switched via a data-theme attribute on html, with state stored in localStorage and first visits referencing prefers-color-scheme. Performance measures listed in the README include asynchronously loading Google Fonts, deferring scripts, trimming head output, removing emoji scripts, and using filemtime() for cache busting in development environments; these are the author's own statements and were not independently verified in this material. Before use, note: the theme depends on the Advanced Custom Fields plugin (the free version is sufficient). The README recommends WordPress 6.0+ and PHP 8.0+, but please refer to the repository's current documentation for specific version requirements. The code is MIT licensed and may be freely used, modified, and distributed; third-party assets such as images, fonts, and icons in the demo need separate license verification.
Is it right for your project?
Use Cases
- Building a personal portfolio or freelancer showcase site centered on project cards
- Teams that need to include ACF field definitions in Git and deploy WordPress sites across environments
- As reference code for learning custom post types, template hierarchy, and modular theme structure
Suitable For
- Developers familiar with WordPress theme structure who can configure ACF fields and admin options themselves
- Those who want to maintain a single-page portfolio using pure CSS/JS without a build step
- Projects that need theme code freely modifiable and distributable under the MIT license
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Place the theme folder in /wp-content/themes/, install and activate the Advanced Custom Fields plugin, then activate the theme
- 2
When the theme is activated, CPTs and default project categories are automatically written; then add projects, testimonials, and FAQ entries in the admin
- 3
Configure hero copy and contact information in Portfolio Settings in the admin, and decide how the homepage displays under Settings → Reading
- 4
The README recommends WordPress 6.0+ and PHP 8.0+; refer to the repository's current documentation for actual environment requirements
- 5
Third-party assets such as demo images, fonts, and icons must be verified under their respective licenses and are not covered by the code's MIT license
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- The theme depends on the Advanced Custom Fields plugin to work properly; you must install and activate it yourself (the free version is sufficient).
- The runtime environment requires WordPress 6.0 or higher and PHP 8.0 or higher; lower versions may not work properly.
- The README recommends plugins such as Rank Math SEO or Yoast; these are optional recommendations, not mandatory requirements.
- For reliable email sending, the README recommends additionally installing the WP Mail SMTP plugin, which involves third-party service configuration.
- The README recommends using caching plugins (such as WP Rocket, LiteSpeed) to optimize performance; some are paid plugins.
- Demo images, fonts, icons, and other third-party assets must be verified under their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domain, hosting, database, payment, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Advanced Custom Fields plugin (free version is enough)
Original README
WordPress 6.0+ - PHP 8.0+
Original README
Rank Math SEO (or Yoast)
Original README
WP Mail SMTP (reliable email delivery)
Original README
https://github.com/asadazam-dev/asadazam-portfolio-theme/blob/main/LICENSEhttps://github.com/asadazam-dev/asadazam-portfolio-theme/blob/main/README.mdA caching plugin (WP Rocket, LiteSpeed, etc.)
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-04. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 80 / 100
- Technologies
- WordPress
- Website type
- Portfolio
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-05-15
- Screenshot last checked
- 2026-10-04
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies WordPress as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-04
Inspect the recorded source material
SHA-256: e5515b73fef1108ebdf0f190ce50bbe8ff1be2b7dc4c48fb280b952c1ee7d788
2026-10-04T02:44:40.461Z
Source file / repository# Asad Azam Portfolio Theme
A custom WordPress theme built from scratch. No page builders, no starter frameworks, no shortcuts.
🌐 **Live site:** [kreativehive.net/portfolio](https://kreativehive.net/portfolio/)
👤 **Author:** Asad Azam — Senior WordPress Developer & WooCommerce Specialist
📍 **Based in:** Karachi, Pakistan
💼 **Status:** Open to senior full-time roles (remote & on-site) and select freelance WooCommerce projects
---
## What this is
This is both my portfolio *and* a public code sample. Every section of the live portfolio is also a worked example of something I do for clients:
- Custom Post Types & taxonomies (work grid, testimonials, FAQ)
- ACF field groups registered in PHP (version-controlled, deploy-friendly)
- ACF Options page for global site settings
- Modular template parts following the WordPress template hierarchy
- Properly enqueued assets with cache-busting via `filemtime()` in dev
- Performance baseline: 96 PageSpeed desktop, 85+ mobile (Core Web Vitals: TBT 0, CLS 0)
- Light/dark theme with localStorage persistence
- Async-loaded Google Fonts (non-render-blocking)
- Accessibility-first: semantic HTML, ARIA labels, keyboard navigation
If you're evaluating my work for a senior WordPress role, the source of this theme is the proof.
---
## Architecture
```
asadazam-portfolio-theme/
├── style.css Theme metadata header (intentionally minimal)
├── functions.php Bootstrap — loads modular includes
├── front-page.php Single-page orchestrator
├── index.php Fallback template
├── header.php <head>, status bar, sticky nav
├── footer.php Footer + floating WhatsApp + closing tags
├── 404.php Branded 404 page
├── readme.md Internal dev-focused docs
│
├── inc/
│ ├── theme-setup.php add_theme_support, menus, image sizes
│ ├── enqueue.php CSS/JS loading + performance hooks
│ ├── cpt.php 3 CPTs + 1 taxonomy + activation seeders
│ ├── acf-fields.php ACF field groups defined in PHP
│ └── helpers.php asadazam_field(), asadazam_option(), URL helpers
│
├── template-parts/ Modular section components
│ ├── hero.php Hero with animated dashboard graphic
│ ├── marquee.php Skill scroller
│ ├── now.php "Currently working on" cards (ACF Options)
│ ├── stats.php Animated counter cards
│ ├── about.php Personal copy
│ ├── work-grid.php ⭐ Dynamic — pulls from project CPT
│ ├── capabilities.php Expertise cards
│ ├── testimonials.php ⭐ Dynamic — pulls from testimonial CPT
│ ├── process.php How I work — 4 steps
│ ├── faq.php ⭐ Dynamic — pulls from faq_item CPT
│ └── contact.php CTA + contact channels (ACF Options)
│
└── assets/
├── css/main.css Minified production CSS (~38KB)
└── js/main.js Minified production JS (~4KB)
```
---
## Custom Post Types
Three CPTs power the dynamic portions of the portfolio:
| CPT | Purpose | Taxonomy |
| ------------- | -------------------------------- | ------------------- |
| `project` | Portfolio work cards | `project_category` |
| `testimonial` | Client quotes | none |
| `faq_item` | FAQ accordion entries | none |
Each is registered in `inc/cpt.php` with proper labels, capabilities, and REST support (so they work in the Gutenberg editor and the WP REST API). Default project categories are seeded automatically on theme activation: *Custom Themes*, *WooCommerce*, *Service Sites*.
---
## ACF Field Groups (defined in PHP)
Defining ACF field groups in PHP (instead of only in the database) is a senior pattern that:
- Keeps field definitions in version control
- Makes it easy to deploy field changes across environments
- Prevents the "works on my machine, breaks in production" problem
See `inc/acf-fields.php` for the implementation. Field groups cover:
- **Project fields** — URL, color skin, brand chip, metric chip, project number, tags
- **Testimonial fields** — role, initials, featured boolean
- **Site Options** — hero copy, "now" cards repeater, contact info
---
## Performance Optimizations
Real techniques implemented in this theme, with measurable impact on Lighthouse scores:
- **Async Google Fonts** — non-blocking `<link rel="preload">` swap pattern saves ~1,700ms render-blocking time
- **Deferred JavaScript** — `<script defer>` so JS never blocks LCP
- **Minified production CSS/JS** — 28% size reduction
- **Removed emoji scripts** — saves ~16KB on every page load
- **Cleaned `<head>` output** — stripped `wp_generator`, `rsd_link`, `wlwmanifest_link`, etc.
- **Font preconnect** in header.php to warm up DNS/TLS before request
- **Cache-busting** via `filemtime()` in dev mode, version constant in production
- **Progressive enhancement** for animated counters — render correct values even if JS fails
Result: **PageSpeed 96 desktop, 85+ mobile** with Core Web Vitals all green (TBT 0ms, CLS 0).
---
## Setup (if you want to run it locally)
### Requirements
- WordPress 6.0+
- PHP 8.0+
- Advanced Custom Fields plugin (free version is enough)
### Install
1. Copy the theme folder to `/wp-content/themes/`
2. Install & activate Advanced Custom Fields
3. Activate this theme — CPTs and default categories are seeded automatically
4. **Settings → Reading** → set "Your homepage displays" to your preference
5. Visit **Portfolio Settings** in the admin sidebar to configure hero copy and contact info
6. Add projects, testimonials, FAQ items via their respective admin menus
### Recommended Plugins
- Advanced Custom Fields (required)
- Rank Math SEO (or Yoast)
- WP Mail SMTP (reliable email delivery)
- A caching plugin (WP Rocket, LiteSpeed, etc.)
---
## Theme System
Light/dark theme controlled by `[data-theme="dark"|"light"]` on `<html>`. Toggle button is in the nav. State persists in `localStorage` (key: `asad-portfolio-theme`). First-visit default respects `prefers-color-scheme`, falls back to dark.
CSS variables organize into a shared accent system + per-theme tokens. Adding a new theme is a matter of adding a `[data-theme="newtheme"]` block.
---
## Decisions Worth Calling Out
A few choices in this theme that I'd defend in a code review:
1. **No build step.** Plain CSS, plain JS. Senior WordPress devs know that adding webpack/vite to a theme for a single-page site is over-engineering. If the theme needed React components or TypeScript, the build cost would be justified. For this scope, it isn't.
2. **ACF fields in PHP, not the database.** Field group exports work, but PHP definitions live in git. When you deploy this theme to a new environment, fields just appear. No manual import step.
3. **Modular includes, thin functions.php.** Most theme `functions.php` files are 800+ lines of mixed concerns. Mine is 30 lines that loads focused module files. Each module has one job.
4. **Repeater fields replaced with flat individual fields** for tag chips. Repeaters are ACF Pro on some installations and have known rendering issues. Flat fields work everywhere, are easier to query, and are migration-safe.
5. **Progressive enhancement for counters.** Stat numbers render the target value as static HTML. JavaScript animates them when the user scrolls in — but if JS never loads, the numbers are still correct. Most portfolio themes show "0+" if JS fails. This one doesn't.
---
## License
[MIT](LICENSE) — use, fork, modify freely.
---
## Get in touch
- **Email:** [email protected]
- **WhatsApp:** +92 301 5651810
- **LinkedIn:** [in/asad-azam-518a5a236](https://linkedin.com/in/asad-azam-518a5a236/)
- **Portfolio:** [kreativehive.net/portfolio](https://kreativehive.net/portfolio/)
---
*Built by Asad Azam in Karachi, Pakistan. Open to senior WordPress full-time roles and select freelance WooCommerce projects.*
Explore similar templates
Compare previews and descriptions within the same stack and category.

joshuatz-wp-theme
A custom WordPress portfolio theme used by joshuatz.com, open-sourced under the MIT license.
WordPress · Portfolio

c2x
c2x is a lightweight WordPress portfolio theme released by codenrx under the MIT license, intended for showcasing individuals and projects. The repository includes a theme screenshot preview but does not document page structure, customization options, or compatibility.
WordPress · Portfolio

Stratify-WP-Theme
Stratify is a WordPress portfolio theme for digital agencies, designers, and creative professionals, used to showcase work and brand identity. It provides modern layouts for digital brands and a filterable portfolio gallery for browsing work by category.
WordPress · Portfolio

Block-Theme-Portfolio
A personal portfolio example that pairs a WordPress block theme as the content backend with a Preact single-page application frontend, connected via the WordPress REST API.
WordPress · Portfolio

nexgen-tech-wp-theme
NEXGEN Tech is a dark WordPress theme for software agencies, digital studios, and tech startups.
WordPress · Portfolio

al-folio
A Jekyll academic homepage theme for scholars and researchers, with a clean responsive design and out-of-the-box support for publication lists, project showcases, CVs, and blogs.
Jekyll · Portfolio
