WP Manifestindependent plugin directory
manifest / performance / simple-alpine-hero-search-wp

AAG Hero Search

Lightweight WordPress plugin: Alpine.js hero search with autocomplete, optional background video, and a single config.json—no admin UI, built for performance.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/conkonig/simple-alpine-hero-search-wp/archive/refs/heads/master.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Wordpress Hero Search Plugin

A lightweight, reusable WordPress plugin providing:

  • A blazing-fast Alpine.js autocomplete search bar
  • A background hero video with image fallback + LCP-friendly rendering
  • Fully configurable via a simple config.json
  • Zero admin settings, zero bloat — perfect for performance-focused sites

This plugin is designed to be dropped into any project and customized via a single JSON file, making it ideal for agency workflows or multi-site reuse.

🚀 Features

  • ⚡ Super-light, Alpine-based search with autocomplete
  • 🎥 Lazy-loading hero background video
  • 🖼️ Automatic fade-in when video is ready
  • 🔎 Autocomplete indexing driven by config JSON
  • 🌐 Portable between sites — no admin setup required
  • 🧩 Drop-in shortcode or block template
  • 🧱 100/100 Lighthouse friendly
  • 🛠 Designed for real-world client work (Astra, Gutenberg, Elementor replacement)

📁 Project Structure

aag-hero-search/
│
├── aag-hero-search.php          # Main plugin loader
├── config.json                  # All user-customizable options
│
├── assets/
│   ├── front.css                # Styling for search + video layer
│   └── front.js                 # Alpine component + video loader
│
├── templates/
│   └── search-component.php     # HTML output for the hero module
│
└── README.md

⚙️ Gutenberg Configuration (custom HTML Block)

You will need the following custom html block added in the same container in Wordpress as your shortcode if you want the html5 video:

<div class="hero-video-wrapper">
    <video
        class="hero-bg-video lazy-load"
        playsinline
        muted
        loop
        autoplay
        poster="https://amsterdamactivityguide.test/wp-content/uploads/2025/11/Openboat.jpg"
    >
        <source
            data-src="https://amsterdamactivityguide.test/wp-content/uploads/2025/11/amsterdam-boat-cruise-720-30.mp4"
            type="video/mp4"
        >
    </video>
</div>

⚙️ Configuration (config.json)

All editable settings for the plugin live inside config.json. Nothing else needs to be edited for different projects.

{
    "video_src": "/wp-content/uploads/2025/11/amsterdam-boat-cruise-720-30.mp4",
    "video_poster": "/wp-content/uploads/2025/11/Openboat.jpg",
    "taxonomy": "activities",
    "search_fallback_url": "/?s=%query%&wpessid=1367",
    "searchbar_placeholder": "Search activities...",
    "search_button_text": "Search",
    "searchable_items": [
        { "slug": "boat-tours-and-cruises", "title": "Boat Tours & Cruises" },
        { "slug": "amsterdam-light-festival", "title": "Amsterdam Light Festival" },
        { "slug": "adventures-activities", "title": "Daytime / Group Adventures" },
        { "slug": "dinners", "title": "Dinners" },
        { "slug": "shows", "title": "Shows" },
        { "slug": "tours-workshops-and-barcrawls", "title": "Tours Workshops & Bar Crawls" }
    ]
}

🔍 Config Fields Explained

video_src

Path to the background video file. This video is lazy-loaded, overlaid, and faded in once canplaythrough fires.

video_poster

Image shown until the video fully loads. This ensures a fast, LCP-friendly hero.

taxonomy

Not required for the frontend. Used for future expansion (dynamic taxonomy search loading).

search_fallback_url

URL to send “generic” search queries to. %query% will be replaced with the user’s search input.

Example: "/?s=%query%&wpessid=1367" → /?s=boat+crawl&wpessid=1367

searchbar_placeholder

Text displayed inside the search input.

search_button_text

Text displayed on the search button.

searchable_items

Array of objects defining autocomplete options. Each must contain:

  • slug: used for the final landing URL (/activities/slug/)
  • title: user-visible label

This is the data that powers the Alpine.js autocomplete.

🧩 Usage

Insert the search hero anywhere via shortcode:

[aag_hero_item_search]
echo do_shortcode('[aag_hero_item_search]');