{"id":260257,"date":"2025-12-24T08:28:29","date_gmt":"2025-12-24T08:28:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/praisonpressgit\/"},"modified":"2026-03-30T14:15:02","modified_gmt":"2026-03-30T14:15:02","slug":"praison-file-content-git","status":"publish","type":"plugin","link":"https:\/\/tah.wordpress.org\/plugins\/praison-file-content-git\/","author":8188417,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.8.1","stable_tag":"1.8.1","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"PraisonAI Git Posts","header_author":"MervinPraison","header_description":"Load WordPress content from files (Markdown, JSON, YAML) without database writes, with Git-based version control","assets_banners_color":"","last_updated":"2026-03-30 14:15:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/mer.vin","rating":0,"author_block_rating":0,"active_installs":0,"downloads":350,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.6":{"tag":"1.0.6","author":"mervinpraison","date":"2025-12-24 08:28:41"},"1.0.9":{"tag":"1.0.9","author":"mervinpraison","date":"2026-03-22 04:49:01"},"1.1.0":{"tag":"1.1.0","author":"mervinpraison","date":"2026-03-24 10:33:03"},"1.1.1":{"tag":"1.1.1","author":"mervinpraison","date":"2026-03-24 11:17:45"},"1.2.0":{"tag":"1.2.0","author":"mervinpraison","date":"2026-03-24 12:53:44"},"1.3.0":{"tag":"1.3.0","author":"mervinpraison","date":"2026-03-24 20:21:40"},"1.4.0":{"tag":"1.4.0","author":"mervinpraison","date":"2026-03-24 20:39:49"},"1.4.1":{"tag":"1.4.1","author":"mervinpraison","date":"2026-03-24 20:52:32"},"1.5.0":{"tag":"1.5.0","author":"mervinpraison","date":"2026-03-25 09:35:18"},"1.6.0":{"tag":"1.6.0","author":"mervinpraison","date":"2026-03-26 01:51:41"},"1.6.1":{"tag":"1.6.1","author":"mervinpraison","date":"2026-03-26 02:15:15"},"1.7.0":{"tag":"1.7.0","author":"mervinpraison","date":"2026-03-26 02:48:34"},"1.8.1":{"tag":"1.8.1","author":"mervinpraison","date":"2026-03-30 14:15:02"},"1.8.3":{"tag":"1.8.3","author":"mervinpraison","date":"2026-04-02 12:29:30"}},"upgrade_notice":{"1.8.0":"<p>Major release: Bidirectional Git sync, incremental indexing, deletion handling, and get_post_meta() support for headless posts. Recommended update for all users.<\/p>","1.0.9":"<p>Hotfix: Fixes invalid HTML from the Markdown fallback parser, YAML inline array and boolean parsing, permalink format, and SmartCacheInvalidator transient pattern.<\/p>","1.0.8":"<p>Hotfix: Fixes draft posts leaking into archives\/feeds and file posts appearing on wrong category\/tag archives.<\/p>","1.0.7":"<p>Hotfix: Critical performance fixes for large deployments (100k+ files). Run <code>wp praison index<\/code> after updating to generate the fast-lookup index.<\/p>","1.0.6":"<p>Distribution packaging fix. Ensures .ini.example files are excluded from WordPress.org submissions.<\/p>","1.0.4":"<p>WordPress coding standards compliance update. Fixed variable naming conventions.<\/p>","1.0.3":"<p>WordPress.org compliance update. Fixed all plugin review issues including security improvements and proper asset enqueuing.<\/p>","1.0.2":"<p>Plugin renamed from &quot;PraisonPressGit&quot; to &quot;PraisonAI Git Posts&quot; to comply with WordPress trademark guidelines. No functional changes.<\/p>","1.0.1":"<p>Major security and code quality improvements. Recommended update for all users.<\/p>","1.0.0":"<p>Initial release. Install and activate to start using file-based content management.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.6","1.0.9","1.1.0","1.1.1","1.2.0","1.3.0","1.4.0","1.4.1","1.5.0","1.6.0","1.6.1","1.7.0","1.8.1","1.8.3"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Admin dashboard showing file-based content statistics","2":"Version history interface with Git commit tracking","3":"Markdown file example with YAML front matter","4":"Content directory structure"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[4917,95903,15326,4608,24313],"plugin_category":[],"plugin_contributors":[79214],"plugin_business_model":[],"class_list":["post-260257","plugin","type-plugin","status-publish","hentry","plugin_tags-content-management","plugin_tags-file-based","plugin_tags-git","plugin_tags-markdown","plugin_tags-version-control","plugin_contributors-mervinpraison","plugin_committers-mervinpraison"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/praison-file-content-git.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>PraisonAI Git Posts<\/strong> is a revolutionary WordPress plugin that enables file-based content management with Git version control integration. Store your posts, pages, and custom post types as Markdown files while maintaining full WordPress compatibility.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>File-Based Content Management<\/strong> - Store all content as Markdown files<\/li>\n<li><strong>No Database Writes<\/strong> - Pure read-only approach for content<\/li>\n<li><strong>Git Version Control<\/strong> - Track changes with full Git integration<\/li>\n<li><strong>Dynamic Post Type Discovery<\/strong> - Automatically registers post types from directory structure<\/li>\n<li><strong>Custom URL Routing<\/strong> - Beautiful URLs for any post type (e.g., <code>\/recipes\/song-name<\/code>)<\/li>\n<li><strong>YAML Front Matter<\/strong> - Rich metadata support<\/li>\n<li><strong>Caching System<\/strong> - Built-in performance optimization<\/li>\n<li><strong>Auto-Update Detection<\/strong> - Content updates automatically when files change<\/li>\n<li><strong>WordPress Compatible<\/strong> - Works with themes, plugins, and filters<\/li>\n<li><strong>Developer Friendly<\/strong> - Clean, extensible architecture<\/li>\n<\/ul>\n\n<h4>Perfect For<\/h4>\n\n<ul>\n<li>Developers who prefer Git workflows<\/li>\n<li>Teams collaborating on content<\/li>\n<li>Sites requiring version control<\/li>\n<li>Static site generators transitioning to WordPress<\/li>\n<li>Content stored in version control repositories<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Create a <code>content\/<\/code> directory at your WordPress root<\/li>\n<li>Add Markdown files with YAML front matter<\/li>\n<li>Plugin automatically discovers and loads content<\/li>\n<li>Create new post types by simply adding directories<\/li>\n<\/ol>\n\n<h4>Example Post<\/h4>\n\n    `markdown\n\n<p>title: \"My Post Title\"\nslug: \"my-post-slug\"\nauthor: \"admin\"\ndate: \"2024-10-31 12:00:00\"\nstatus: \"publish\"\ncategories:\n  - \"General\"\ntags:<\/p>\n\n  - \"example\"\n\nYour content here\n\n<p>Write your content in <strong>Markdown<\/strong> format.\n    `<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>Git (optional, for version control features)<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to external services for certain features:<\/p>\n\n<h4>GitHub API<\/h4>\n\n<p><strong>What it is:<\/strong> GitHub's REST API (https:\/\/api.github.com) is used for version control and collaboration features.<\/p>\n\n<p><strong>When it's used:<\/strong> The plugin connects to GitHub API when you:\n- Enable GitHub OAuth authentication\n- Create or manage pull requests\n- Sync content with a GitHub repository\n- View pull request details and changes<\/p>\n\n<p><strong>What data is sent:<\/strong> \n- Repository information (owner, name)\n- Authentication tokens (OAuth)\n- Commit messages and file changes\n- Pull request data<\/p>\n\n<p><strong>User consent:<\/strong> GitHub features are optional and only activated when you configure GitHub integration in the plugin settings. No data is sent to GitHub unless you explicitly enable and configure GitHub features.<\/p>\n\n<p><strong>Service information:<\/strong>\n- Service provider: GitHub, Inc.\n- Terms of service: https:\/\/docs.github.com\/en\/site-policy\/github-terms\/github-terms-of-service\n- Privacy policy: https:\/\/docs.github.com\/en\/site-policy\/privacy-policies\/github-privacy-statement<\/p>\n\n<h3>Development<\/h3>\n\n<ul>\n<li>GitHub Repository: https:\/\/github.com\/MervinPraison\/PraisonAI-Git-Posts<\/li>\n<li>Report Issues: https:\/\/github.com\/MervinPraison\/PraisonAI-Git-Posts\/issues<\/li>\n<li>Author Website: https:\/\/mer.vin<\/li>\n<\/ul>\n\n<h3>Credits<\/h3>\n\n<p>Developed by MervinPraison<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Go to Plugins &gt; Add New<\/li>\n<li>Search for \"PraisonAI Git Posts\"<\/li>\n<li>Click \"Install Now\"<\/li>\n<li>Activate the plugin<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Go to Plugins &gt; Add New &gt; Upload Plugin<\/li>\n<li>Choose the downloaded ZIP file<\/li>\n<li>Click \"Install Now\"<\/li>\n<li>Activate the plugin<\/li>\n<\/ol>\n\n<h4>After Installation<\/h4>\n\n<ol>\n<li>Create a <code>content\/<\/code> directory at your WordPress root level<\/li>\n<li>Create subdirectories for post types (e.g., <code>content\/posts\/<\/code>, <code>content\/pages\/<\/code>)<\/li>\n<li>Add Markdown files with YAML front matter<\/li>\n<li>View your content on the frontend<\/li>\n<\/ol>\n\n<h4>Configuration<\/h4>\n\n<p>The plugin works out of the box with default settings. To customize the content directory location, add to <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>define('PRAISON_CONTENT_DIR', '\/custom\/path\/to\/content');\n<\/code><\/pre>\n\n<p>Or use a filter:<\/p>\n\n<pre><code>add_filter('praison_content_dir', function($dir) {\n    return '\/custom\/path\/to\/content';\n});\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20the%20wordpress%20database%3F\"><h3>Does this replace the WordPress database?<\/h3><\/dt>\n<dd><p>No. The WordPress database is still required for WordPress core functionality, user management, settings, etc. This plugin only replaces content storage (posts, pages) with file-based content.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20with%20my%20existing%20wordpress%20site%3F\"><h3>Can I use this with my existing WordPress site?<\/h3><\/dt>\n<dd><p>Yes! The plugin works alongside existing database-based content. You can mix file-based and database-based content.<\/p><\/dd>\n<dt id=\"what%20file%20formats%20are%20supported%3F\"><h3>What file formats are supported?<\/h3><\/dt>\n<dd><p>Currently, Markdown (.md) files with YAML front matter are supported.<\/p><\/dd>\n<dt id=\"how%20do%20i%20create%20a%20custom%20post%20type%3F\"><h3>How do I create a custom post type?<\/h3><\/dt>\n<dd><p>Simply create a new directory in your content folder. For example, creating <code>content\/recipes\/<\/code> automatically registers a \"recipes\" post type.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20wordpress%20themes%3F\"><h3>Does it work with WordPress themes?<\/h3><\/dt>\n<dd><p>Yes! File-based posts work exactly like regular WordPress posts with all template tags and filters.<\/p><\/dd>\n<dt id=\"can%20i%20use%20wordpress%20plugins%20with%20this%3F\"><h3>Can I use WordPress plugins with this?<\/h3><\/dt>\n<dd><p>Yes! The content is loaded as proper WP_Post objects, so plugins that modify content (like SEO plugins) work normally.<\/p><\/dd>\n<dt id=\"how%20does%20caching%20work%3F\"><h3>How does caching work?<\/h3><\/dt>\n<dd><p>The plugin uses WordPress transients for caching. Cache automatically invalidates when files are modified.<\/p><\/dd>\n<dt id=\"how%20do%20i%20clear%20the%20cache%3F\"><h3>How do I clear the cache?<\/h3><\/dt>\n<dd><p>Go to PraisonAI Git Posts \u2192 Clear Cache in the WordPress admin, or use the top admin bar menu.<\/p><\/dd>\n<dt id=\"is%20git%20required%3F\"><h3>Is Git required?<\/h3><\/dt>\n<dd><p>No, Git is optional. The plugin works without Git, but version control features require Git to be installed.<\/p><\/dd>\n<dt id=\"how%20do%20i%20track%20version%20history%3F\"><h3>How do I track version history?<\/h3><\/dt>\n<dd><p>The plugin includes Git integration. If Git is installed, file changes are automatically tracked. View history in PraisonAI Git Posts \u2192 Version History.<\/p><\/dd>\n<dt id=\"can%20i%20rollback%20to%20previous%20versions%3F\"><h3>Can I rollback to previous versions?<\/h3><\/dt>\n<dd><p>Yes, if Git is available, you can rollback any file to a previous version from the Version History page.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>NEW: Getting Started guide on Settings page with content directory path, sample format, and directory structure<\/li>\n<li>NEW: Sample \"Hello from PraisonPress!\" post created on activation so users see it working immediately<\/li>\n<li>NEW: Synchronous index rebuild on settings save (no WP-Cron dependency)<\/li>\n<li>NEW: Cache TTL as human-friendly dropdown (5 min to 24 hours)<\/li>\n<li>NEW: Post type checkboxes show file counts, directory names, and sync status<\/li>\n<li>NEW: Index status table shows entry counts and sync indicators<\/li>\n<li>IMPROVED: Generic defaults (post, page) instead of project-specific types<\/li>\n<li>IMPROVED: Better empty state messaging and onboarding<\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>CRITICAL FIX: Archive safeguard - refuses to scan &gt;500 files without _index.json, preventing OOM<\/li>\n<li>Added WordPress Settings page admin notice for index rebuild feedback<\/li>\n<li>Removed disconnected content_dir settings field<\/li>\n<li>Fixed duplicate docblock on loadSinglePost<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>NEW: WordPress Settings page for user-friendly configuration<\/li>\n<li>NEW: Index Status table with \"Rebuild Index Now\" button<\/li>\n<li>All settings stored in wp_options - no ini files or CLI needed<\/li>\n<li>Auto-generates _index.json on plugin activation<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>PERFORMANCE: Lazy constructor - zero filesystem I\/O at plugin load<\/li>\n<li>PERFORMANCE: loadFromIndex() creates WP_Post from index metadata only<\/li>\n<li>PERFORMANCE: loadSinglePost() direct slug lookup - 1 file read (was: full scan)<\/li>\n<li>NEW: content.enabled safety check - plugin does nothing unless enabled<\/li>\n<li>NEW: Cache stampede protection with wp_cache_add lock<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>HOTFIX: FrontMatterParser - Added inline YAML array support ([a, b, c]), boolean coercion (true\/false \u2192 PHP bool), numeric coercion, and null coercion<\/li>\n<li>HOTFIX: MarkdownParser - Removed str_replace('\\n','<br \/>') that was injecting <br \/> tags inside block-level HTML elements (h1, ul, li, pre), causing invalid HTML<\/li>\n<li>HOTFIX: PostLoader - Fixed guid from query-string format to proper permalink format<\/li>\n<li>HOTFIX: PostLoader::loadFromIndex() - Fixed field name inconsistency (custom vs custom_fields)<\/li>\n<li>HOTFIX: SmartCacheInvalidator - Fixed transient key pattern to match keys actually generated by CacheManager<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>HOTFIX: Draft posts now correctly excluded by default from archives, feeds, and taxonomy pages (default to publish-only)<\/li>\n<li>HOTFIX: Category and tag archives now filter file-based posts by declared front-matter categories\/tags \u2014 prevents all posts appearing on every taxonomy archive<\/li>\n<li>HOTFIX: Cache keys now include category_name and tag query vars to prevent taxonomy archive cache collisions<\/li>\n<\/ul>\n\n<h4>1.8.1<\/h4>\n\n<ul>\n<li>CRITICAL FIX: loadSinglePost() \u2014 direct .md file lookup first, eliminates 49.5 MB peak memory spike per cache-miss request<\/li>\n<li>CRITICAL FIX: registerPostsMeta() \u2014 reads meta from post object properties instead of re-loading full _index.json (eliminates double-registration, saves 34 MB)<\/li>\n<li>FIX: Date-prefixed filename support in direct lookup (e.g. 2024-01-15-my-song.md via glob fallback)<\/li>\n<li>FIX: PRAISON_VERSION constant now matches plugin header version (was stuck at 1.7.0)<\/li>\n<li>PERF: Single-page cache-miss peak memory reduced from 187.5 MB to ~138 MB<\/li>\n<li>PERF: Archive page requests no longer load _index.json twice<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>NEW: Bidirectional Git sync \u2014 dashboard edits auto-export to Git, Git pushes auto-import to WordPress<\/li>\n<li>NEW: Incremental index updates (O(1) per post, ~10ms) \u2014 no more full-rescan rebuilds<\/li>\n<li>NEW: IndexManager class with atomic file operations and flock() concurrency safety<\/li>\n<li>NEW: Deletion handling \u2014 trashing\/deleting posts auto-removes .md files and updates _index.json<\/li>\n<li>NEW: Virtual post meta via get_post_meta() \u2014 headless posts serve custom fields from frontmatter<\/li>\n<li>NEW: registerPostsMeta() reads _index.json by slug for cache-safe meta registration<\/li>\n<li>FIX: WordPress absint() compatibility \u2014 negative virtual IDs stored under both negative and positive keys<\/li>\n<li>FIX: CacheManager serialization \u2014 meta registration survives Redis cache round-trips<\/li>\n<li>FIX: AutoExporter uses git add -A to stage deletions, not just additions<\/li>\n<li>FIX: SyncManager detects Added\/Modified\/Deleted\/Renamed files via git diff --name-status after pull<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>HOTFIX: CacheManager::getContentKey() - Replaced O(n) glob()+filemtime() with O(1) filemtime($dir) \u2014 critical for 100k+ file deployments<\/li>\n<li>HOTFIX: PostLoader - Added _index.json fast path for single-slug queries (O(1) lookup vs full directory scan)<\/li>\n<li>HOTFIX: Bootstrap::injectFilePosts() - Added is_dir() early bail to skip post types with no content directory<\/li>\n<li>HOTFIX: Bootstrap::injectFilePosts() - Fixed is_dir() alias resolution (praison_post maps to posts\/ directory)<\/li>\n<li>Added WP-CLI command: wp praison index [--type=] [--verbose] to generate _index.json manifest<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Added .distignore file for WP-CLI wp dist-archive command<\/li>\n<li>Updated create-zip.sh to exclude all .ini and .ini.example files<\/li>\n<li>Ensures no configuration example files are included in WordPress.org distribution<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>SECURITY FIX: Properly blocked direct file access in scripts\/export-to-markdown.php and create-my-submissions-page.php<\/li>\n<li>These files were attempting to load WordPress before checking ABSPATH, which defeated the security check<\/li>\n<li>All PHP files now immediately exit if accessed directly, as required by WordPress.org guidelines<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fixed WordPress coding standards - prefixed all global variables with plugin prefix<\/li>\n<li>Resolved NonPrefixedVariableFound issue in export-to-markdown.php<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed all WordPress.org plugin review issues<\/li>\n<li>Removed not permitted .ini.example files<\/li>\n<li>Moved all inline CSS\/JS to properly enqueued external files<\/li>\n<li>Added comprehensive external service documentation for GitHub API<\/li>\n<li>Fixed file\/directory location references to use WordPress-approved methods<\/li>\n<li>Added ABSPATH security checks to all PHP files<\/li>\n<li>Ready for WordPress.org approval<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Changed plugin name from \"PraisonPressGit\" to \"PraisonAI Git Posts\" to comply with WordPress trademark guidelines<\/li>\n<li>Updated text domain from 'praisonpressgit' to 'praison-file-content-git'<\/li>\n<li>Updated all internal references and cache keys<\/li>\n<li>No functional changes - maintains full backward compatibility<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed all WordPress coding standards compliance issues<\/li>\n<li>Added proper output escaping throughout the plugin<\/li>\n<li>Implemented nonce verification for all GET parameters<\/li>\n<li>Fixed text domain consistency (changed to 'praisonpressgit')<\/li>\n<li>Added proper global variable prefixes<\/li>\n<li>Replaced deprecated functions (strip_tags \u2192 wp_strip_all_tags, mkdir \u2192 wp_mkdir_p)<\/li>\n<li>Improved database query security with proper prepared statements<\/li>\n<li>Added phpcs ignore comments for unavoidable false positives<\/li>\n<li>Plugin now passes WordPress.org plugin check with 0 warnings<\/li>\n<li>Ready for WordPress.org directory submission<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>File-based content management with Markdown support<\/li>\n<li>Git version control integration<\/li>\n<li>GitHub OAuth and pull request management<\/li>\n<li>Custom post type support<\/li>\n<li>Built-in caching system<\/li>\n<\/ul>","raw_excerpt":"Load WordPress content from files (Markdown, JSON, YAML) without database writes, with Git-based version control.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/260257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=260257"}],"author":[{"embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mervinpraison"}],"wp:attachment":[{"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=260257"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=260257"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=260257"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=260257"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=260257"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tah.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=260257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}