NovaFolio v1.7.0

A minimal, high-performance portfolio WordPress theme built for creative professionals — photographers, designers, art directors and studios.

Quick start: Install the theme → Install the NovaFolio Core companion plugin → Import demo content → Customize in the Customizer. Done.

Requirements

ComponentMinimumRecommended
WordPress6.46.7+
PHP7.48.2+
MySQL5.78.0+
HTTPSRequiredRequired
Memory limit64 MB256 MB
NovaFolio Core pluginRequired 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.
Images: Demo images are not included in the XML for licensing reasons. Placeholder image sources are used. Replace them with your own photography after import.

After import, complete these steps

  1. Settings → Reading → Set Home as the static front page and Blog as the posts page.
  2. Appearance → Menus → Assign menus to locations.
  3. 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.
All Customizer values are output as CSS custom properties (variables) via 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.

Tip: All Design System tokens are available as CSS variables in your child theme. For example, use 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.

VariantDescriptionBest for
ClassicLogo on the left, navigation centered or right-aligned, action icons (search, cart, dark mode) on the right.Most sites. Professional, clean.
Center LogoLogo centered absolutely. Navigation and action icons balanced on each side.Brand-focused sites, agencies.
HamburgerFull-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: dark by 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.

Dark mode colors are defined in 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 nameFileBest used for
Defaultpage.phpStandard content pages
Blank Pageblank.phpLanding pages with no header/footer
NovaFolio – Homepagepage-templates/page-homepage.phpHomepage with hero + portfolio preview. Blocks go edge-to-edge.
NovaFolio – Portfolio (Archive)page-templates/page-portfolio-archive.phpPortfolio list page with category filter
NovaFolio – Bio / Aboutpage-templates/page-bio.phpTabbed 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:

nvf/heroFull-screen or split hero section with title, subtitle and CTA button.
nvf/hero-sliderMulti-slide hero carousel with per-slide backgrounds and typography controls.
nvf/portfolio-gridResponsive portfolio grid with optional category filter bar.
nvf/gallery-g2Masonry-style image gallery with built-in lightbox.
nvf/services3-column services grid with icon, title and description per item.
nvf/contactContact form with configurable fields (requires Contact Form 7 or native).
nvf/faqAccordion FAQ block with accessible expand/collapse.
nvf/sectionFull-width colored section wrapper block for layout structure.
nvf/columnsCustomizable column block with gutter and responsive breakpoint controls.
nvf/ctaCall-to-action block with heading, subtitle, button and background options.
nvf/images-sliderResponsive image carousel with autoplay, navigation arrows and dots.
nvf/blog-postsDynamic blog posts grid — choose columns, categories and post count.
nvf/counterAnimated number counter for statistics and key figures.
nvf/testimonialsClient testimonials with avatar, name, role and quote.
nvf/logo-barClient logo carousel / grid with grayscale and hover effects.
nvf/shape-dividerDecorative SVG shape dividers between sections.
All blocks render server-side (PHP render callbacks) for maximum compatibility with caching and SEO plugins. That’s 16 blocks in total — giving you everything you need to build a complete portfolio site without touching code.

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

  1. Go to Portfolio → Add New.
  2. Set a title and featured image (this is the thumbnail shown in the grid).
  3. Add content using the block editor — use nvf/gallery-g2 for image galleries.
  4. Fill in the Project Details meta box: Client, Year, Role, URL.
  5. Assign it to a Portfolio Category for the filter to work.
  6. 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:

ValueEffect
fade-upFade in + move upward
fade-downFade in + move downward
fade-left / fade-rightHorizontal fade
scale-inZoom-in effect
clip-revealCSS clip-path reveal
text-revealWord-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.

Accessibility: All animations are automatically disabled when the user has prefers-reduced-motion: reduce set in their OS preferences.

WooCommerce

NovaFolio has built-in WooCommerce compatibility. To enable it:

  1. Install and activate WooCommerce (free, from the plugin repository).
  2. Run the WooCommerce setup wizard to configure currency, shipping, and payment.
  3. 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

  1. Upload the novafolio-child/ folder to wp-content/themes/.
  2. 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

  1. Go to NovaFolio → License in the WordPress admin.
  2. Enter your Envato/ThemeForest purchase code (format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
  3. Click Activate License.

Once activated, automatic updates will appear in Dashboard → Updates whenever a new version is released.

Finding your purchase code

  1. Log in to your ThemeForest account.
  2. Go to Downloads.
  3. Click Download → License certificate & purchase code next to NovaFolio.
  4. Open the text file and copy the Item Purchase Code.
One license = one site. If you need to move your license to a different domain, deactivate it first, then reactivate on the new site.

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.

Before posting: Check this documentation and the FAQ above. If you have a bug, please include your WordPress and PHP version, any active plugins list, steps to reproduce, and a screenshot if relevant.

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

v1.7.0 — 2026-03-17
  • 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
v1.3.0 — 2026-03-15
  • 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
v1.2.0 — 2026-03-13
  • 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.json registration
  • 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.php split into inc/hooks/ modules
  • Fix CF7 and OCDI integrations restored
  • Fix All French strings translated to English, .pot files regenerated
v1.1.0 — 2026-03-08
  • 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 legacy nova_ and swm_ 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_logo variable replaced; preloader/scrollbar theme_mod keys corrected
  • Fix uninstall.php: added flush_rewrite_rules() and content policy comment
  • Fix Sidebar IDs renamed from swm-footer-* to nvf-footer-*
v1.0.0 — 2025-12-01
  • 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