SEO Features

Pubvana includes a comprehensive SEO layer that handles meta tags, social sharing metadata, structured data, and multi-language signals — all automatically, with per-post overrides.

TL;DR

Pubvana auto-generates meta tags, OpenGraph tags, JSON-LD structured data, sitemaps, and hreflang tags. Per-post and per-page meta_title and meta_description fields override the site-level defaults. Configure global SEO settings at Admin → Settings → SEO.

Details

SeoService runs on every public page request and builds a metadata array that is injected into the theme layout's <head> section.

Title Tag

The <title> tag follows the format Page Title | Site Name. For single posts the post's meta_title field is used when set; otherwise the post title is used. For the home page the site tagline replaces the page title component.

Meta Description

The meta description tag is populated from:

  1. The post or page's meta_description field (if set).
  2. The post's excerpt field (if meta_description is empty).
  3. The site-level default description from Admin → Settings → SEO as a final fallback.

OpenGraph Tags

Every page gets a full set of OpenGraph tags for accurate social sharing previews on Facebook, LinkedIn, and other OG-aware platforms:

  • og:title — from meta_title or entity title
  • og:description — from meta_description or excerpt
  • og:image — featured image URL, or auto-generated OG image
  • og:url — canonical URL of the current page
  • og:typearticle for posts, website for all other pages
  • og:site_name — your site name from General Settings

Twitter Card Tags

  • twitter:card — always summary_large_image
  • twitter:title, twitter:description, twitter:image — mirrors the OG values

JSON-LD Structured Data

For single post pages, Pubvana outputs an Article JSON-LD block:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Post Title",
  "author": { "@type": "Person", "name": "Author Name", "url": "..." },
  "datePublished": "2025-01-15T10:00:00+00:00",
  "dateModified": "2025-01-20T14:30:00+00:00",
  "image": "https://yourdomain.com/uploads/featured.jpg",
  "description": "Post excerpt or meta description"
}

A BreadcrumbList JSON-LD block is generated on all pages to power Google's breadcrumb display in search results.

Hreflang Tags

When multiple languages are active, SeoService outputs <link rel="alternate" hreflang="..." href="..."> tags linking every locale variant of the current page. This tells Google which URL to serve to users in each language/region.

OG Image Auto-Generation

When a post has no featured image, OgImageService uses PHP's GD library to generate a branded PNG (1200×630 px) with the post title overlaid on the site's brand colour. The generated image is cached per slug and invalidated when the post title changes.