SEO & AI Engine Optimization Framework · May 2026

WordPress SEO: Yoast, Rank Math, schema plugins, headless WP

A comprehensive reference for WordPress SEO implementation. WordPress powers approximately 40-45% of all websites in 2026 and represents the majority of small business sites Joseph manages.…

Theme Selection, Plugin Stack, Custom Post Types, Schema Implementation, Performance Optimization, Security Hardening, and Comprehensive WordPress-Specific SEO

A comprehensive reference for WordPress SEO implementation. WordPress powers approximately 40-45% of all websites in 2026 and represents the majority of small business sites Joseph manages. WordPress-specific patterns differ enough from other platforms to warrant dedicated treatment.


1. Document Purpose

WordPress is simultaneously the most flexible CMS and the most variable in execution. The same WordPress can be highly optimized or catastrophically slow depending on theme, plugins, hosting, and configuration. SEO patterns that work on other platforms require WordPress-specific implementation.

This framework specifies the comprehensive WordPress SEO stack from theme selection through schema implementation through ongoing maintenance.

For Joseph's situation managing 130+ WordPress sites on self-managed Linux infrastructure, standardization across the portfolio dramatically improves operational efficiency.

1.1 Required Tools


2. Hosting Foundation

WordPress performance starts with hosting. Cheap shared hosting cripples even well-built sites.

wordpress_hosting_options:
  
  shared_hosting_low_tier:
    examples: ["GoDaddy basic", "HostGator basic", "Bluehost basic"]
    when_acceptable: "Hobby sites only"
    avoid_for: "Business sites; performance generally inadequate"
  
  managed_wordpress_hosting:
    examples: ["WP Engine", "Kinsta", "Pressable", "Flywheel"]
    cost: "$25-$300+/month"
    benefits:
      - WordPress-optimized stack
      - Automatic updates and backups
      - Built-in caching
      - Security baseline
    when_to_use: "Most business sites; less technical clients"
  
  vps_self_managed:
    examples: ["DigitalOcean", "Linode", "Vultr", "Hetzner"]
    cost: "$10-$100+/month"
    benefits:
      - Full control
      - Best performance per dollar
      - Multiple sites possible
    when_to_use: "Technically capable; managing many sites"
    requires: "Linux administration capability"
  
  joseph_setup:
    description: "Self-managed Debian/Nginx hosting (Bubbles)"
    sites_supported: "130+ production sites"
    benefit: "Cost-effective at scale; full control"
    consideration: "Requires ongoing maintenance discipline"

2.1 PHP Version

php_version_strategy:
  
  current_recommendation: "PHP 8.2 or 8.3"
  
  version_impact:
    - PHP 8.x significantly faster than 7.x
    - 8.x receives security updates
    - WordPress core supports 7.4+ but optimal on 8.x
    - Plugin compatibility important to verify
  
  upgrade_strategy:
    - Test on staging environment
    - Verify plugin compatibility
    - Monitor error logs after upgrade
    - Roll back if critical issues

2.2 Database

database_optimization:
  
  database_engine: "MySQL 8.x or MariaDB 10.6+"
  
  ongoing_maintenance:
    - Regular database optimization
    - Remove revisions (excessive)
    - Remove transients (expired)
    - Remove orphaned post meta
    - Optimize tables periodically
  
  database_optimization_plugins:
    - WP-Optimize (free + pro)
    - WP-Sweep
    - Advanced Database Cleaner
  
  command_line_optimization:
    wp_cli: "wp db optimize"
    direct_sql: "OPTIMIZE TABLE wp_posts;"

3. Theme Selection

Theme choice profoundly affects performance and SEO.

3.1 Theme Categories

theme_categories:
  
  page_builder_themes:
    examples: ["Avada", "Divi", "X Theme", "Enfold"]
    description: "Built around drag-drop page builders"
    pros: "Easy customization without code"
    cons: "Often heavy; performance issues; bloat"
    seo_concern: "Often produces poor HTML structure"
  
  performance_themes:
    examples: ["GeneratePress", "Astra", "Kadence", "Blocksy"]
    description: "Lightweight, performance-focused"
    pros: "Fast; clean code; flexible"
    cons: "Less out-of-box visual design"
    seo_benefit: "Strong foundation"
  
  block_themes:
    examples: ["Twenty Twenty-Four", "Frost", "Ollie"]
    description: "Built for full-site editing"
    pros: "Modern WordPress direction; lightweight"
    cons: "Newer pattern; less mature than alternatives"
  
  custom_themes:
    description: "Built from scratch for specific site"
    pros: "Optimal performance; perfect fit"
    cons: "Higher cost and time"
    when: "High-stakes sites with budget"
  
  joseph_recommendation:
    standard: "GeneratePress Pro or Kadence Pro"
    rationale: "Performance + flexibility + active development"
    fallback: "Astra Pro for client preference"

3.2 Theme Evaluation Criteria

theme_evaluation:
  
  performance:
    - Default install score on PageSpeed Insights
    - Total CSS/JS payload
    - Number of HTTP requests
    - Render-blocking resources
  
  code_quality:
    - Semantic HTML structure
    - WCAG accessibility
    - Schema markup integration
    - Modern PHP practices
  
  flexibility:
    - Customization without page builder
    - Hook coverage for developers
    - Block editor support
    - Custom post type support
  
  support_and_maintenance:
    - Active development
    - Responsive support
    - Security patch history
    - Compatibility maintenance
  
  business_model:
    - Avoid abandoned themes
    - Avoid overly aggressive monetization
    - Premium plugin bundling can be value

3.3 Theme Customization Patterns

customization_approach:
  
  child_themes:
    requirement: "ALWAYS use child theme for customizations"
    rationale: "Updates to parent theme don't lose customizations"
  
  custom_css:
    location: "Customizer Additional CSS (small) or child theme stylesheet (larger)"
    avoid: "Inline styles or theme file edits"
  
  custom_functionality:
    location: "Custom plugin OR child theme functions.php"
    rule: "Site-specific code in custom plugin (survives theme change)"
  
  acf_pro:
    benefit: "Custom fields and content patterns"
    common_use: "Custom layouts; structured content"

4. Plugin Stack

Plugin selection profoundly affects WordPress sites.

4.1 Plugin Discipline

plugin_principles:
  
  minimize_count:
    rule: "Every plugin is performance and security cost"
    target: "<25 active plugins typical; can do well with much fewer"
  
  reputable_sources:
    rule: "Only from wordpress.org or trusted developers"
    avoid: "Nulled themes/plugins (security risk)"
  
  active_development:
    rule: "Plugins updated within last 6-12 months"
    avoid: "Abandoned plugins (security and compatibility)"
  
  performance_test:
    practice: "Test plugin impact when adding"
    tool: "Query Monitor reveals plugin impact"
  
  security_history:
    research: "Check plugin's vulnerability history"
    sources: "Patchstack, WPScan vulnerability database"

4.2 Standard Plugin Stack

recommended_plugin_stack:
  
  seo:
    primary: "Rank Math Pro"
    alternative: "Yoast SEO Premium"
    purpose: "Schema, sitemaps, meta tags, technical SEO features"
  
  caching:
    primary: "WP Rocket"
    alternative: "W3 Total Cache (free) or LiteSpeed Cache (LiteSpeed servers)"
    purpose: "Page caching, browser caching, GZIP, defer JS"
  
  image_optimization:
    primary: "Imagify"
    alternatives: ["ShortPixel", "Smush Pro", "EWWW"]
    purpose: "Compression, WebP/AVIF conversion, lazy loading"
  
  security:
    primary: "Wordfence Premium"
    alternative: "Sucuri Premium"
    purpose: "Firewall, malware scanning, login protection"
  
  backup:
    primary: "UpdraftPlus Premium"
    alternative: "BackWPup Pro"
    purpose: "Scheduled backups to off-server location"
  
  forms:
    primary: "WPForms Pro"
    alternatives: ["Gravity Forms", "Formidable Forms", "Fluent Forms"]
    purpose: "Contact forms, lead capture"
  
  analytics:
    primary: "MonsterInsights Pro (GA4 integration)"
    alternative: "ExactMetrics"
    purpose: "GA4 implementation made easier"
    note: "Not strictly necessary if directly implementing"
  
  conditional_additions:
    woocommerce: "If e-commerce"
    cookie_consent: "Cookiebot, CookieYes (EEA traffic)"
    membership: "MemberPress (if membership site)"
    learning: "LearnDash (if courses)"
  
  optional_value_plugins:
    - "Code Snippets (for custom code without functions.php)"
    - "Query Monitor (development/debugging)"
    - "User Role Editor (granular roles)"
    - "Duplicate Post (productivity)"
    - "Redirection (managing 301s)"

4.3 Plugin Audit

Quarterly plugin audit:

plugin_audit_checklist:
  - List all active plugins
  - For each: Is it actively used?
  - Is it actively maintained (update within 12 months)?
  - Is there a known vulnerability history?
  - Is there a lighter alternative?
  - Could core functionality replace it?
  - Remove any failing these checks

5. SEO Plugin Configuration

5.1 Rank Math Pro Configuration

For Joseph's standard stack, Rank Math Pro configuration:

rank_math_setup:
  
  setup_wizard:
    - Site type and personal/organization
    - Connect to Google services (Search Console, Analytics)
    - XML sitemap settings
    - Image SEO preferences
  
  modules_to_enable:
    - SEO Analysis
    - Rich Snippets / Schema
    - XML Sitemap
    - Role Manager
    - 404 Monitor
    - Redirections
    - Image SEO
    - Local SEO (if applicable)
    - WooCommerce SEO (if WC)
    - Video SEO module
    - News SEO (if news site)
    - Analytics integration
  
  modules_to_disable:
    - Modules not relevant to site type
    - Reduces processing overhead
  
  schema_settings:
    - Default schema type per content type
    - Organization or Person details complete
    - Logo and social profiles configured
  
  content_ai:
    - Optional: AI-driven optimization recommendations
    - Use as guide; don't follow blindly

5.2 Per-Page SEO Optimization

per_page_optimization_workflow:
  
  meta_title:
    pattern: "Primary keyword | Brand"
    length: "50-60 characters"
    location: "Rank Math metabox per post/page"
  
  meta_description:
    pattern: "Compelling 130-155 character description with CTA"
    location: "Rank Math metabox"
  
  focus_keyword:
    purpose: "Rank Math optimization analysis"
    primary: "Main target keyword"
    additional: "Secondary keywords (Pro feature)"
  
  schema_per_page:
    - Article for blog posts
    - LocalBusiness for location pages
    - Product for products
    - Service for service pages
    - FAQPage where Q&A present
    - HowTo where step-by-step content
  
  canonical:
    typical: "Self-canonical (default)"
    override_when: "Duplicate URL needs to point elsewhere"
  
  noindex_decisions:
    - Tag archives (typically noindex)
    - Author archives (often noindex unless multi-author site)
    - Date archives (typically noindex)
    - Search results (always noindex)
    - Thin or low-value pages

5.3 Sitemap Configuration

sitemap_setup:
  
  rank_math_sitemap:
    enabled: true
    excluded:
      - Tag archives (if noindexed)
      - Date archives (if noindexed)
      - Specific post types (if applicable)
    include:
      - All published pages and posts
      - Custom post types (when relevant)
      - Categories
      - Author archives (if indexed)
  
  submission:
    google_search_console: "Submit sitemap URL"
    bing_webmaster_tools: "Submit sitemap URL"
  
  monitoring:
    - Check GSC sitemap status
    - Verify URL count discovered
    - Compare to URL count indexed
    - Investigate gaps

6. Performance Optimization

6.1 Caching Strategy

caching_layers:
  
  page_cache:
    plugin: "WP Rocket (commercial) or W3TC (free)"
    purpose: "Serve cached HTML; bypass PHP and DB"
    impact: "Significant for repeat visitors"
  
  object_cache:
    backend: "Redis (preferred) or Memcached"
    purpose: "Cache expensive database queries"
    impact: "Reduces database load substantially"
    setup_complexity: "Server-level configuration required"
  
  browser_cache:
    configuration: "Cache headers via plugin or .htaccess/nginx"
    purpose: "Repeat visitors don't re-download static assets"
  
  cdn:
    services: ["Cloudflare", "BunnyCDN", "KeyCDN"]
    purpose: "Distribute static assets globally"
    benefit: "Faster for distant visitors"
  
  database_cache:
    purpose: "Cache database query results"
    methods: "Object cache + transient API"

6.2 Image Optimization

image_optimization_workflow:
  
  upload_optimization:
    plugin: "Imagify or ShortPixel"
    settings:
      - Convert to WebP/AVIF
      - Resize on upload (max dimensions)
      - Compress aggressively
      - Maintain originals as backup
  
  responsive_images:
    requirement: "WordPress generates srcset by default"
    enhance: "Define appropriate image sizes in functions.php"
  
  lazy_loading:
    method: "WordPress 5.5+ has native loading='lazy'"
    enhancement: "Plugin can extend to background images"
  
  modern_formats:
    pattern: "Serve WebP/AVIF to compatible browsers; fallback to JPEG/PNG"
    plugin_support: "Imagify, ShortPixel, WP Rocket"
  
  cdn_for_images:
    benefit: "Faster delivery globally"
    options: "Bunny CDN Image Optimizer; Cloudflare Polish"

6.3 JavaScript & CSS Optimization

js_css_optimization:
  
  minification:
    automatic: "WP Rocket, W3TC, Autoptimize"
    benefit: "Smaller file sizes"
  
  combination:
    pattern: "Combine multiple files into fewer"
    tradeoff: "Less relevant with HTTP/2"
    use_carefully: "Can break things if not tested"
  
  defer_js:
    pattern: "Load JS asynchronously where possible"
    tools: "WP Rocket Defer, Async JavaScript plugin"
    test: "Some plugins break with deferral"
  
  remove_unused:
    challenge: "WordPress loads many resources globally"
    tools: "Asset CleanUp, Perfmatters, FlyingPress"
    technique: "Conditionally dequeue scripts/styles per page"
  
  critical_css:
    purpose: "Inline above-fold CSS for faster render"
    automation: "WP Rocket, others"

6.4 Database Optimization

ongoing_database_maintenance:
  
  weekly:
    - Clean expired transients
    - Remove spam comments
    - Remove trashed posts older than threshold
  
  monthly:
    - Optimize all tables
    - Remove old revisions (keep recent)
    - Clean orphaned meta
    - Review and clean orphaned data
  
  automation:
    plugin: "WP-Optimize (scheduled cleanup)"

7. WordPress-Specific SEO Tactics

7.1 Custom Post Types

custom_post_type_seo:
  
  when_to_use:
    - Distinct content types beyond posts/pages
    - Examples: testimonials, case studies, services, projects
  
  registration:
    code_method: "register_post_type() in functions.php or plugin"
    plugin_method: "Custom Post Type UI plugin"
  
  seo_considerations:
    - Set appropriate permalink structure
    - Determine if archive page needed
    - Set has_archive parameter accordingly
    - Create archive template if used
    - Consider taxonomy associations
  
  schema_per_cpt:
    - Apply appropriate schema type
    - Service for services CPT
    - Article for case studies CPT
    - Person for team members CPT

7.2 Permalink Structure

permalink_strategy:
  
  recommended_structure: "/%postname%/"
  
  rationale:
    - Clean URLs
    - Includes keyword from title
    - SEO-friendly
    - Standard pattern
  
  alternatives:
    custom_structure: "/%category%/%postname%/ for some sites"
    avoid: "Date-based (/year/month/postname/) for evergreen content"
    avoid: "ID-based (?p=123) — never ideal"
  
  changing_existing:
    risk: "Breaking existing URLs"
    mitigation: "301 redirects from old to new structure"
    timing: "Major change; do once correctly"

7.3 Categories and Tags

taxonomy_strategy:
  
  categories:
    purpose: "Hierarchical primary topic grouping"
    rule: "5-15 main categories typically"
    each_post: "Assign to 1-2 categories"
  
  tags:
    purpose: "Non-hierarchical specific topics"
    rule: "Use sparingly (5-10 tags per post max)"
    avoid: "Tag explosion (hundreds of barely-used tags)"
  
  archive_indexing_decisions:
    category_archives: "Often indexed if substantive"
    tag_archives: "Often noindexed (thin content risk)"
    author_archives: "Indexed if multi-author; noindex if single-author"
    date_archives: "Usually noindex"
  
  custom_taxonomies:
    use_case: "Beyond categories/tags — e.g., 'Industry' for case studies"
    pattern: "Register via plugin or code"
    seo_treatment: "Same considerations as categories/tags"

7.4 Internal Linking

wordpress_internal_linking:
  
  manual_linking:
    practice: "While writing/editing, link to relevant existing content"
    tool: "WordPress link search in editor"
  
  automated_suggestions:
    plugins: "Link Whisper, Internal Link Juicer"
    use_carefully: "Suggestions, not blind automation"
  
  related_posts:
    plugin_options: "Yet Another Related Posts Plugin (YARPP), WordPress.com Related Posts"
    placement: "Below post content"
    seo_value: "Internal linking + engagement"
  
  hub_pages:
    pattern: "Create topic hub pages linking to all posts in topic"
    seo_benefit: "Concentrates authority; clear topical signals"
  
  breadcrumbs:
    implementation: "Rank Math, Yoast, or theme-built"
    schema: "BreadcrumbList automatically"

7.5 Comments

comments_seo_consideration:
  
  if_enabled:
    - Moderate spam aggressively
    - Akismet or similar for filtering
    - Comments add UGC content
    - Threaded comments
    - Schema can include Comment
  
  if_disabled:
    - Less spam to manage
    - Less UGC content
    - Decision based on community vs management
  
  spam_protection:
    - Akismet (free for personal sites; small fee for business)
    - reCAPTCHA on comment forms
    - Honeypot techniques

8. WooCommerce-Specific (E-commerce on WordPress)

For WooCommerce sites, additional considerations from framework-ecommerceseo.md:

woocommerce_seo:
  
  product_page_optimization:
    - Rank Math WooCommerce module enabled
    - Comprehensive product descriptions (not just default attributes)
    - High-quality images optimized
    - Reviews enabled with schema
    - Related products displayed
  
  category_pages:
    - Substantive intro content (not just product grid)
    - Buying guide content
    - FAQ section
    - Internal linking
  
  performance_critical:
    - Object cache (Redis) essential
    - Page cache configured to bypass dynamic pages
    - Database optimization regular
    - Image optimization aggressive
  
  faceted_navigation:
    - WooCommerce Filter or product filters
    - Apply selective indexing strategy
    - Canonical to base category for combinations
  
  google_merchant_center:
    plugin: "Google Listings & Ads"
    feed: "Auto-generated and submitted"
  
  abandoned_cart_recovery:
    benefit: "Recovers conversions"
    plugins: "WooCommerce Cart Abandonment Recovery, CartFlows"

9. Maintenance & Updates

9.1 Update Strategy

wordpress_update_strategy:
  
  core_updates:
    minor: "Auto-update enabled (security patches)"
    major: "Scheduled with testing"
  
  plugin_updates:
    security: "Auto-update enabled"
    feature: "Manual review and update"
    paid_plugins: "License renewals tracked"
  
  theme_updates:
    parent_theme: "Update; child theme protects customizations"
    custom_theme: "Maintained per development cycle"
  
  testing:
    staging: "Major updates tested on staging first"
    backup: "Backup before updating"
    monitoring: "Watch for issues post-update"

9.2 Monitoring

ongoing_monitoring:
  
  uptime: "UptimeRobot or similar — alert on downtime"
  
  performance: "Real User Monitoring; periodic PageSpeed checks"
  
  security: "Wordfence scans; vulnerability alerts"
  
  seo: "GSC monitoring; rank tracker; Ahrefs/Semrush"
  
  errors: "Error log monitoring"
  
  database: "Periodic optimization"

10. Audit Mode

# Criterion Pass/Fail
WP1 Modern PHP version (8.x)
WP2 Quality theme with strong performance baseline
WP3 Reputable, actively-maintained plugins
WP4 SEO plugin (Rank Math/Yoast) properly configured
WP5 Object cache (Redis/Memcached) running
WP6 Page cache configured
WP7 Image optimization active
WP8 Security plugin active and configured
WP9 Backup running with off-server storage
WP10 Permalink structure SEO-friendly
WP11 Sitemap generated and submitted
WP12 Schema implementation comprehensive
WP13 Internal linking strategy active
WP14 Database maintained
WP15 Updates managed (auto for security; tested for major)
WP16 Hardening per framework-security.md

Score: 16. World-class WordPress implementation: 14+/16.


11. Common Mistakes

  1. Cheap shared hosting — bottleneck regardless of optimization
  2. Page builder bloat — heavy themes destroy performance
  3. Plugin overload — every plugin is performance and security cost
  4. No object cache — database queries dominate page load
  5. Default theme without optimization — leaves performance on table
  6. No image optimization — bloated pages
  7. Outdated PHP — slower and security risk
  8. No backup — single point of failure
  9. Default WordPress security — easy compromise target
  10. Unmaintained sites — entropy degrades them

End of Framework Document

Companion documents:

Want this framework implemented on your site?

ThatDevPro ships these frameworks as productized services. SDVOSB-certified veteran owned. Cassville, Missouri.

See Engine Optimization service ›