renderbit / faq-jsonld
WordPress plugin to manage FAQ items as CPT and inject FAQ JSON-LD with advanced caching and queueing.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:wordpress-plugin
pkg:composer/renderbit/faq-jsonld
Requires
- php: >=7.2
- composer/installers: ^1.9 || ^2.0
README
A WordPress plugin to manage FAQ items as a custom post type (CPT) and inject FAQ JSON-LD into posts/pages. Designed for performance and scalability with advanced cache management, background queueing, and admin/CLI tools.
Features
- Custom Post Type: Manage FAQ items via the
faq_itemCPT. - Mapping Table: Fast MySQL table (
fqj_mappings) links FAQ items to posts, post types, terms, URLs, or global context. - JSON-LD Output: Injects FAQ schema on the frontend, with per-post transient caching.
- Cache Invalidation: Background queue (WP-Cron or WP-CLI) for efficient cache purging.
- Admin UI: Meta boxes and settings for mapping, output, and diagnostics.
- Health & Diagnostics: Admin page for queue/logs and manual actions.
- WP-CLI Integration: Commands for cache and queue management.
Installation
- Copy the plugin folder to your WordPress
wp-content/plugins/directory. - Activate via the WordPress admin Plugins page.
- On activation, the mapping table is created automatically.
Usage
- Add FAQ Items: Use the
FAQ ItemsCPT in the admin menu. - Associate FAQs: Use meta boxes to link FAQs to posts, post types, terms, URLs, or globally.
- Settings: Configure cache TTL, batch size, and output type under the FAQ Items > Settings menu.
- Health: Monitor queue/logs and run manual actions under FAQ Items > Health.
- WP-CLI:
wp fqj purge-transients— Purge all FAQ JSON-LD transients.wp fqj process-queue [--limit=N]— Process the invalidation queue.
Developer Notes
- Key Files:
faq-jsonld.php: Main loader and CPT registrationincludes/indexer.php: Mapping table logicincludes/queue.php: Invalidation queueincludes/frontend.php: JSON-LD output/cachingincludes/admin.php: Admin UI/meta boxesincludes/settings.php: Settings pageincludes/health.php: Health/diagnostics UIincludes/wpcli.php: WP-CLI commandsassets/js/fqj-admin.js: Admin JS (Select2, AJAX)
- Mapping Types: All associations are stored in a single table for fast lookups.
- Transient Keys:
fqj_faq_json_{post_id} - Admin JS: Uses Select2 for post selectors, AJAX for search (
fqj_search_postsaction). - Background Processing: Invalidation queue is processed every 5 minutes by WP-Cron.
Contributing
Pull requests and issues are welcome. Please follow project conventions and review inline comments in each file for guidance.
License
GPLv2+
For more details, see the inline comments in each file or the .github/copilot-instructions.md for AI agent guidance.