Documentation

Docs

Everything needed to launch, configure, and operate The Grid Index theme and the companion RSS Importer plugin. Read top-to-bottom on first install; come back to specific sections later.

Theme version: 2.2.0 · Plugin version: 1.0.74 · Last updated: May 21, 2026

Quickstart

Five steps to a working editorial site

If you already know WordPress and just want the install path:

  1. Upload the theme zip via Appearance → Themes → Add New → Upload Theme, then click Activate.
  2. Install the RSS Importer plugin from Plugins → Add New (search "TheGridIndex RSS Importer"). Activate.
  3. Go to Appearance → Theme Setup and click "Create missing pages". This builds /plugin, /demo, /contact, /company, /about, /privacy, /terms with the right templates pre-assigned.
  4. Go to Settings → Permalinks and click Save to flush rewrite rules. This enables the news sitemap at /news-sitemap.xml.
  5. Open Settings → Grid Index RSS, toggle on the publisher feeds you want, then click Import Now.
If it didn't work: Check the Theme Setup dashboard. Each managed page shows a color-coded status pill — cyan "Wired", amber "Wrong template", red "Missing". One click per row fixes any issue.

01

Install the theme

Requirements

  • WordPress — 6.0 or higher
  • PHP — 7.4 or higher (8.x recommended)
  • Database — MySQL 5.7+ or MariaDB 10.4+
  • HTTPS — recommended for SEO and security; required for some integrations

Upload and activate

  1. In WordPress admin, go to Appearance → Themes → Add New → Upload Theme.
  2. Choose the theme zip file (named thegridindexplatform.X.Y.zip) and click Install Now.
  3. Click Activate. The site will switch to the dark editorial layout immediately.
  4. You'll see a notice at the top of the WordPress admin: "The Grid Index theme is active — visit Appearance → Theme Setup". Click that link.

Updating the theme

To install a newer version, repeat the upload process. WordPress will prompt to replace the existing theme. Your Customizer settings and pages are preserved across updates.

02

Install the RSS Importer plugin

The RSS Importer is the companion plugin that pulls headlines from external publishers into WordPress posts. It's published on WordPress.org and installs through the standard plugin directory.

From the WordPress directory

  1. Go to Plugins → Add New.
  2. Search for "TheGridIndex RSS Importer".
  3. Click Install Now → Activate.

Manual install (.zip)

  1. Download the latest .zip from wordpress.org/plugins/thegridindex-rss-importer.
  2. Go to Plugins → Add New → Upload Plugin.
  3. Choose the .zip and click Install Now → Activate.
The theme works without the plugin. If you're not ingesting RSS feeds (e.g., you write all your own articles), skip the plugin install entirely. Every editorial module renders correctly using normal WordPress posts.

03

The Theme Setup dashboard

The theme adds an admin screen at Appearance → Theme Setup. This is the single place to create and wire up the pages that need specific templates (Plugin, Demo, Contact, Parent Company, About, Privacy, Terms).

One-click setup

Three buttons handle the common workflow:

  • Create missing pages — creates any of the seven managed pages that don't exist yet, with the correct template pre-assigned.
  • Re-assign templates on existing pages — if you already created pages but they're rendering with the default page.php instead of the custom template, this fixes them all in one click.
  • Flush permalinks — rebuilds WordPress's rewrite rules. Useful after creating new pages or changing slugs.

Wiring status table

Each managed page gets a row showing the expected slug, the required template, and a color-coded status:

  • Wired (cyan) — page exists with the correct template.
  • Wrong template (amber) — page exists but is rendering with page.php or the wrong template. Click "Wire it" to fix.
  • Missing (red) — page doesn't exist yet. Click "Create page" to add it.

Manual assignment

The "Assign a template to any page" section lets you attach any theme template to any WordPress Page — useful for non-managed pages or testing.

04

Customizer options

All site-wide configuration lives under Appearance → Customize. Settings are grouped into seven sections:

SEO & Social

Default meta description, Open Graph image, Twitter handle, Google Search Console verification token, Bing Webmaster verification token, Google Analytics 4 measurement ID. These power the meta tags, Twitter Cards, OG tags, and JSON-LD schema that get rendered into every page head.

Social Profiles

Twitter/X, LinkedIn, GitHub, Mastodon, and YouTube URLs. Used in the Organization JSON-LD sameAs array (important for entity SEO) and available to footer templates.

Analytics

Google Analytics 4 measurement ID. Pasted into a wp_head() snippet only when set; leave blank and no tracking is loaded.

Front Page Links

URLs for the buttons that appear in the header and front page CTAs:

  • View Demo URL — where the nav "View Demo" button points. Defaults to your live Hostinger site.
  • Live Demo URL — where the in-house /demo page's "Open Live Demo" buttons point. Defaults to the same Hostinger URL.
  • Plugin URL — where the "Plugin" nav button points. Defaults to /plugin.
  • Plugin: WordPress.org URL — the WordPress.org plugin listing.
  • Plugin: GitHub repo URL — the GitHub source repo.
  • Plugin: Download .zip URL — the direct download. Defaults to the WordPress.org "latest-stable" zip.

Contact Form

Where contact form submissions are delivered, and the intro paragraph shown above the form on the /contact page.

Company & Legal

Legal entity name (used throughout Privacy and Terms pages) and governing-law jurisdiction (used in Terms section 12).

Footer

Footer tagline, sub-line, and copyright text.

05

Page templates

The theme ships ten custom page templates beyond the default page.php. Each is auto-assigned to its matching slug, so creating a page with slug "plugin" will render the Plugin template without you opening the Page Attributes panel.

SlugTemplatePurpose
/pluginplugin.phpMarketing page for the RSS Importer
/demodemo.phpLive editorial demo with 12 module breakdown
/contactcontact.phpWorking contact form (name, email, inquiry type, subject, message)
/companycompany.phpParent company profile (Fifth Avenue Photographic LLC)
/aboutabout.phpAbout The Grid Index platform
/privacyprivacy.phpPrivacy Policy (11 sections, GDPR/CCPA-aware)
/termsterms.phpTerms of Service (14 sections, GPL-compatible)
/docsdocs.phpThis page — full reference documentation
/featuresfeatures.phpFeature deep-dive

06

The 12 editorial modules

The theme ships every front-end block needed to run an editorial site. Each module is opinionated by default but accepts WordPress posts in standard formats — no proprietary post types or builders required.

  1. Breaking News Strip — auto-rotating red ticker pinned to the top. Driven by posts tagged "breaking".
  2. Hero Lead Story — full-bleed image, kicker, headline, dek, source byline, timestamp, action buttons.
  3. Most Active Right Now — ranked rail of 4–6 momentum stories with thumbnails, tags, age stamps.
  4. Source Intelligence Sidebar — numbered list of authoritative stories with publisher tags and minute-precise ages.
  5. Accelerating Stories — card row of momentum-tracked stories with publisher logos and "Read at [source]" buttons.
  6. Trending Entities — hashtag chips of trending publishers and topics with story counts.
  7. Daily Newsletter Capture — inline subscribe card with email field. Action URL set in Customizer.
  8. Top Stories Grid — 3-column responsive grid (6+ stories) with images, kicker, headline, byline, timestamp.
  9. Topic Dashboard — side-by-side topic columns with 3–5 headlines each and story counts.
  10. Live Latest Feed — 10 most recent items across all sources with thumbnails, kickers, minute-precise ages.
  11. Source-Attributed Links — every imported story links to the original publisher via the source meta field. Attribution-safe.
  12. Top Bar Utilities — search, category nav, LIVE indicator with clock, support contact.

07

RSS Importer plugin setup

The Catalog tab

Settings → Grid Index RSS → Catalog. Shows 47 curated publisher feeds grouped by topic: News (17), Tech (9), Business (7), Science (2), World (4), AI/Vendor (3), and a few others. Each row has an on/off toggle and a configurable check interval (5min / 15min / 30min / hourly).

The Feeds tab (custom feeds)

For any RSS URL not in the catalog: Settings → Grid Index RSS → Feeds → Add new. Paste the URL, choose a check interval, post status, and category mapping. The plugin uses a browser-style User-Agent and the standard WordPress HTTP API.

Post status options

  • Publish — imported items go live immediately.
  • Draft — imported items wait in the Drafts queue until an editor publishes them. Best for editorial review.
  • Pending — similar to Draft, but uses the "Pending Review" status that editors with limited permissions can see.

Deduplication

Every imported item is recorded in a persistent GUID ledger using the item's feed GUID (or its source URL as fallback). Re-running an import never creates duplicates, even if you've deleted the original posts. To wipe the ledger and re-import a feed from scratch, use the "Reset feed history" action on the Feeds tab.

Featured image extraction

The plugin pulls a featured image from (in order): RSS enclosure tag, media:thumbnail, media:content, or the first inline image in the content body. A minimum-width filter skips tracking pixels and icons. Configure in Settings → Grid Index RSS → Images.

Import Now

The "Import Now" button on each tab triggers an immediate fetch for the selected scope (all feeds / single feed / single catalog row). Useful for testing or when WordPress cron is unreliable.

08

Email delivery (contact form)

The contact form on /contact uses WordPress's wp_mail() function. On many hosting providers — including Hostinger — wp_mail() will not reliably deliver mail to external inboxes without an SMTP plugin.

Recommended: install an SMTP plugin

Two well-supported options from the WordPress directory:

  • WP Mail SMTP — integrates with SendGrid, Mailgun, Postmark, Amazon SES, Brevo (Sendinblue), Microsoft 365, and Google Workspace.
  • FluentSMTP — free, open-source, supports the same providers plus generic SMTP.

Setting the recipient

Appearance → Customize → Contact Form → Send submissions to. Paste the email address you want contact form messages delivered to. Leave blank to fall back to the site admin email (Settings → General → Administration Email Address).

What the email contains

Each submission is delivered as a plain-text email with: submitter name and email, inquiry type, subject, message body, timestamp, submitter IP, and a truncated User-Agent. The Reply-To header is set to the submitter's address, so replies go directly to them.

09

SEO & structured data

The theme renders production-grade SEO without requiring Yoast, RankMath, or any third-party SEO plugin. If you use one of those plugins anyway, it should coexist — but you may want to disable duplicate output.

What's automatic

  • Meta descriptions (160 character clamp, per-context).
  • Per-post SEO meta box (custom description, focus keyword, noindex toggle).
  • Canonical URLs and robots meta with max-image-preview:large.
  • Open Graph tags and Twitter Cards.
  • JSON-LD: WebSite + SearchAction on home, NewsArticle on posts, WebPage on pages, BreadcrumbList everywhere, Organization in the head with social sameAs.
  • robots.txt entries pointing to all sitemaps.
  • A dedicated Google News sitemap at /news-sitemap.xml (last 48 hours).

Search Console & Bing Webmaster

Paste your verification tokens into Customize → SEO & Social. The meta tags appear on every page head until you remove them.

Submitting the news sitemap

In Google Search Console → Sitemaps, paste the URL: https://yourdomain.com/news-sitemap.xml. The sitemap regenerates on each request and only includes posts published in the last 48 hours, per Google News guidelines.

10

Developer reference

File structure

  • /page-templates/ — all custom page templates (plugin, demo, contact, company, about, privacy, terms, docs, features).
  • /template-parts/ — reusable content blocks (content.php, content-single.php, content-page.php, content-none.php).
  • /inc/ — PHP modules: template-tags, customizer, seo, schema, sitemap, breadcrumbs, contact-form, admin.
  • /assets/js/main.js — minimal vanilla JS for the mobile nav toggle and external-link hardening.
  • style.css — single stylesheet, no build step, design tokens via CSS custom properties.

Post meta keys (from RSS Importer)

  • _tgi_source_url — canonical URL of the original article on the publisher site.
  • _tgi_source_name — human-readable publisher name (e.g., "The Verge", "Reuters").
  • _tgi_source_feed — the feed URL the item was imported from.
  • _tgi_imported_at — Unix timestamp of when the import ran.
  • _tgi_guid — the feed GUID used for dedupe.

Theme template tags

  • tgi_the_kicker() — outputs the post kicker (first category name, uppercase).
  • tgi_posted_meta() — outputs byline + relative timestamp.
  • tgi_reading_time() — returns reading-time estimate in minutes.
  • tgi_relative_time( $timestamp ) — human-readable relative time ("2m ago", "5h ago", "yesterday").
  • tgi_the_pagination() — paginated archive nav.

Child theme

To customize templates without losing changes on theme updates, create a child theme. Standard WordPress child theme rules apply — the parent theme follows them all.

11

Troubleshooting

A managed page (e.g. /plugin) is rendering as plain text or a blank header

The page exists but is using page.php instead of the custom template. Go to Appearance → Theme Setup → "Re-assign templates on existing pages". The page should render correctly on next refresh.

Visiting /demo or /company returns 404

The WordPress Page doesn't exist yet. Go to Appearance → Theme Setup → "Create missing pages" to create all managed pages in one click. Then visit Settings → Permalinks → Save to flush rewrite rules.

Contact form submissions aren't arriving

Almost always a mail-delivery issue, not a form issue. Install WP Mail SMTP or FluentSMTP and configure a real email provider (SendGrid, Postmark, etc). See the Email delivery section above.

A feed shows a red status dot on the Feeds tab

The plugin tried to fetch the feed and failed. Hover the dot for the specific error — usually a 404, a TLS handshake error, or the publisher temporarily blocking the request. Check the publisher's status page; the feed may have moved.

A feed is green but importing nothing

The fetch succeeded but every item was already in the dedupe ledger. This is normal once a feed has been running for a while. To force a re-import, use "Reset feed history" on that feed's row.

The /news-sitemap.xml returns 404

WordPress's rewrite rules haven't been flushed since the theme was activated. Go to Settings → Permalinks and click Save (you don't need to change anything — saving is what flushes the rules).

The View Demo button goes to the wrong URL

Update Appearance → Customize → Front Page Links → View Demo URL. If the URL is on a different domain from your site, the theme automatically opens it in a new tab and adds an external-link icon.

12

Getting support

If the docs don't answer your question, there are three places to reach us:

  • Plugin support forum on WordPress.org — the official WordPress.org plugin support forum. Best for plugin-specific issues; visible to other users so answers help the next person.
  • Contact form — for private inquiries (press, partnerships, security disclosure, paid support requests). Responses within two business days.
  • In-admin FAQ — the RSS Importer plugin ships with 15 FAQ entries embedded in the admin. Settings → Grid Index RSS → Help.

Bug reports

When reporting a bug, please include: WordPress version, PHP version, theme version, plugin version, the URL where the issue occurs, exact steps to reproduce, and what you expected to happen vs. what actually happened. Screenshots help a lot.

Security issues

For security vulnerabilities, please use the contact form rather than the public forum so we can patch before public disclosure. Mark the inquiry type as "Other" and put "Security" in the subject line.

Couldn't find what you needed?

Tell us what was missing from these docs. We update this page whenever a question comes in that the docs should have answered.