Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/zeeshanraza-official/wpcalibrate-term-glossary/releases/download/v1.0.0/wpcalibrate-term-glossary-1.0.0.zipA high-performance, accessible, and enterprise-grade glossary engine and automatic term-linking plugin for WordPress. Define specialized vocabulary, acronyms, and technical terminology once, and automatically convert eligible terms into accessible tooltips and knowledge base links across your website.
📖 About & Purpose
Online publications, educational platforms, technical documentation sites, and eCommerce stores frequently use specialized vocabulary, acronyms, and industry jargon. Readers often get confused or bounce if definitions are inaccessible.
WPCalibrate Term Glossary solves this by providing:
- Centralized Term Authority: Manage glossary terms, synonyms, phonetic pronunciations, reference links, and categories.
- Safe, Automated In-Content Detection: Scans eligible article body copy and wraps defined terms in interactive tooltips and links.
- Accessible Tooltips: WCAG 2.2 AA compliant tooltips supporting mouse hover, keyboard focus (
Tab/Shift+Tab,Escape), and mobile touch. - Non-Destructive Parsing: Built on native
DOMDocumentandDOMXPathtargeting text nodes; never naive regex replacements that corrupt HTML tags, existing anchor links, buttons, or scripts. - Public A-Z Glossary Index: Complete searchable directory with instant client-side and REST filtering, alphabet navigation bar, and Gutenberg block.
✨ Features
🔍 Automated Term Detection & Linking
- Text-Node Safe Parsing: Evaluates text nodes without ever altering existing links (
<a>), buttons (<button>), code blocks (<code>,<pre>), form fields, or scripts. - Deterministic Disambiguation: Resolves compound terms gracefully. Longer multi-word phrases (e.g., "Search Engine Optimization") always match before shorter sub-phrases (e.g., "Search Engine").
- Matching Priority Engine: Assign custom numeric priorities to terms to override length-based matching order.
- Case-Sensitivity Controls: Global default with per-term case-sensitive overrides (e.g., matching acronym "API" without matching common words).
- Configurable Link Modes:
tooltip_link: Interactive tooltip popup with anchor link to the full term page.tooltip_only: Interactive tooltip popup via an accessible button without page navigation.link_only: Clean anchor link to the term page with no tooltip popup markup.
📚 Public Glossary Index & Navigation
- A-Z Alphabet Directory: Quick filter bar (
#,AthroughZ) with dynamic active counts. - Live Search & Category Filtering: Instant search bar with real-time feedback and server-side fallback.
- Native Dynamic Gutenberg Block: Drop the glossary directory into any layout via the
blocks/glossary-indexblock. - Universal Shortcode: Embed the directory anywhere with
[wpcalibrate_glossary].
🛡️ Enterprise Security & Data Integrity
- Strict Capabilities: Custom post type capabilities (
edit_wpctg_terms,publish_wpctg_terms, etc.) with self-healing registration for administrators and editors. - Spreadsheet Formula Protection: Exported CSV files neutralize Excel/Sheets formula injection vectors (
=,+,-,@). - Safe CSV Importer: Validates headers and rows with a Dry-Run Preview mode before writing to the database.
- Strict Typing: 100% strictly typed codebase (
declare(strict_types=1);) compliant with PHP 8.2 and PHP 8.3.
⚡ Performance & Caching
- Transient-Backed Index: Normalizes and caches active glossary match patterns in WordPress transients (
wpctg_terms_matching_index). - Instant Invalidation: Automatically flushes cache upon post save, taxonomy changes, or settings updates, plus manual AJAX purge button.
- High Scalability: Evaluated and bench-tested across 5,000+ glossary terms under 600ms with peak memory usage below 0.6 MB.
🌐 SEO & Structured Data
- Schema.org DefinedTerm JSON-LD: Automatically injects semantic structured data on single term pages for rich search engine snippets.
- Clean Semantic Markup: Adheres to semantic HTML5 standards and responsive viewport adaptation.
🚀 Installation & Quick Start
Installation via WordPress Dashboard
- Download the latest
wpcalibrate-term-glossary-1.0.0.zipfrom Releases. - In your WordPress admin, go to Plugins > Add New > Upload Plugin.
- Choose the ZIP file and click Install Now.
- Click Activate Plugin.
Installation via FTP / Manual Upload
- Extract
wpcalibrate-term-glossary-1.0.0.zip. - Upload the
wpcalibrate-term-glossarydirectory into your/wp-content/plugins/directory. - Activate the plugin in Plugins > Installed Plugins.
🛠️ Usage & Documentation
1. Creating Glossary Terms
- Go to WPCalibrate > Glossary Terms > Add New Term.
- Enter the Term Title (e.g., "Application Programming Interface").
- In the main editor, write the comprehensive term description.
- In the Glossary Term Details meta box:
- Short Definition / Tooltip: Enter a 1–2 sentence definition displayed inside tooltips.
- Phonetic Pronunciation: (Optional) e.g., "/ˌeɪ piː ˈaɪ/".
- External Source / Citation: (Optional) Authoritative URL reference.
- Aliases / Synonyms: Comma-separated alternative names (e.g., "API, APIs").
- Matching Priority: Integer priority (higher number takes matching precedence).
- Auto-link & Case Sensitivity: Toggles for automatic linking and case-sensitive matching.
- Click Publish.
2. Displaying the A-Z Glossary Index
Use either the Gutenberg Block or the Shortcode on any page:
Gutenberg Block
- In the block inserter, search for Glossary Index (under the WPCalibrate category) and insert it.
Shortcode
[wpcalibrate_glossary]
Shortcode Attributes
| Attribute | Default | Description |
|---|---|---|
show_search |
"true" |
Show or hide the live search toolbar (true / false). |
show_alphabet |
"true" |
Show or hide the A-Z alphabet navigation bar (true / false). |
show_categories |
"true" |
Show or hide the category dropdown filter (true / false). |
per_page |
20 |
Number of glossary terms per page (1 to 100). |
order |
"ASC" |
Sort order ("ASC" or "DESC"). |
category |
"" |
Filter index to a specific category slug (e.g., category="technology"). |
Example:
[wpcalibrate_glossary per_page="30" show_categories="false"]
3. Content Exclusions
- Per-Post Exclusion: While editing any Post or Page, check "Exclude this content from glossary automatic linking" in the sidebar meta box.
- Section Exclusion: Add the CSS class
wpctg-no-glossaryor the HTML attributedata-wpctg-ignore="true"to any container element to prevent term matching within that section:<div class="wpctg-no-glossary"> <p>Terms inside this block will never be linked.</p> </div>
🔄 Automatic Updates from WordPress Dashboard
This plugin supports seamless direct updates through the WordPress Admin Dashboard using GitHub-based release tracking.
By declaring:
* GitHub Plugin URI: https://github.com/zeeshanraza-official/wpcalibrate-term-glossary
* Primary Branch: main
You can manage updates directly from your dashboard using standard tools like Git Updater or GitHub webhook distribution pipelines.
🔌 Developer Hooks & Filters
WPCalibrate Term Glossary provides extensibility through native WordPress filters and actions:
| Hook / Filter | Type | Description |
|---|---|---|
wpctg_term_rewrite_slug |
Filter | Customize the URL rewrite slug (default: 'glossary'). |
wpctg_settings_defaults |
Filter | Filter default plugin settings array. |
wpctg_single_term_meta_html |
Filter | Customize the metadata card rendered on single term pages. |
wpctg_schema_defined_term |
Filter | Customize the Schema.org DefinedTerm JSON-LD array. |
wpctg_candidate_terms |
Filter | Filter matching term candidates before DOM parsing runs. |
wpctg_content_before_detection |
Filter | Filter raw post HTML prior to glossary scanning. |
wpctg_content_after_detection |
Filter | Filter final HTML output after glossary terms are linked. |
wpctg_settings_updated |
Action | Fires immediately after settings are saved. |
📋 Changelog
[1.0.1] - 2026-10-09
- Fixed: Resolved PHP 8
ArgumentCountErrorwhen saving/publishing terms caused by WordPress 4-argument meta sanitization filters. - Hardened: Replaced built-in
intvalsanitize callback with userlandPostType::sanitize_priority()method. - Hardened: Made
$postparameter optional inTermMetaBox::save_meta_box()andContentExclusion::save_exclusion_meta()to preventTypeErrorduring hook dispatches. - Added: Self-healing capability check (
Capabilities::ensure_caps()) onadmin_initensuring administrators always have required permissions on direct FTP updates. - Added: Full Site Editing (FSE) block theme compatibility in
SingleTerm::template_loader(). - Added: Dedicated Plugin Overview Tab (
src/Admin/Overview.php) with architectural breakdown, how-to-use guide, and methods comparison table. - Added: Background-adaptive branding logo icons (20x20px dark/white) for unified WordPress admin menu appearance.
- Added: Automated FTP deployment pipeline with live file system watcher (
sync-ftp.ps1).
[1.0.0] - 2026-10-08
- Initial production release.
- Custom Post Type
wpctg_termand taxonomywpctg_category. - Safe DOMDocument/XPath HTML-aware term detection engine.
- 3 tooltip interaction modes (
tooltip_link,tooltip_only,link_only). - A-Z interactive Glossary Index with search, alphabet bar, and pagination.
- Native Gutenberg dynamic block (
blocks/glossary-index) and shortcode ([wpcalibrate_glossary]). - Read-only public REST API search route (
/wp-json/wpctg/v1/search). - Schema.org
DefinedTermJSON-LD structured data. - UTF-8 CSV Import and Export with spreadsheet formula injection protection.
- Transient-based term matching cache with automated invalidation.
📄 License & Attribution
Distributed under the GNU General Public License v2.0 or later (GPL-2.0-or-later). See LICENSE.txt for details.
Developed with ❤️ by WPCalibrate. For support and inquiries: support@wpcalibrate.com.
Releases
1 release. Each count is every asset in that release; expand a row for the breakdown.