NovaFolio v1.7.0
A minimal, high-performance portfolio WordPress theme built for creative professionals — photographers, designers, art directors and studios.
Requirements
| Component | Minimum | Recommended |
|---|---|---|
| WordPress | 6.4 | 6.7+ |
| PHP | 7.4 | 8.2+ |
| MySQL | 5.7 | 8.0+ |
| HTTPS | Required | Required |
| Memory limit | 64 MB | 256 MB |
| NovaFolio Core plugin | Required for blocks & portfolio CPT | — |
Installation
Upload the theme
Go to Appearance → Themes → Add New → Upload Theme. Select novafolio.zip and click Install Now. Then click Activate.
Install NovaFolio Core plugin
After activation, a notice will appear at the top of the admin. Click Install NovaFolio Core. Once installed, click Activate. This plugin provides Gutenberg blocks, the Portfolio custom post type, and REST endpoints.
Import demo content (optional)
Go to Tools → Import → WordPress. If the WordPress importer is not installed, click Install Now. Then choose demo/demo-content.xml from the theme folder and import.
Set the front page
Go to Settings → Reading. Set Your homepage displays to A static page, select Home as the homepage, and Blog as the posts page.
Assign menus
Go to Appearance → Menus. Assign the imported Primary Menu to the Primary Navigation location, and Footer Menu to the Footer Navigation location.
Import Demo Content
The file demo/demo-content.xml includes:
- 6 pages — Home, Portfolio, About, Services, Contact, Blog — each pre-assigned to the correct page template.
- 3 blog posts — Sample articles with categories (Photography, Design, Inspiration).
- 4 portfolio items — Horizon, Monolith, Synthesis, Paysage — with project metadata.
- 2 nav menus — Primary Menu and Footer Menu, linked to the correct pages.
After import, complete these steps
- Settings → Reading → Set Home as the static front page and Blog as the posts page.
- Appearance → Menus → Assign menus to locations.
- Appearance → Customize → Upload your logo and configure colors/fonts.
Customizer Guide
All theme settings live in Appearance → Customize. NovaFolio adds the following panels and sections:
- Site IdentityLogo, site title, tagline, site icon (favicon). Supports SVG logos.
- ColorsPrimary accent color, background, text, links. All exported as CSS variables.
- TypographyHeadings font, body font, sizes, weights, line-height. 1,400+ Google Fonts supported.
- HeaderHeader layout (centered / left / split), sticky behavior, header background color & transparency.
- FooterFooter background color, text color, border-top, footer credit text, widget columns layout (1–4).
- ButtonsButton border-radius, background, text color, hover state. Applied globally via CSS variables.
- PortfolioGrid columns (1–4), hover overlay style, lightbox on/off, image aspect-ratio.
- BlogArchive layout (grid / list), featured image display, excerpt length.
- WooCommerceProducts per row, catalog sort controls, cart icon in header.
wp_add_inline_style. This means your child theme can override them at will using standard CSS.
Design System
NovaFolio v1.7.0 introduces a token-driven Design System accessible via Appearance → Customize → Design System. All values are exported as CSS custom properties and propagate automatically to every block, template, and pattern.
Colors
A 12-color palette built on neutral tones + accent. All colors are defined as CSS variables (--nvf-accent, --nvf-surface, --nvf-ink, etc.) and mapped to WordPress block editor presets.
Typography
Configure body, headings and mono fonts (1,400+ Google Fonts). Fluid sizing uses clamp() for seamless scaling across breakpoints. Individual H1–H6 size, weight, line-height and letter-spacing controls.
Rhythm & Spacing
Choose between Compact, Standard and Airy spacing presets. These set the base spacing unit used by blocks and the layout system.
Shapes & Shadows
Border radius presets (Sharp / Soft / Rounded) and shadow intensity (Soft / Medium / Strong) applied globally.
var(--nvf-accent) to reference the accent color or var(--nvf-radius) for the border radius.
Header Variants
NovaFolio provides three distinct header layouts, configurable in Customize → Header & Navigation → Header.
| Variant | Description | Best for |
|---|---|---|
| Classic | Logo on the left, navigation centered or right-aligned, action icons (search, cart, dark mode) on the right. | Most sites. Professional, clean. |
| Center Logo | Logo centered absolutely. Navigation and action icons balanced on each side. | Brand-focused sites, agencies. |
| Hamburger | Full-width header with logo + burger icon. Clicking opens a fullscreen navigation overlay with large typography. | Minimalist portfolios, photography. |
Sticky header
Enable via Customize → Header → Sticky Header. The header shrinks slightly and gains a background on scroll. All three variants support sticky mode.
Transparent header
Set the header background to transparent in the Customizer. Useful for hero sections where the header overlays the content.
Dark Mode
NovaFolio includes a complete dark mode implementation:
- Auto-detection: Respects
prefers-color-scheme: darkby default. - Manual toggle: A moon/sun icon in the header lets visitors switch. Their preference is stored in
localStorage. - Token remapping: All 12 color tokens are remapped in dark mode. No layout changes — only colors flip.
Enable or disable the dark mode toggle in Customize → General → Dark Mode.
css/dark-mode.css. To customize, override the CSS variables in your child theme when [data-theme="dark"] is active.
Page Templates
Assign a template when editing a page via the Page Attributes → Template dropdown.
| Template name | File | Best used for |
|---|---|---|
| Default | page.php | Standard content pages |
| Blank Page | blank.php | Landing pages with no header/footer |
| NovaFolio – Homepage | page-templates/page-homepage.php | Homepage with hero + portfolio preview. Blocks go edge-to-edge. |
| NovaFolio – Portfolio (Archive) | page-templates/page-portfolio-archive.php | Portfolio list page with category filter |
| NovaFolio – Bio / About | page-templates/page-bio.php | Tabbed artist page: biography, CV, awards, news |
Gutenberg Blocks
The NovaFolio Core plugin registers these custom blocks, available in the Block Inserter under the NovaFolio category:
Portfolio
Portfolio items are a custom post type registered by NovaFolio Core. They appear under Portfolio in the WordPress admin sidebar.
Creating a portfolio item
- Go to Portfolio → Add New.
- Set a title and featured image (this is the thumbnail shown in the grid).
- Add content using the block editor — use
nvf/gallery-g2for image galleries. - Fill in the Project Details meta box: Client, Year, Role, URL.
- Assign it to a Portfolio Category for the filter to work.
- Publish. It will automatically appear on the Portfolio archive page.
Portfolio grid settings
Configure columns, hover style, lightbox and aspect ratio in Appearance → Customize → Portfolio. You can also override these settings per-block in the nvf/portfolio-grid block inspector panel.
Blog
The blog uses standard WordPress posts. Create and manage them via Posts → Add New. NovaFolio provides:
- Grid and list archive layouts (configurable in Customizer → Blog).
- Featured image display control.
- Category and tag archive templates.
- Author archive with bio display.
- Single post with related posts sidebar.
Animations & Transitions
NovaFolio offers scroll-triggered animations and page transitions — all respecting the prefers-reduced-motion preference.
Scroll animations
Add the data-nvf-anim attribute to any element to trigger an entrance animation when it scrolls into view:
| Value | Effect |
|---|---|
fade-up | Fade in + move upward |
fade-down | Fade in + move downward |
fade-left / fade-right | Horizontal fade |
scale-in | Zoom-in effect |
clip-reveal | CSS clip-path reveal |
text-reveal | Word-by-word reveal |
<div data-nvf-anim="fade-up">This content fades in on scroll.</div>
Page transitions
Enable in Customize → General → Page Transitions. Three styles: Fade, Slide Up, Wipe. Duration and color are customizable.
Parallax
Optional parallax scrolling on hero images. Controlled per-block or globally.
prefers-reduced-motion: reduce set in their OS preferences.
WooCommerce
NovaFolio has built-in WooCommerce compatibility. To enable it:
- Install and activate WooCommerce (free, from the plugin repository).
- Run the WooCommerce setup wizard to configure currency, shipping, and payment.
- NovaFolio will automatically apply its shop styles to product pages, archives, the cart and checkout.
WooCommerce Customizer options
- Products per row — 2, 3 or 4 columns.
- Cart icon in header — shows a mini cart icon with item count.
- Shop sidebar — show/hide the widget sidebar on shop pages.
Child Theme
A ready-made child theme is included at novafolio-child/ inside the theme package. Using a child theme is recommended if you plan to make CSS or PHP customizations — it ensures your changes survive theme updates.
Activating the child theme
- Upload the
novafolio-child/folder towp-content/themes/. - Go to Appearance → Themes and activate NovaFolio Child.
Customizing CSS
Add your CSS overrides to novafolio-child/style.css. The child theme automatically enqueues the parent stylesheet first, so your rules always take precedence.
/* novafolio-child/style.css */
/* Example: override accent color */
:root {
--nvf-accent: #ff4455;
}
/* Example: change heading font size */
h1, h2, h3 {
letter-spacing: -0.5px;
}
Adding PHP functions
Add custom PHP to novafolio-child/functions.php:
<?php
// Remove the breadcrumb from all pages
add_filter( 'novafolio_show_breadcrumb', '__return_false' );
// Add a custom widget area
add_action( 'widgets_init', function() {
register_sidebar( [
'name' => 'My Custom Sidebar',
'id' => 'my-sidebar',
] );
} );
License & Updates
Activating your license
- Go to NovaFolio → License in the WordPress admin.
- Enter your Envato/ThemeForest purchase code (format:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). - Click Activate License.
Once activated, automatic updates will appear in Dashboard → Updates whenever a new version is released.
Finding your purchase code
- Log in to your ThemeForest account.
- Go to Downloads.
- Click Download → License certificate & purchase code next to NovaFolio.
- Open the text file and copy the Item Purchase Code.
Manual updates
If automatic updates are not available, download the latest novafolio.zip from ThemeForest and upload it via Appearance → Themes → Add New → Upload Theme. WordPress will replace the existing installation.
Frequently Asked Questions
Can I use this theme without the NovaFolio Core plugin?
The theme's visual layout, Customizer, and templates work without the plugin. However, the Portfolio custom post type, Gutenberg blocks (hero, gallery, services, etc.) and the portfolio grid block require the plugin. We recommend installing it for the intended experience.
Does the theme work with Elementor?
Yes. NovaFolio includes a minimal Elementor compatibility stylesheet (elementor-compat.css) that is conditionally loaded only on Elementor pages and the preview editor. Core theme layouts and Customizer settings are not affected by Elementor.
Can I use Google Fonts offline / self-hosted?
Yes. The Customizer lists Google Fonts for selection. To self-host, you can use a plugin like OMGF | Host Google Fonts Locally or manually download and enqueue the fonts via your child theme. The theme does not load Google Fonts itself — they are only loaded when you select one in the Customizer.
How do I update the theme without losing customizations?
Use the child theme for all customizations (CSS and PHP). Theme option changes are stored in the Customizer database, so they persist across updates. Only file-level edits to parent theme files would be lost — which is why the child theme exists.
How do I translate the theme?
NovaFolio is fully internationalized. All strings use the novafolio text domain. Translation files go in the languages/ folder. To translate, use Poedit with the provided novafolio.pot template and save your .po and .mo files as e.g. novafolio-fr_FR.po. Alternatively, install the Loco Translate plugin.
Does NovaFolio support WPML or Polylang?
Yes. NovaFolio includes a Polylang bridge in plugins/class-polylang.php. WPML is supported via standard WordPress internationalization practices. Both plugins work with the Portfolio CPT and all theme menus.
Where are the portfolio images stored after demo import?
The demo XML does not include actual images. It creates the post structure; you need to add featured images manually after import. This is standard ThemeForest practice to respect image licensing.
How do I enable dark mode?
Go to Appearance → Customize → General → Dark Mode and enable the toggle. A moon/sun icon will appear in the header. The theme also auto-detects the user's OS preference.
How many header layouts are available?
Three: Classic (logo left, nav center/right), Center Logo (logo centered), and Hamburger (fullscreen overlay menu). Configure in Customize → Header.
What are CSS tokens / Design System variables?
NovaFolio uses CSS custom properties (variables) for all design decisions — colors, fonts, spacing, radii, shadows. When you change a value in the Customizer, it updates everywhere automatically. You can also use them in your child theme CSS: var(--nvf-accent), var(--nvf-radius), etc.
How do I add scroll animations to my content?
Add data-nvf-anim="fade-up" (or scale-in, clip-reveal, etc.) to any HTML element. The animation triggers automatically when the element scrolls into the viewport. All animations respect prefers-reduced-motion.
Can I sell products with this theme?
Yes. Install the free WooCommerce plugin. NovaFolio includes built-in shop styles, AJAX mini-cart, quick view modal, and Customizer settings for products per row, image ratio, and cart icon style.
Support
Support is provided exclusively through the Envato ThemeForest item comments section and the dedicated support forum.
What is covered
- Bugs in the theme code as originally designed.
- Help configuring built-in features and Customizer options.
- Guidance for standard demo setup.
What is not covered
- Custom CSS / PHP modifications.
- Third-party plugin conflicts (unless caused by theme code).
- Server configuration and hosting issues.
Changelog
- Add Schema.org CreativeWork structured data for portfolio single pages
- Add Bio / About page template with tabbed layout (CV, Awards, News)
- Add Social sharing links (Facebook, X, LinkedIn, Pinterest) on portfolio single
- Add Homepage page template for edge-to-edge block layouts
- Add Customizer toggles for social sharing, related projects, testimonials
- Add theme.json block styles: group, cover, columns, separator presets
- Imp Google Fonts: plugin blocks now delegate to theme collector — single request for all fonts
- Imp Button styles: editor values (font-size, border-radius, colors) now render correctly on frontend
- Imp i18n: all pattern inline text wrapped in translation functions, POT files regenerated
- Imp Keyboard navigation for Classic Slider (Arrow Left/Right)
- Fix Demo XML template paths corrected to match actual files
- Fix About Bio pattern image path (was returning 404)
- Fix Hero Slider pattern visibility (was hidden from inserter)
- Fix Hero block 22px margin gap removed
- Fix CSS variable serialization bug in Customizer output
- Add WooCommerce Quick View, AJAX mini-cart, cart icon header
- Add Back to top button, social links footer, lightbox gallery
- Add License activation system, child theme packaging
- Imp Singleton protection, admin scripts scoped to relevant pages
- Imp Color attributes now support WP preset colors & CSS vars
- Imp Share label translatable, guide page fully i18n-ready
- Fix WooCommerce multisite detection, NVF_CORE_DIR constant
- Fix Escaping, ABSPATH guards, dead code removal
- Add 3 new block patterns: CTA Fullwidth, Contact Simple, FAQ Accordion
- Add RTL support via rtlcss for all CSS files
- Add Performance hooks: preconnect, DNS prefetch, async/defer scripts
- Add PostCSS/cssnano pipeline, esbuild JS bundling
- Add Theme dashboard with activation redirect and system info
- Add 8 SVG demo placeholders, enriched demo content XML
- Imp All 11 blocks migrated to directory-based
block.jsonregistration - Imp Customizer audit: 374 settings verified, 8 bugs fixed
- Imp jQuery removed from header.js — full Vanilla JS rewrite
- Imp Google Fonts requests merged for performance
- Imp Architecture:
functions.phpsplit intoinc/hooks/modules - Fix CF7 and OCDI integrations restored
- Fix All French strings translated to English,
.potfiles regenerated
- Add Native companion plugin recommendation notice (replaces TGM dependency)
- Add Block patterns: Hero Landing, Portfolio Showcase, Services Three Columns
- Add Child theme starter files included (
novafolio-child/) - Add Demo content XML (
demo/demo-content.xml) - Add WooCommerce: cart icon in header, products-per-row Customizer setting
- Imp All function names consistently prefixed
novafolio_— eliminates legacynova_andswm_prefixes - Imp Customizer: token bridge for footer colors and button styles via CSS variables
- Imp Plugin blocks: PHPCS escape output annotations with safe-by-construction explanations
- Fix Header:
$nova_logovariable replaced; preloader/scrollbar theme_mod keys corrected - Fix
uninstall.php: addedflush_rewrite_rules()and content policy comment - Fix Sidebar IDs renamed from
swm-footer-*tonvf-footer-*
- Add Initial release
- Add Portfolio CPT with category filter
- Add 9 Gutenberg blocks via NovaFolio Core plugin (Hero, Hero Slider, Portfolio Grid, Gallery, Services, Contact, FAQ, Section, Columns)
- Add Full Customizer with typography, colors, header, footer, portfolio settings
- Add WooCommerce support
- Add Polylang integration
- Add 3 page templates