{
    "name": "Glossary",
    "slug": "pp-glossary",
    "version": "1.3.1",
    "requires": "6.0",
    "tested": "7.0.4",
    "requires_php": "7.4",
    "download_link": "https://api.github.com/repos/ProgressPlanner/pp-glossary/releases/assets/368325879",
    "author": "Team Progress Planner",
    "author_profile": null,
    "rating": 0,
    "num_ratings": 0,
    "ratings": [],
    "support_threads": 0,
    "support_threads_resolved": 0,
    "active_installs": 0,
    "last_updated": "2026-03-06 02:50pm GMT",
    "added": "2025-11-11",
    "homepage": "https://progressplanner.com",
    "tags": {
        "glossary": "glossary",
        "definitions": "definitions",
        "terms": "terms",
        "dictionary": "dictionary"
    },
    "donate_link": null,
    "requires_plugins": [],
    "downloaded": "0",
    "short_description": "Glossary by Progress Planner is a modern, accessible WordPress glossary plugin that automatically transforms glossary terms in your content into in...",
    "description": "",
    "icons": {
        "1x": "https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/icon-128x128.png",
        "2x": "https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/icon-256x256.png",
        "svg": "https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/icon.svg",
        "default": "https://s.w.org/plugins/geopattern-icon/pp-glossary.svg"
    },
    "sections": {
        "faq": "<h4>Does this plugin require any other plugins?</h4>\n<p>No, this plugin uses only native WordPress functionality and has no external dependencies.</p>\n<h4>Which browsers are supported?</h4>\n<p>The plugin works best in modern browsers with Popover API support (Chrome 114+, Edge 114+, Safari 17+). For older browsers, consider adding the Popover API polyfill.</p>\n<h4>Does it work with Yoast SEO?</h4>\n<p>Yes! The plugin integrates seamlessly with Yoast SEO, adding glossary structured data to Yoast's JSON-LD schema graph. When Yoast SEO is not active, it falls back to Microdata markup.</p>\n<h4>Can I customize the styling?</h4>\n<p>Yes, the plugin uses CSS custom properties for easy theming. You can override the default colors and styles in your theme's CSS.</p>\n<h4>How do I disable automatic linking for specific post types?</h4>\n<p>Use the <code>pp_glossary_disabled_post_types</code> filter:</p>\n<p><code>add_filter( 'pp_glossary_disabled_post_types', function( $post_types ) { return array( 'product', 'custom_post_type' ); } );</code></p>\n<h4>Does it work with the block editor?</h4>\n<p>Yes, the plugin includes a Glossary List block that you can add to any page or post using the block editor.</p>\n",
        "changelog": "<h4> 1.3.1 </h4>\n<ul>\n<li>Added uninstall.php to clean up all plugin data (glossary posts, meta, and options) on deletion.</li>\n</ul>\n<h4> 1.3.0 </h4>\n<p>New:</p>\n<ul>\n<li>Glossary terms within glossary descriptions and popovers are now automatically linked (nested term linking).</li>\n<li>Added FAIR verification with hourly verification of PLC DID and FAIR metadata.</li>\n</ul>\n<p>Enhancements:</p>\n<ul>\n<li>Consolidated glossary entry queries into shared helper functions for better performance.</li>\n<li>Improved accessibility: added screen reader text and moved \"Read more\" link to bottom of popover.</li>\n<li>Changed cursor to <code>help</code> for glossary terms to better indicate interactive definitions.</li>\n<li>Updated banners and optimized images.</li>\n<li>Updated install instructions.</li>\n</ul>\n<h4> 1.2 </h4>\n<ul>\n<li>Excluded glossary entries from Yoast SEO indexables and XML sitemaps (entries have no public pages).</li>\n<li>Excluded glossary entries from WordPress search results.</li>\n<li>Removed revision support (all data is in post meta, not tracked by revisions).</li>\n<li>Added a setting to configure excluded HTML tags where glossary terms should not be highlighted.</li>\n<li>Added a setting to exclude specific post types from glossary term highlighting.</li>\n<li>Do not highlight glossary terms when doing feeds or REST requests.</li>\n</ul>\n<h4> 1.1.0 </h4>\n<ul>\n<li>Added case sensitive option for glossary entries - only matches terms when case matches exactly. (<a href=\"https://github.com/ProgressPlanner/pp-glossary/issues/23\">GH issue #23</a>)</li>\n<li>Added disable auto-linking option - allows entries to appear in the glossary without being automatically linked in content. (<a href=\"https://github.com/ProgressPlanner/pp-glossary/issues/19\">GH issue #19</a>)</li>\n<li>Consolidated glossary entry meta data into a single database post meta field for improved performance.</li>\n<li>Added automatic migration system for seamless upgrades.</li>\n<li>Glossary block improvements:<ul>\n<li>Now falls back to short description when long description is empty.</li>\n<li>Now shows an edit link for logged in users per glossary item.</li>\n</ul>\n</li>\n<li>Lots of accessibility fixes thanks to <a href=\"https://github.com/joedolson\">@joedolson</a>:<ul>\n<li>Popover now opens on click, not on hover, and no longer auto-closes. (<a href=\"https://github.com/ProgressPlanner/pp-glossary/issues/15\">GH issue #15</a>) &amp; (<a href=\"https://github.com/ProgressPlanner/pp-glossary/issues/16\">#16</a>)</li>\n<li>Removed redundant <code>aria-describedby</code> attribute. (<a href=\"https://github.com/ProgressPlanner/pp-glossary/issues/16\">GH issue #16</a>)</li>\n<li>Link appears inside the popover before the definition, to give context to people using screen readers better. (<a href=\"https://github.com/ProgressPlanner/pp-glossary/issues/17\">GH issue #17</a>)</li>\n<li>Popovers are now type <code>auto</code> instead of <code>manual</code> which means they dismiss other popovers so they don't overlap. (<a href=\"https://github.com/ProgressPlanner/pp-glossary/issues/18\">GH issue #18</a>)</li>\n</ul>\n</li>\n</ul>\n<h4> 1.0.3 </h4>\n<ul>\n<li>Fix non-bumped version number.</li>\n</ul>\n<h4> 1.0.2 </h4>\n<ul>\n<li>Asset fixes.</li>\n</ul>\n<h4> 1.0.1 </h4>\n<ul>\n<li>Minor bug fixes.</li>\n</ul>\n<h4> 1.0.0 </h4>\n<ul>\n<li>Initial release</li>\n<li>Custom post type for glossary entries</li>\n<li>Native WordPress custom fields (short description, long description, synonyms)</li>\n<li>Hover-triggered popovers using Popover API with CSS Anchor Positioning</li>\n<li>Automatic term linking (first occurrence only)</li>\n<li>Glossary List Gutenberg block</li>\n<li>Settings page for glossary page configuration</li>\n<li>Schema.org structured data (DefinedTerm and DefinedTermSet)<ul>\n<li>Yoast SEO integration (JSON-LD)</li>\n<li>Microdata fallback when Yoast is not active</li>\n</ul>\n</li>\n<li>Semantic, accessible HTML</li>\n<li>Responsive design with CSS custom properties</li>\n<li>Full keyboard and screen reader support</li>\n<li>No external plugin dependencies</li>\n</ul>",
        "description": "<p>Glossary by Progress Planner is a modern, accessible WordPress glossary plugin that automatically transforms glossary terms in your content into interactive elements with click-triggered popover definitions.</p>\n<h4> Key Features </h4>\n<ul>\n<li><strong>Custom Post Type</strong>: Register glossary entries with custom fields (no content editor needed)</li>\n<li><strong>Native WordPress Fields</strong>: Uses WordPress custom meta boxes for field management (short description, long description, synonyms)</li>\n<li><strong>Automatic Term Linking</strong>: Automatically transforms the first mention of glossary terms in your content</li>\n<li><strong>Click-Triggered Popovers</strong>: Display definitions on click using the native Popover API with CSS Anchor Positioning</li>\n<li><strong>Case Sensitive Matching</strong>: Optionally match terms only when case matches exactly</li>\n<li><strong>Disable Auto-Linking</strong>: Allow entries to appear in the glossary without being automatically linked in content</li>\n<li><strong>Semantic HTML</strong>: Uses <code>&lt;dfn&gt;</code> and <code>&lt;aside&gt;</code> elements with proper ARIA attributes</li>\n<li><strong>Schema.org Integration</strong>: Full DefinedTerm and DefinedTermSet structured data support<ul>\n<li>Integrates with Yoast SEO schema graph when available</li>\n<li>Falls back to Microdata when Yoast SEO is not active</li>\n</ul>\n</li>\n<li><strong>Synonyms Support</strong>: Define alternative terms that trigger the same glossary entry</li>\n<li><strong>Glossary Block</strong>: Gutenberg block to display full glossary with alphabetical navigation</li>\n<li><strong>Settings Page</strong>: Configure which page displays the glossary</li>\n<li><strong>Accessible</strong>: Full keyboard navigation and screen reader compatibility</li>\n<li><strong>Responsive Design</strong>: Mobile-friendly with CSS custom properties for easy theming</li>\n<li><strong>No External Dependencies</strong>: Pure WordPress core functionality, no third-party plugins required</li>\n</ul>\n<h4> How It Works </h4>\n<p>Once you've added glossary entries, the plugin automatically:</p>\n<ul>\n<li>Scans post and page content for mentions of glossary terms (case-insensitive by default, or case-sensitive if enabled)</li>\n<li>Transforms the <strong>first mention</strong> of each term into an interactive element (unless auto-linking is disabled for that entry)</li>\n<li>Shows a popover with the short description when users click on the term</li>\n<li>Adds a \"Read more\" link to the full glossary entry</li>\n</ul>\n<h4> Browser Support </h4>\n<p>The plugin uses modern web platform features:</p>\n<p><strong>Popover API:</strong></p>\n<ul>\n<li>Chrome/Edge 114+</li>\n<li>Safari 17+</li>\n<li>Firefox (experimental support behind flag)</li>\n</ul>\n<p><strong>CSS Anchor Positioning:</strong></p>\n<ul>\n<li>Chrome/Edge 125+/Safari: supported</li>\n<li>Firefox (not yet supported)</li>\n</ul>\n<p>For older browsers, consider adding the Popover API polyfill. CSS Anchor Positioning gracefully degrades (popovers may not position optimally but will still be functional).</p>\n<h4> Accessibility </h4>\n<p>The plugin follows WCAG 2.1 Level AA guidelines:</p>\n<ul>\n<li>Semantic HTML elements (<code>&lt;dfn&gt;</code>, <code>&lt;aside&gt;</code>, proper roles)</li>\n<li>Full keyboard navigation with visible focus indicators</li>\n<li>ARIA attributes for screen readers</li>\n<li>Click-to-open behavior (not hover) for better accessibility</li>\n<li>Auto-dismissing popovers that don't overlap</li>\n<li>Color contrast ratios meet AA standards</li>\n</ul>\n<h4> Schema.org Structured Data </h4>\n<p>The plugin automatically adds Schema.org structured data for glossary entries:</p>\n<ul>\n<li><strong>With Yoast SEO</strong>: Integrates with the Yoast schema graph API to add DefinedTermSet and DefinedTerm entries in JSON-LD format</li>\n<li><strong>Without Yoast SEO</strong>: Outputs Microdata markup directly in the HTML using <code>itemscope</code> and <code>itemtype</code> attributes</li>\n</ul>\n<p>Each glossary entry includes:</p>\n<ul>\n<li>@type: DefinedTerm</li>\n<li>name: The term title</li>\n<li>description: Short description (shown in popovers)</li>\n<li>url: Anchor link to the entry on the glossary page</li>\n<li>alternateName: Array of synonyms (alternative terms)</li>\n</ul>",
        "screenshots": "<ol><li><a href=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-1.png\"><img src=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-1.png\" alt=\"Glossary entry editor with custom fields.\"></a><p>Glossary entry editor with custom fields.</p></li><li><a href=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-2.png\"><img src=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-2.png\" alt=\"Glossary List block in the editor.\"></a><p>Glossary List block in the editor.</p></li><li><a href=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-3.png\"><img src=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-3.png\" alt=\"Popover showing term definition.\"></a><p>Popover showing term definition.</p></li><li><a href=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-4.png\"><img src=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-4.png\" alt=\"Full glossary page with alphabetical navigation.\"></a><p>Full glossary page with alphabetical navigation.</p></li><li><a href=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-5.png\"><img src=\"https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/screenshot-5.png\" alt=\"Settings page for configuring the glossary page.\"></a><p>Settings page for configuring the glossary page.</p></li></ol>",
        "installation": "<h4> Automatic Installation </h4>\n<ol>\n<li>Make sure you have the <a href=\"https://fair.pm/packages/plugins/fair-plugin/\">FAIR Connect plugin</a> installed and activated</li>\n<li>Log in to your WordPress admin panel</li>\n<li>Navigate to Plugins &gt; Add New</li>\n<li>Search for \"Glossary by Progress Planner\"</li>\n<li>Click \"Install Now\" and then \"Activate\"</li>\n</ol>\n<h4> Manual Installation </h4>\n<ol>\n<li>Download the plugin zip file</li>\n<li>Extract it to your <code>wp-content/plugins/</code> directory</li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress</li>\n</ol>\n<h4> Setup </h4>\n<ol>\n<li><strong>Create a Glossary Page</strong>: Create a new page in WordPress (e.g., \"Glossary\" or \"Terms\") and add the <strong>Glossary List</strong> block to the page</li>\n<li><strong>Configure Settings</strong>: Go to <strong>Glossary &gt; Settings</strong> in the WordPress admin and select the page you created as the \"Glossary Page\"</li>\n<li><strong>Add Glossary Entries</strong>: Go to <strong>Glossary &gt; Add New</strong> and enter terms with their short descriptions, long descriptions, and synonyms</li>\n</ol>"
    },
    "versions": {
        "v0.1": "https://api.github.com/repos/ProgressPlanner/pp-glossary/releases/assets/316315635",
        "1.3.0": "https://api.github.com/repos/ProgressPlanner/pp-glossary/releases/assets/351089185",
        "v1.0.1": "https://api.github.com/repos/ProgressPlanner/pp-glossary/releases/assets/319202008",
        "v1.0.2": "https://api.github.com/repos/ProgressPlanner/pp-glossary/releases/assets/321024987",
        "v1.0.3": "https://api.github.com/repos/ProgressPlanner/pp-glossary/releases/assets/327824244",
        "v1.1.0": "https://api.github.com/repos/ProgressPlanner/pp-glossary/releases/assets/328224586",
        "v1.2.0": "https://api.github.com/repos/ProgressPlanner/pp-glossary/releases/assets/328599758",
        "v1.3.1": "https://api.github.com/repos/ProgressPlanner/pp-glossary/releases/assets/368325879"
    },
    "contributors": {
        "joostdevalk": {
            "user_nicename": "joostdevalk",
            "profile": "//profiles.wordpress.org/joostdevalk",
            "avatar": "https://wordpress.org/grav-redirect.php?user=joostdevalk",
            "display_name": "joostdevalk",
            "author": null,
            "author_url": null
        },
        "aristath": {
            "user_nicename": "aristath",
            "profile": "https://profiles.wordpress.org/aristath/",
            "avatar": "https://secure.gravatar.com/avatar/471c510b2590bce99d5e41cc9b817f0c0d420f08d0930e70b18299f993ffa965?s=96&d=monsterid&r=g",
            "display_name": "Ari Stathopoulos",
            "author": null,
            "author_url": null
        },
        "progressplanner": {
            "user_nicename": "progressplanner",
            "profile": "https://profiles.wordpress.org/progressplanner/",
            "avatar": "https://secure.gravatar.com/avatar/4deb15d37750de0d9d56ea633db4c146ab4477e8382fec7bca39459d43bec2ce?s=96&d=monsterid&r=g",
            "display_name": "Progress Planner",
            "author": null,
            "author_url": null
        },
        "filipi": {
            "user_nicename": "filipi",
            "profile": "https://profiles.wordpress.org/filipi/",
            "avatar": "https://secure.gravatar.com/avatar/257969e1a9e1248edce984c38f8f740779611130e83bf02d508fa759b7c5246c?s=96&d=monsterid&r=g",
            "display_name": "Filip Ilić",
            "author": null,
            "author_url": null
        }
    },
    "screenshots": [],
    "support_url": null,
    "business_model": null,
    "repository_url": null,
    "commercial_support_url": null,
    "banners": {
        "low": "https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/banner-772x250.png",
        "high": "https://raw.githubusercontent.com/ProgressPlanner/pp-glossary/main/.wordpress-org/banner-1544x500.png"
    },
    "preview_link": null,
    "ac_origin": "gu",
    "ac_created": "2026-04-09T09:19:56.000000Z"
}