Abuja Digital Studio · Est. 2018
Docs
OTheme
A full WordPress theme with a section-based visual page builder, custom post types, 40+ production-ready blocks, design tokens, and a one-click demo importer.
otheme
Developer documentation

OTheme v2.8.1

A long-form editorial WordPress theme bundled with the Orravo Page Builder, a cloud-synced template library, and a one-click demo importer for case studies, dossiers, and structured editorial content.

Theme + 3 plugins WordPress 6.0+ PHP 8.0+ v2.8.1 · stable
01 · Overview

What OTheme ships

OTheme is the Orravo editorial stack: a parent theme, a section-based page builder, a cloud-synced template library, and an editable demo pack, designed so the look and feel ships out of the box but every section remains editable.

📰
Editorial-first theme
Long-form research, case studies, dossiers with typography-first design and a custom token system
🧱
Section-based builder
5 mastheads + 18 section types delivering structured content
☁️
Cloud templates
Live template library at templates.orravo.com; refresh without re-installing
🚀
One-click demos
Bundled demo pack imports as real, editable pages
Performance subsystem
Per-section asset router, critical CSS inlining, deferred third-party scripts
🔌
WooCommerce templates
Built-in /woocommerce/ overrides for product, cart, checkout
OTheme replaces the typical theme + Elementor/Divi + demo-importer + premium-template combo with one cohesive, opinionated stack designed by the same team, no compatibility tax.
02 · What's included

The bundle

OTheme is one purchase, four moving parts. The theme is the visual base; the three plugins layer composition, templates, and demos on top.

orravo · v2.8.1
Orravo (theme)
The parent theme: typography, design tokens, image sizes, menus, widget areas, performance router, WooCommerce templates
orravo-page-builder · v2.9.1
Orravo Page Builder
Custom orv_page CPT, masthead + section editor, section presets, Cmd+K command palette
orravo-templates · v0.5.0
Orravo Templates
Cloud-synced template library that fetches from templates.orravo.com, sideloads images, creates editable pages
orv-demos-pack · v3.0.0
Orravo Demos Pack
Bundled demo content that imports as real orv_page posts, every section editable
ℹ️The Page Builder is required for OTheme to display authored pages correctly. Templates and Demos plugins are recommended but optional; you can build pages by hand without them.
03 · Installation

Getting installed

From WordPress admin

1
Go to Appearance → Themes → Add New → Upload Theme and upload orravo.zip.
2
Click Activate. The theme will prompt to install the bundled plugins.
3
Install Orravo Page Builder, Orravo Templates, and Orravo Demos Pack when prompted.

Manual install (FTP / SFTP)

1
Upload orravo/ to /wp-content/themes/.
2
Upload each plugin folder to /wp-content/plugins/.
3
Activate the theme via Appearance → Themes, then activate plugins via Plugins.
💡Activation registers the orv_page CPT, flushes rewrite rules, and seeds reusable section presets. No theme files are modified. Updates ship via the Orravo updater.
04 · Quick Start

From zero to first page

Import a demo, edit it in the Page Builder, publish. Three minutes end-to-end.

1
After activation, open Orravo → Demos in the WordPress sidebar.
2
Pick a demo and click Import. A real orv_page post is created with all sections populated.
3
Open the imported page from the Pages list. Click Edit with Page Builder.
4
Edit any section: copy, headings, layout. Reorder sections by drag. Add new sections from the + button.
5
Click Update. Visit the page on the frontend.

All demo content is stored as standard _orv_pb_masthead + _orv_pb_sections post meta. Deactivating the demos plugin doesn't delete the page; your edits persist.

05 · Theme Architecture

Theme architecture

A clean WordPress parent theme with WooCommerce templates, custom image sizes, four menu locations, and a six-area widget structure.

Theme support

Registered via after_setup_theme:

  • title-tag: dynamic page titles
  • post-thumbnails: featured images
  • automatic-feed-links: RSS feeds
  • custom-logo: max 240×80, flex dimensions
  • html5: search-form, comment-form, comment-list, gallery, caption, style, script

Custom image sizes

HandleDimensionsCropUse case
orv-card600 × 400YesCard thumbnails in grids
orv-hero1920 × 800YesMasthead and hero images
orv-avatar120 × 120YesAuthor and source avatars

Menu locations

  • Primary Menu: main site navigation
  • Primary Menu (Left of Logo): split-nav layout, left column
  • Primary Menu (Right of Logo): split-nav layout, right column
  • Footer Menu: secondary footer links

Widget areas

  • Footer Column 1, 2, 3: three-column footer
  • Blog Sidebar: index/archive pages
  • Page Sidebar: optional, controlled per-page in Customize
  • Single Post Sidebar: single posts
06 · Design Tokens

Design tokens

All colors and spacing live in the --orv-* CSS custom property namespace. Override in the Customizer or a child theme.

Token palette (v4.1)

  • ink: primary text color (dark editorial)
  • parchment: background paper tone
  • gold: accent highlights, CTAs
  • teal: secondary accent, callouts
  • coral: alert / urgency
  • violet: premium / pro accents

Each color has solid, soft, glow, and contrast variants, e.g. --orv-gold, --orv-gold-soft, --orv-gold-glow.

Helper functions

PHP// Inline an SVG from assets/svg/{name}.svg
echo orv_get_svg('arrow-right');

// Render post meta (category · date · author · time · comments)
orv_render_post_meta();
07 · Performance Subsystem

Performance subsystem

OTheme ships with the WS4 performance layer: a per-section asset router that loads CSS and JS only for sections that appear on the current page.

What it does

  • Per-section asset router: only enqueues styles for sections present on the page
  • Critical CSS inlining: first-fold styles inlined to <head> for fast paint
  • Deferred third-party scripts: analytics, chat widgets pushed to wp_footer
  • Font preloading: Fraunces, JetBrains Mono, Inter preconnected and preloaded

Files

The performance layer lives under /inc/performance/. Customizations should hook the relevant filters; do not edit files directly; your changes will be lost on theme update.

08 · Mastheads

Page mastheads

Every orv_page post starts with a masthead: the hero block. Pick from five styles, each tuned for a different editorial purpose.

TypeLookBest for
pillarDark bg, series label, title, subtitle, meta tags, optional subnavPillar pages, topic hubs
seriesFull-screen dark masthead with background overlayMulti-part series intros
standardClean dark masthead with breadcrumbArticles, case studies
landingLarge masthead with radial gold glowMarketing landing pages
minimalSimple light mastheadShort essays, notes
09 · Sections

Section library

The Page Builder ships 18 section types covering most editorial layouts. Custom section types can be registered by other plugins via the orv_pb_section_types filter.

Editorial sections

TypeDescription
intro_proseEyebrow, title, deck, body, optional drop cap
argumentEyebrow, title, deck, body, optional tab panels
conclusionSummary section with badge and references
quote_blockPull quote with attribution, source ref, editor's note
quotationPull quote with book/article reference and commentary
source_citeAuthor/expert callout with avatar, role, quote
prose_calloutHighlighted box with icon, title, body

Layout sections

TypeDescription
card_grid2–4 linked cards with CTA (2/3/4 column)
two_column50/50, 60/40, or 40/60 split with mobile collapse
dark_featureDark ink block with 3-column icon/point grid
stats_bar2–6 stat tiles (number + label)
comparison_entryTwo-sided comparison with quote and sources
comparison_tableColumn headers and data rows
numbered_stepsSequential numbered steps with titles and body
accordionExpand/collapse Q&A panels

Navigation & conversion

TypeDescription
subnavSticky horizontal subnav linking to page anchors
cta_stripProminent CTA strip with 1–2 buttons
custom_htmlRaw HTML / shortcode block (escape hatch)

Field types

Sections are defined declaratively. Available field types: text, textarea, richtext, select, toggle, tags, repeater, link, icon, code.

10 · Section Presets

Reusable section presets

Save any configured section as a preset and reuse it across pages: CTAs, FAQs, source citations, signature stat bars.

How presets work

1
Configure a section to your liking inside the Page Builder.
2
Click Save as preset in the section toolbar.
3
Preset is written to the orv_pb_section_presets_global option.
4
From any page, click + Insert preset to drop the saved section into the page.

Presets are copies, not references; editing one inserted preset does not affect the original or other copies.

11 · Cloud Template Library

Cloud-synced template library

The Orravo Templates plugin fetches a live catalog from templates.orravo.com/api/v1, caches it locally, and lets you import any template as a real, editable page.

Sync mechanism

  • API base: https://templates.orravo.com/api/v1 (override with the ORV_TPL_API_BASE_OVERRIDE constant)
  • Fetcher: HTTP client, transient-cached responses
  • Manifest: parses remote template metadata (title, description, sections, presets)
  • Image sideloader: downloads template images to your Media Library on import
  • Bundled fallback: local templates in /bundled when the cloud is unreachable

Import flow

1
Open Orravo → Templates in the WordPress sidebar.
2
Browse the live catalog. Each card shows title, description, preview image.
3
Click Import. The fetcher downloads the JSON, the sideloader pulls images, the importer creates an orv_page post.
4
Reusable elements (CTAs, FAQs, icons) get written to orv_pb_section_presets_global for reuse.
5
Edit the new page in the Page Builder; every section is editable.
ℹ️Templates remain as orv_page posts even if you deactivate the Templates plugin. Your imports are not tied to the plugin's lifecycle.
12 · Demo Importer

One-click demo importer

The Orravo Demos Pack bundles 14+ ready-to-use demos (case studies, dossiers, landing pages) that import as real, editable orv_page posts.

How demos differ from templates

DemosTemplates
SourceBundled with the pluginFetched from templates.orravo.com
Image hostingPlugin /assetsSideloaded to Media Library
UpdatesPlugin updateLive (cloud refresh)
EditableYes, full Page BuilderYes, full Page Builder

Demo storage

Each demo is a PHP array file at /data/demos/<slug>.php. On import, the importer creates a real orv_page post with _orv_pb_masthead and _orv_pb_sections meta, identical to manually-built pages.

Graceful deactivation

If a demo introduces a custom section type and you later deactivate the demos plugin, that section renders as empty; the page does not crash. Your standard sections continue to render normally.

13 · Developer Reference

Developer reference

Custom post type

PHP// Query Page Builder pages
$pages = get_posts([
  'post_type'   => 'orv_page',
  'numberposts' => -1,
]);

foreach ($pages as $page) {
  $masthead = get_post_meta($page->ID, '_orv_pb_masthead', true);
  $sections = get_post_meta($page->ID, '_orv_pb_sections', true);
}

Register a custom section type

PHPadd_filter('orv_pb_section_types', function ($types) {
  $types['my_section'] = [
    'label'  => 'My Section',
    'group'  => 'editorial',
    'fields' => [
      'title' => ['type' => 'text',   'label' => 'Title'],
      'body'  => ['type' => 'richtext','label' => 'Body'],
    ],
  ];
  return $types;
});

add_filter('orv_pb_render_section', function ($html, $type, $data) {
  if ($type === 'my_section') {
    return '<section class="my-section"><h2>' . esc_html($data['title']) . '</h2>'
         . wpautop($data['body']) . '</section>';
  }
  return $html;
}, 10, 3);

Constants

ConstantPurpose
ORV_TPL_API_BASE_OVERRIDEOverride the cloud template API base URL
ORV_TPL_BUNDLED_DIROverride the bundled templates directory path

Options

OptionStored data
orv_pb_section_presets_globalJSON array of saved section presets
orv_tpl_legacy_seed_detectedFlag set when migrating from the legacy demo seed
orravo_demo_seed_v1Legacy; detected on activation, kept for backward compatibility

Activation hooks

  • Theme: registers menus, image sizes, widget areas, performance subsystem
  • Page Builder: registers orv_page CPT, flushes rewrite rules
  • Templates: detects legacy demo seed, fires orv_tpl_activated action
  • Demos Pack: defensive CPT register, seeds presets, flushes rewrite rules
14 · FAQ

Frequently asked questions

Do I have to use the Page Builder, or can I write standard posts?
Both work. Standard Posts and Pages render normally with the theme's editorial styles. The Page Builder is only used for orv_page CPT entries, typically pillar pages, landing pages, and case studies.
Will I lose my edits if the theme updates?
No. All page content lives in post meta (_orv_pb_masthead, _orv_pb_sections), not theme files. Theme updates touch only the theme; your pages persist.
Can I use OTheme on a multisite?
Yes. Activate the theme network-wide; each site can independently activate the bundled plugins.
Does it work with WooCommerce?
Yes. The theme ships /woocommerce/ template overrides for product, cart, and checkout views, styled to match the editorial palette.
What happens if I deactivate the Page Builder plugin?
Existing orv_page posts will not render because the CPT is registered by the plugin. Your data is intact; reactivating restores rendering. Standard posts and pages continue to work.
Can I build a child theme?
Yes. Standard WordPress child theme rules apply. Override style.css tokens, copy any template into the child to customize, and your changes survive parent theme updates.
How are templates updated when new ones launch?
The Templates plugin fetches the live catalog from templates.orravo.com on each admin page load (cached in transients). New templates appear automatically; no plugin update required.
Is there a free version?
No. OTheme is a paid bundle ($129 single site, annual). The license includes one year of updates and support; the theme continues to work after the license expires.
How does it integrate with the rest of the Orravo suite?
All Orravo plugins (OMailer, OAds, OEngage, etc.) register with the Page Builder's command palette via the Orv_Cmdk integration. Cmd+K from anywhere in wp-admin finds pages, sections, and plugin screens.
Where is the bundled demo content stored?
In /data/demos/<slug>.php inside the Demos Pack plugin. Each demo is a PHP array describing a complete page: masthead + sections.
✦ Need help?

Got a question about OTheme?

Reach out directly. Kenneth replies within 24 hours.