Search
WordPress plugin for enhanced site search functionality
Install
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/nonatech-uk/wp-search/archive/refs/heads/main.zipParish Search - WordPress Plugin
A WordPress plugin for searching parish documents and content using Meilisearch.
Features
- Full-text search across documents, posts, and pages
- Live search with debouncing
- Filter by content type (Documents, News, Pages)
- Search grammar for advanced queries
- Accessible search bar shortcode for embedding anywhere
- Auto-search from URL parameters
Installation
- Upload the
parish-searchfolder to/wp-content/plugins/ - Activate the plugin in WordPress admin
- Go to Settings > Parish Search to configure
Configuration
Settings
| Setting | Description |
|---|---|
| Search API URL | Meilisearch URL (e.g., http://meilisearch:7700) |
| Search API Key | Read-only search API key |
| Results per page | Default number of results |
| Content Types | Enable/disable files, posts, pages |
Shortcodes
Full Search Form
[parish_search]
[parish_search placeholder="Search documents..." limit="20"]
Displays a complete search form with filters and results area.
Attributes:
placeholder- Input placeholder text (default: "Search documents...")limit- Results per page (default: from settings)
URL Parameter: Add ?q=search+term to pre-fill and auto-search.
Compact Search Bar
[parish_search_bar]
[parish_search_bar action="/search/" placeholder="Search..."]
Displays a compact search form that redirects to a search page.
Attributes:
action- URL to redirect to (default:/search/)placeholder- Input placeholder text (default: "Search documents...")
Search Grammar
Refine searches using these patterns:
| Pattern | Example | Description |
|---|---|---|
type: |
type:file |
Filter by content type (file, post, page, document, news) |
year: |
year:2024 |
Filter by year |
doctype: |
doctype:minutes |
Filter by document type (minutes, agenda, policy, planning, finance) |
before: |
before:2024 |
Documents before date |
after: |
after:2023-06 |
Documents after date |
in: |
in:council |
Search within folder path |
Examples
budget year:2024 # "budget" from 2024
"annual report" type:file # Files containing "annual report"
planning doctype:minutes # Planning-related minutes
grants after:2023 before:2025 # Grants from 2023-2024
policy in:council # Policies in Council folder
Template Customization
The plugin uses these template files:
templates/search-form.php- Main search form template
To override, copy to your theme's parish-search/ folder.
CSS Classes
| Class | Description |
|---|---|
.parish-search-container |
Main wrapper |
.parish-search-form |
Search form |
.parish-search-input |
Text input |
.parish-search-button |
Submit button |
.parish-search-filters |
Filter buttons container |
.parish-search-filter |
Individual filter button |
.parish-search-results |
Results container |
.parish-search-result |
Single result item |
.parish-search-bar |
Compact search bar form |
Filter Bar
The search form includes a filter bar with these controls:
| Control | Description |
|---|---|
| Doc Type | Filter documents by type: Minutes, Agenda, Policy, Planning, Finance, Other |
| Year | Filter by year (current year down to 2020) |
| Exact match | Disable AI/semantic search for precise keyword matching |
| Sort | Sort by Relevance, Date (newest), or Date (oldest) |
Notes:
- Doc Type filter only applies to Documents - selecting a doc type auto-selects the Documents filter
- Date sorting disables hybrid/semantic search to ensure proper date ordering
- Relevance sorting uses AI-powered semantic search (20% semantic, 80% keyword)
AJAX Endpoint
The plugin registers an AJAX endpoint for search:
Action: parish_search
Parameters:
query- Search query (may include grammar patterns)limit- Maximum resultstype- Content type filter from UIdoctype- Document type filter (minutes, agenda, policy, planning, finance, other)year- Year filtersort- Sort order (relevance, date_desc, date_asc)exact_match- Disable semantic search (0 or 1)nonce- Security nonce
Requirements
- WordPress 5.0+
- PHP 7.4+
- Meilisearch server with indexed documents
Changelog
1.2.1
- Auto-select Documents filter when doc type is chosen
1.2.0
- Added filter bar with Doc Type, Year, Sort, and Exact Match controls
- Added date sorting (newest/oldest)
- Added exact match option to disable semantic search
- Hybrid search now only used with Relevance sort for proper date ordering
1.0.3
- Added search grammar (type:, year:, doctype:, before:, after:, in:)
- Added year and path filterable attributes
1.0.2
- Added
[parish_search_bar]shortcode - Added URL parameter (
?q=) support for pre-filled searches - Added auto-search on page load
1.0.1
- Fixed document links to use Caddy-served path
- Version bump for cache busting
1.0.0
- Initial release
License
GPL v2 or later