[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fEO8ZJGx6RMZd8Hpnm9CTOwipiTj32p6MulLuPBHXhgE":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":23,"download_link":24,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":35,"analysis":141,"fingerprints":648},"native-content-relationships","Native Content Relationships","1.0.29","Chetan Upare","https:\u002F\u002Fprofiles.wordpress.org\u002Fchetanupare\u002F","\u003Cp>WordPress does not provide a native way to model real relationships between content items such as posts, users, and terms.\u003Cbr \u002F>\nMost solutions rely on post meta or taxonomies, which become difficult to query, scale, and maintain over time.\u003C\u002Fp>\n\u003Cp>If you’ve outgrown ACF relationship fields or post meta arrays, Native Content Relationships introduces a \u003Cstrong>structured relationship layer\u003C\u002Fstrong> for WordPress that allows you to define meaningful, queryable, and scalable relationships between content — without relying on hacks or editor-specific solutions.\u003C\u002Fp>\n\u003Cp>This plugin is designed to be \u003Cstrong>core-friendly, developer-focused, and future-proof\u003C\u002Fstrong>, built specifically for developers who have hit performance walls.\u003C\u002Fp>\n\u003Ch3>What This Plugin Solves\u003C\u002Fh3>\n\u003Cp>• Many-to-many relationships between content\u003Cbr \u002F>\n• Clean querying without meta or taxonomy abuse\u003Cbr \u002F>\n• Long-term maintainability and portability\u003Cbr \u002F>\n• Cleanly handles headless and REST WordPress setups\u003C\u002Fp>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Cp>• Relationships between posts, users, and terms\u003Cbr \u002F>\n• One-way or bidirectional relationships\u003Cbr \u002F>\n• Indexed database table for fast queries\u003Cbr \u002F>\n• Clean PHP API for managing relationships\u003Cbr \u002F>\n• WP_Query integration\u003Cbr \u002F>\n• REST API support with inline relations\u003Cbr \u002F>\n• Multilingual-ready (WPML \u002F Polylang)\u003Cbr \u002F>\n• WooCommerce optional integration\u003Cbr \u002F>\n• Editor- and theme-agnostic\u003C\u002Fp>\n\u003Ch3>Supported Relationship Types\u003C\u002Fh3>\n\u003Cp>• Post \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">↔\u003C\u002Fspan> Post\u003Cbr \u002F>\n• Post \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">↔\u003C\u002Fspan> User\u003Cbr \u002F>\n• Post \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">↔\u003C\u002Fspan> Term\u003Cbr \u002F>\n• User \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">↔\u003C\u002Fspan> Post\u003Cbr \u002F>\n• Term \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">↔\u003C\u002Fspan> Post\u003C\u002Fp>\n\u003Ch3>Common Use Cases\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Posts\u003C\u002Fstrong>\u003Cbr \u002F>\n• Products \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Accessories\u003Cbr \u002F>\n• Courses \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Lessons\u003Cbr \u002F>\n• Articles \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Related content\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Users\u003C\u002Fstrong>\u003Cbr \u002F>\n• Favorite posts\u003Cbr \u002F>\n• Bookmarked content\u003Cbr \u002F>\n• Multiple authors or contributors\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Terms\u003C\u002Fstrong>\u003Cbr \u002F>\n• Featured categories\u003Cbr \u002F>\n• Curated collections\u003Cbr \u002F>\n• Semantic grouping beyond default taxonomies\u003C\u002Fp>\n\u003Ch3>Admin Interface\u003C\u002Fh3>\n\u003Cp>• Relationship management in post editor\u003Cbr \u002F>\n• User profile relationship management\u003Cbr \u002F>\n• Term editor relationship support\u003Cbr \u002F>\n• AJAX-powered search for posts, users, and terms\u003Cbr \u002F>\n• Modern UI matching WordPress admin style\u003C\u002Fp>\n\u003Ch3>Stability & Backward Compatibility\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Schema stable from 1.x onward. Backward compatibility guaranteed.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>We lock the core before expanding. Ecosystem and agency confidence depend on it.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Database schema stability\u003C\u002Fstrong> — The relationship table and \u003Ccode>NCR_SCHEMA_VERSION\u003C\u002Fcode> are stable in the 1.x line. Any future schema change will be additive (new columns\u002Findexes) or run through a documented migration; no breaking table or column renames without a major version.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Backward compatibility promise\u003C\u002Fstrong> — Public PHP APIs (functions, hooks, WP_Query arguments), shortcodes, and REST endpoints will not be removed or changed in breaking ways within the 1.x branch. Deprecations will be announced and supported for at least one minor version.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Versioning policy\u003C\u002Fstrong> — 1.x = stable core. Minor\u002Fpatch releases may add features and fix bugs; they will not break existing integrations. A major version (2.x) would be the only place for intentional breaking changes, with a clear migration path.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Namespacing discipline\u003C\u002Fstrong> — One internal prefix: \u003Ccode>ncr_\u003C\u002Fcode> (functions, hooks, options), \u003Ccode>NCR_\u003C\u002Fcode> (classes, constants), \u003Ccode>ncr-\u003C\u002Fcode> (CSS\u002FIDs\u002Fhandles). No new alternate prefixes; documented and consistent so extensions and ecosystem plugins can rely on a stable surface.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Architected for Performance & Scale\u003C\u002Fh3>\n\u003Cp>Native Content Relationships is built for high-volume enterprise and headless WordPress sites. Forget the performance bottleneck of post-meta.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Index Optimization\u003C\u002Fstrong>: Built on composite covering indexes (\u003Ccode>type_lookup\u003C\u002Fcode>) and a smart query planner optimized for performance.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Micro-Optimized Validations\u003C\u002Fstrong>: SQL-native validations ensure sub-2ms P95 latency even at 1M+ rows.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Object Cache Integration\u003C\u002Fstrong>: Full compatibility with object cache through group isolation, targeted relationship cache invalidation, and bulk priming strategies.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Performance Diagnostics\u003C\u002Fstrong>: Includes a powerful CLI diagnostic utility to check and fix integrity without UI bloat.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Benchmarks confirm stable performance with 1,000,000+ relationship rows under InnoDB.\u003C\u002Fstrong>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchetanupare\u002FWP-Native-Content-Relationships\u002Fblob\u002Fmain\u002Fdocs\u002FPERFORMANCE.md\" rel=\"nofollow ugc\">View Full Performance Report\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>ACF Migration (Escape Meta Technical Debt)\u003C\u002Fh3>\n\u003Cp>If you store relationships in \u003Cstrong>Advanced Custom Fields\u003C\u002Fstrong> relationship fields or standard Post Meta, you can safely migrate to Native Content Relationships to unlock immediate performance and querying benefits.\u003C\u002Fp>\n\u003Cp>A built-in script allows you to selectively migrate ACF related data into the new performant table, allowing you to gradually refactor out technical debt.\u003Cbr \u002F>\nCheck out the dedicated one-time migration guide here: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchetanupare\u002FWP-Native-Content-Relationships\u002Fblob\u002Fmain\u002Fdocs\u002Fmigration\u002Ffrom-acf.md\" rel=\"nofollow ugc\">docs\u002Fmigration\u002Ffrom-acf.md\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Advanced Developer APIs\u003C\u002Fh3>\n\u003Cp>Built to be a complete content relationship modeling engine:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Relationship Type Registration API\u003C\u002Fstrong>: Programmatic type registration for custom relationships, with schema validation and strict directional logic.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Relationship Constraints\u003C\u002Fstrong>: Declare relationship constraints like 1:1, 1:N, or M:N and strictly enforce maximum capacities and duplicates. \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Advanced Query Parameters\u003C\u002Fstrong>: Inject the \u003Ccode>content_relation\u003C\u002Fcode> argument directly into your \u003Ccode>WP_Query\u003C\u002Fcode> with parameters specifically designed for advanced use cases: include multiple relationship types, apply exclusionary rules, combine \u003Ccode>OR\u003C\u002Fcode>\u002F\u003Ccode>AND\u003C\u002Fcode> relations, or filter by minimum\u002Fmaximum thresholds. \u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk Operations API\u003C\u002Fstrong>: Optimized batch operations to bulk attach, bulk detach, and WP-CLI data import designed specifically for use cases when scaling up and executing large workloads.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Lightweight Metadata\u003C\u002Fstrong> Add context to relationships natively using relationship metadata (allow order rankings, contexts, descriptions, tracking data, etc.) via a dedicated relationship metadata registry and table.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Graph Utility Layer\u003C\u002Fstrong> An ultra-minimal set of APIs and WP-CLI commands that generate graph diagnostics—useful for acquiring relationship counts, calculating the most connected posts, isolating orphaned items, and running background integrity checks.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Headless REST Readiness\u003C\u002Fh3>\n\u003Cp>For decoupled and highly dynamic solutions, Native Content Relationships includes powerful headless optimizations:\u003C\u002Fp>\n\u003Cp>Append \u003Ccode>?naticore_relations=1\u003C\u002Fcode> or \u003Ccode>?_embed=relations\u003C\u002Fcode> into your standard core endpoint fetches (e.g., \u003Ccode>wp\u002Fv2\u002Fposts\u003C\u002Fcode>) to embed related data inside your response arrays instantly, minimizing round trips.\u003C\u002Fp>\n\u003Ch3>Integrations\u003C\u002Fh3>\n\u003Cp>• WooCommerce (product relationships)\u003Cbr \u002F>\n• WPML \u002F Polylang (relationship mirroring)\u003Cbr \u002F>\n• Elementor (dynamic content support)\u003Cbr \u002F>\n• Gutenberg (related content block)\u003Cbr \u002F>\n• Advanced Custom Fields (one-time migration tool)\u003C\u002Fp>\n\u003Ch3>Page Builder Integration\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Elementor:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Compatible with:\u003C\u002Fstrong> Elementor 2.0+\u003Cbr \u002F>\n* \u003Cstrong>Features:\u003C\u002Fstrong> Comprehensive Dynamic Tags suite for relationships\u003Cbr \u002F>\n* \u003Cstrong>Auto-detected:\u003C\u002Fstrong> Yes (no configuration needed)\u003Cbr \u002F>\n* \u003Cstrong>Tested up to:\u003C\u002Fstrong> Elementor 3.20\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Elementor Dynamic Tags:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Related Posts\u003C\u002Fstrong>: Display related posts with customizable output formats\u003Cbr \u002F>\n* \u003Cstrong>Related Users\u003C\u002Fstrong>: Display users with relationships (favorites, bookmarks, etc.)\u003Cbr \u002F>\n* \u003Cstrong>Related Terms\u003C\u002Fstrong>: Display taxonomy terms with relationships\u003Cbr \u002F>\n* \u003Cstrong>Flexible Output\u003C\u002Fstrong>: IDs, titles, links, avatars, count-only options\u003Cbr \u002F>\n* \u003Cstrong>Direction Support\u003C\u002Fstrong>: Both outgoing and incoming relationships\u003Cbr \u002F>\n* \u003Cstrong>Native Controls\u003C\u002Fstrong>: Relationship type selector with validation\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Gutenberg:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Cstrong>Compatible with:\u003C\u002Fstrong> WordPress 5.0+ (Core)\u003Cbr \u002F>\n* \u003Cstrong>Features:\u003C\u002Fstrong> “Related Content” block with relationship filtering\u003Cbr \u002F>\n* \u003Cstrong>Always available:\u003C\u002Fstrong> Yes (core WordPress feature)\u003Cbr \u002F>\n* \u003Cstrong>Tested up to:\u003C\u002Fstrong> WordPress 6.5\u003C\u002Fp>\n\u003Ch4>Shortcodes\u003C\u002Fh4>\n\u003Cp>Use these in posts, pages, or widgets. They use the current post ID when not specified.\u003C\u002Fp>\n\u003Cp>\u003Cem>Related posts (default: type=related_to, limit=5):\u003C\u002Fem>\u003Cbr \u002F>\n[naticore_related_posts type=”related_to” limit=”5″ order=”date” layout=”list” title=”Related Content” class=”my-class”]\u003C\u002Fp>\n\u003Cp>\u003Cem>Related users (default: type=authored_by):\u003C\u002Fem>\u003Cbr \u002F>\n[naticore_related_users type=”authored_by” limit=”10″ order=”name” layout=”list” title=”Authors”]\u003C\u002Fp>\n\u003Cp>\u003Cem>Related terms (default: type=categorized_as):\u003C\u002Fem>\u003Cbr \u002F>\n[naticore_related_terms type=”categorized_as” limit=”5″ order=”name” layout=”grid” title=”Categories”]\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Attributes (all shortcodes):\u003C\u002Fstrong>\u003Cbr \u002F>\n* type – Relationship type slug (e.g. related_to, parent_of, authored_by, categorized_as)\u003Cbr \u002F>\n* limit – Number of items (1–50), default 5\u003Cbr \u002F>\n* order – Sort: date, title (posts) or name (users\u002Fterms)\u003Cbr \u002F>\n* post_id – Post ID; omit to use current post\u003Cbr \u002F>\n* layout – list or grid\u003Cbr \u002F>\n* title – Heading text above the list (optional)\u003Cbr \u002F>\n* class – Extra CSS class(es) for the wrapper\u003Cbr \u002F>\n* show_thumbnail – 1 to show post thumbnail (posts shortcode only), default 0\u003Cbr \u002F>\n* excerpt_length – Number of words for excerpt (0 = hide), default 0\u003C\u002Fp>\n\u003Ch4>Widget\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Related Content (NCR)\u003C\u002Fstrong> is available under Appearance \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Widgets. Add it to any sidebar or widget area.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Title\u003C\u002Fstrong> – Optional widget title (leave blank to use the shortcode’s default “Related Content” heading)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Relationship type\u003C\u002Fstrong> – e.g. Related To, Parent Of, Depends On\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Number of items\u003C\u002Fstrong> – 1–50\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Order by\u003C\u002Fstrong> – Date or Title\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Post ID (optional)\u003C\u002Fstrong> – Leave 0 to use the current post; set a post ID to show relations for a specific post\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Output matches the shortcode (same markup and styles when the shortcode CSS is enqueued).\u003C\u002Fp>\n\u003Ch3>Developer Guide (Advanced)\u003C\u002Fh3>\n\u003Cp>This section is intended for developers who want programmatic control.\u003C\u002Fp>\n\u003Ch4>Core API\u003C\u002Fh4>\n\u003Cp>Add a relationship:\u003Cbr \u002F>\n    wp_add_relation( $from_id, $to_id, $type );\u003C\u002Fp>\n\u003Cp>Get related items:\u003Cbr \u002F>\n    wp_get_related( $id, $type );\u003C\u002Fp>\n\u003Cp>Check relationship:\u003Cbr \u002F>\n    wp_is_related( $from_id, $to_id, $type );\u003C\u002Fp>\n\u003Cp>Remove relationship:\u003Cbr \u002F>\n    wp_remove_relation( $from_id, $to_id, $type );\u003C\u002Fp>\n\u003Ch4>WP_Query Integration\u003C\u002Fh4>\n\u003Cp>new WP_Query( array(\u003Cbr \u002F>\n‘post_type’ => ‘post’,\u003Cbr \u002F>\n‘content_relation’ => array(\u003Cbr \u002F>\n‘post_id’ => 123,\u003Cbr \u002F>\n‘type’ => ‘related_to’,\u003Cbr \u002F>\n),\u003Cbr \u002F>\n) );\u003C\u002Fp>\n\u003Ch4>REST API\u003C\u002Fh4>\n\u003Cp>Endpoints available under:\u003Cbr \u002F>\n    \u002Fwp-json\u002Fnaticore\u002Fv1\u002F\u003C\u002Fp>\n\u003Cp>• Create relationships\u003Cbr \u002F>\n• Fetch related content\u003Cbr \u002F>\n• Delete relationships\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Embed relations in core REST responses (headless):\u003C\u002Fstrong>\u003Cbr \u002F>\nAdd \u003Ccode>?naticore_relations=1\u003C\u002Fcode> to any core resource request to include a \u003Ccode>naticore_relations\u003C\u002Fcode> array in the response. Works with:\u003Cbr \u002F>\n• \u003Ccode>GET \u002Fwp-json\u002Fwp\u002Fv2\u002Fposts\u002F\u003Cid>?naticore_relations=1\u003C\u002Fcode>\u003Cbr \u002F>\n• \u003Ccode>GET \u002Fwp-json\u002Fwp\u002Fv2\u002Fusers\u002F\u003Cid>?naticore_relations=1\u003C\u002Fcode>\u003Cbr \u002F>\n• \u003Ccode>GET \u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories\u002F\u003Cid>?naticore_relations=1\u003C\u002Fcode> (and other taxonomies)\u003Cbr \u002F>\nEach relation item includes \u003Ccode>to_id\u003C\u002Fcode>, \u003Ccode>to_type\u003C\u002Fcode>, \u003Ccode>type\u003C\u002Fcode>, and optional \u003Ccode>title\u003C\u002Fcode>\u002F\u003Ccode>display_name\u003C\u002Fcode>\u002F\u003Ccode>name\u003C\u002Fcode>. Opt-in only so default requests stay fast.\u003C\u002Fp>\n\u003Ch4>Hooks & Filters\u003C\u002Fh4>\n\u003Cp>Actions:\u003Cbr \u002F>\n• \u003Ccode>naticore_relation_added\u003C\u002Fcode>\u003Cbr \u002F>\n• \u003Ccode>naticore_relation_removed\u003C\u002Fcode>\u003Cbr \u002F>\n• \u003Ccode>naticore_after_duplicate_post\u003C\u002Fcode> – fired after copying relations from one post to another (args: from_post_id, to_post_id, result array)\u003C\u002Fp>\n\u003Cp>Filters:\u003Cbr \u002F>\n• \u003Ccode>naticore_relation_is_allowed\u003C\u002Fcode>\u003Cbr \u002F>\n• \u003Ccode>naticore_get_related_args\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Duplicate post:\u003C\u002Fstrong> Use helper \u003Ccode>naticore_copy_relations( $from_post_id, $to_post_id, $relation_types = null )\u003C\u002Fcode> to copy relationships when duplicating a post. Returns array with keys \u003Ccode>copied\u003C\u002Fcode>, \u003Ccode>skipped\u003C\u002Fcode>, \u003Ccode>errors\u003C\u002Fcode>. Out-of-the-box integration: Yoast Duplicate Post, Post Duplicator (metaphorcreations), Copy & Delete Posts (Inisev).\u003C\u002Fp>\n\u003Ch4>Elementor Integration\u003C\u002Fh4>\n\u003Cp>This plugin provides comprehensive Elementor Dynamic Tags for displaying relationships in Elementor-powered designs.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Available Dynamic Tags:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Cstrong>Related Posts\u003C\u002Fstrong> (ncr-related-posts)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Display posts related to the current post\u003C\u002Fli>\n\u003Cli>Supports all post-to-post relationship types\u003C\u002Fli>\n\u003Cli>Output formats: IDs, titles, links, count\u003C\u002Fli>\n\u003Cli>Direction control: outgoing\u002Fincoming\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Related Users\u003C\u002Fstrong> (ncr-related-users)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Display users with relationships to posts\u003C\u002Fli>\n\u003Cli>Supports user relationship types (favorites, bookmarks, etc.)\u003C\u002Fli>\n\u003Cli>Output formats: IDs, names, emails, avatars, profile links\u003C\u002Fli>\n\u003Cli>Direction control: posts-to-users\u002Fusers-to-posts\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Related Terms\u003C\u002Fstrong> (ncr-related-terms)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Display taxonomy terms with relationships\u003C\u002Fli>\n\u003Cli>Supports term relationship types (categories, tags, etc.)\u003C\u002Fli>\n\u003Cli>Output formats: IDs, names, slugs, archive links\u003C\u002Fli>\n\u003Cli>Direction control: posts-to-terms\u002Fterms-to-posts\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Usage Examples:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cem>Display related post IDs:\u003C\u002Fem>\u003Cbr \u002F>\n    \u003Ccode>[ncr-related-posts relationship_type=\"related_to\" output_format=\"ids\" limit=\"5\"]\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cem>Display user avatars:\u003C\u002Fem>\u003Cbr \u002F>\n    \u003Ccode>[ncr-related-users relationship_type=\"favorite_posts\" output_format=\"avatar_images\" avatar_size=\"48\"]\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cem>Display term links:\u003C\u002Fem>\u003Cbr \u002F>\n    \u003Ccode>[ncr-related-terms relationship_type=\"categorized_as\" output_format=\"term_links\" limit=\"10\"]\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cem>Get count of related items:\u003C\u002Fem>\u003Cbr \u002F>\n    \u003Ccode>[ncr-related-posts relationship_type=\"related_to\" output_format=\"count\"]\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Advanced Features:\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Context-aware\u003C\u002Fstrong>: Automatically detects current post, user, or term context\u003Cbr \u002F>\n– \u003Cstrong>Fallback content\u003C\u002Fstrong>: Display custom text when no relationships found\u003Cbr \u002F>\n– \u003Cstrong>Pagination support\u003C\u002Fstrong>: Limit results for performance\u003Cbr \u002F>\n– \u003Cstrong>Ordering options\u003C\u002Fstrong>: Sort by date, title, or random\u003Cbr \u002F>\n– \u003Cstrong>Multi-language\u003C\u002Fstrong>: Works with WPML\u002FPolylang translations\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Integration Benefits:\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Native Elementor experience\u003C\u002Fstrong>: Tags appear in Elementor’s Dynamic Tags panel\u003Cbr \u002F>\n– \u003Cstrong>No templates forced\u003C\u002Fstrong>: Users control output format and styling\u003Cbr \u002F>\n– \u003Cstrong>Performance optimized\u003C\u002Fstrong>: Uses cached relationship data\u003Cbr \u002F>\n– \u003Cstrong>Optional dependency\u003C\u002Fstrong>: Only loads when Elementor is active\u003C\u002Fp>\n\u003Ch4>WP-CLI\u003C\u002Fh4>\n\u003Cp>• List relationships\u003Cbr \u002F>\n• Add \u002F remove relationships\u003Cbr \u002F>\n• Integrity checks\u003C\u002Fp>\n\u003Ch3>Contributing\u003C\u002Fh3>\n\u003Cp>Contributions are welcome.\u003Cbr \u002F>\nGitHub: https:\u002F\u002Fgithub.com\u002Fchetanupare\u002FWP-Native-Content-Relationships\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>GPLv2 or later\u003C\u002Fp>\n","Add first-class relationships between posts, users, and terms using a fast, structured, and scalable architecture.",0,351,"2026-02-21T18:45:00.000Z","6.9.4","5.0","7.4",[18,19,20,21,22],"content","posts","relationships","terms","users","https:\u002F\u002Fchetanupare.github.io\u002FWP-Native-Content-Relationships\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnative-content-relationships.1.0.29.zip",100,null,"2026-03-15T15:16:48.613Z",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":11,"avg_security_score":25,"avg_patch_time_days":32,"trust_score":33,"computed_at":34},"chetanupare",1,30,94,"2026-04-04T11:15:59.707Z",[36,56,77,99,120],{"slug":37,"name":38,"version":39,"author":40,"author_profile":41,"description":42,"short_description":43,"active_installs":11,"downloaded":44,"rating":11,"num_ratings":11,"last_updated":45,"tested_up_to":46,"requires_at_least":15,"requires_php":16,"tags":47,"homepage":53,"download_link":54,"security_score":55,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"ris-related-post","RIS Related Post","1.0","Md Taufiqur Rahman","https:\u002F\u002Fprofiles.wordpress.org\u002Fsmartshovon\u002F","\u003Cp>\u003Cstrong>RIS Related Post\u003C\u002Fstrong> is a simple yet powerful plugin that enhances your WordPress website by displaying related posts with thumbnails. With RIS Related Post, you can easily increase user engagement and reduce bounce rates by showing relevant content to your visitors. The plugin is fully customizable, allowing you to choose between displaying related posts based on categories or tags, and offers two layout options: horizontal (left to right) or vertical (top to bottom).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003Cbr \u002F>\n– Display related posts with thumbnails automatically below your content.\u003Cbr \u002F>\n– Choose to show related posts based on categories or tags.\u003Cbr \u002F>\n– Two layout options: Horizontal (Left to Right) and Vertical (Top to Bottom).\u003Cbr \u002F>\n– Fully responsive design, ensuring your related posts look great on any device.\u003Cbr \u002F>\n– Easy-to-use settings page within the WordPress admin.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why Use RIS Related Post?\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Increase Engagement:\u003C\u002Fstrong> Keep visitors on your site longer by showing them relevant content.\u003Cbr \u002F>\n– \u003Cstrong>Improve SEO:\u003C\u002Fstrong> Related posts help improve your site’s internal linking structure, which can enhance SEO.\u003Cbr \u002F>\n– \u003Cstrong>Easy Customization:\u003C\u002Fstrong> Control the appearance and behavior of related posts directly from your WordPress dashboard.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>How It Works:\u003C\u002Fstrong>\u003Cbr \u002F>\n– The plugin automatically scans the current post’s categories or tags to find and display related posts.\u003Cbr \u002F>\n– The posts are shown with thumbnails, and you can customize the number of posts displayed.\u003Cbr \u002F>\n– You can choose whether the posts are displayed in a horizontal row or a vertical list.\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\u003C\u002Fp>\n\u003Cp>This plugin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\u003C\u002Fp>\n\u003Cp>You should have received a copy of the GNU General Public License along with this plugin; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\u003C\u002Fp>\n","Easily display related posts with thumbnails below your content, boosting engagement and SEO.",707,"2024-11-20T05:27:00.000Z","6.7.5",[48,49,50,51,52],"post-relationships","post-thumbnails","related-content","related-posts","seo","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fris-related-post.1.0.zip",92,{"slug":57,"name":58,"version":59,"author":60,"author_profile":61,"description":62,"short_description":63,"active_installs":64,"downloaded":65,"rating":66,"num_ratings":67,"last_updated":68,"tested_up_to":14,"requires_at_least":69,"requires_php":70,"tags":71,"homepage":75,"download_link":76,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"posts-to-posts","Posts 2 Posts","1.7.8","scribu","https:\u002F\u002Fprofiles.wordpress.org\u002Fscribu\u002F","\u003Cp>This plugin allows you to create many-to-many relationships between posts of any type: post, page, custom etc. A few example use cases:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>manually curated lists of related posts\u003C\u002Fli>\n\u003Cli>post series\u003C\u002Fli>\n\u003Cli>products connected to retailers\u003C\u002Fli>\n\u003Cli>etc.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Additionally, you can create many-to-many relationships between posts and users. So, you could also implement:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>favorite posts of users\u003C\u002Fli>\n\u003Cli>multiple authors per post\u003C\u002Fli>\n\u003Cli>etc.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Support & Maintenance\u003C\u002Fh4>\n\u003Cp>AyeCode Ltd have committed to security and maintenance updates due to this plugins requirement in our \u003Ca href=\"https:\u002F\u002Fwpgeodirectory.com\u002Fdownloads\u002Flist-manager\u002F\" rel=\"nofollow ugc\">List Manager Extension.\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>~~I, scribu, will not be offering support (either free or paid) for this plugin anymore.~~\u003C\u002Fp>\n\u003Cp>If you want to help maintain the plugin, fork it \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fscribu\u002Fwp-posts-to-posts\" rel=\"nofollow ugc\">on github\u003C\u002Fa> and open pull requests.\u003C\u002Fp>\n\u003Cp>Links: \u003Ca href=\"http:\u002F\u002Fgithub.com\u002Fscribu\u002Fwp-posts-to-posts\u002Fwiki\" rel=\"nofollow ugc\">\u003Cstrong>Documentation\u003C\u002Fstrong>\u003C\u002Fa> | \u003Ca href=\"http:\u002F\u002Fscribu.net\u002Fwordpress\u002Fposts-to-posts\" rel=\"nofollow ugc\">Plugin News\u003C\u002Fa> | \u003Ca href=\"http:\u002F\u002Fscribu.net\" rel=\"nofollow ugc\">Author’s Site\u003C\u002Fa>\u003C\u002Fp>\n","Efficient many-to-many connections between posts, pages, custom post types, users.",10000,403687,96,101,"2026-03-06T04:35:00.000Z","6.0","5.6",[72,73,74,20,22],"connections","custom-post-types","many-to-many","http:\u002F\u002Fscribu.net\u002Fwordpress\u002Fposts-to-posts","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fposts-to-posts.1.7.8.zip",{"slug":78,"name":79,"version":80,"author":81,"author_profile":82,"description":83,"short_description":84,"active_installs":85,"downloaded":86,"rating":55,"num_ratings":87,"last_updated":88,"tested_up_to":46,"requires_at_least":69,"requires_php":16,"tags":89,"homepage":94,"download_link":95,"security_score":96,"vuln_count":97,"unpatched_count":11,"last_vuln_date":98,"fetched_at":27},"wp-dummy-content-generator","WP Dummy Content Generator","4.0.0","Deepak anand","https:\u002F\u002Fprofiles.wordpress.org\u002Fdeepakanand767\u002F","\u003Cp>The “WP Dummy Content Generator” plugin is a powerful tool designed for WordPress websites. Its primary purpose is to generate dummy content, such as posts, custom post types, and media files, to populate your website during development or testing phases.\u003C\u002Fp>\n\u003Cp>This plugin offers a user-friendly interface that allows you to customize the type, quantity, and characteristics of the dummy content you want to generate. You can specify the number of posts, assign categories or tags, and even include featured images.\u003C\u002Fp>\n\u003Cp>One of the notable features of this plugin is its ability to delete all the generated content with a single click. This makes it convenient to remove the dummy data once you no longer need it, ensuring a clean and streamlined website.\u003C\u002Fp>\n\u003Cp>The “WP Dummy Content Generator” plugin is particularly useful for developers, designers, and website administrators who want to quickly populate their WordPress site with realistic dummy content. It saves time and effort by automatically generating content that mimics real posts, enabling you to focus on other aspects of website development or testing.\u003C\u002Fp>\n\u003Cp>Overall, this plugin simplifies the process of creating and managing dummy content, providing a handy solution for efficiently populating your WordPress website with test data.\u003C\u002Fp>\n\u003Ch3>🔥 What does this plugin offer?\u003C\u002Fh3>\n\u003Cp>The “WP Dummy Content Generator” plugin offers the following features and benefits:\u003C\u002Fp>\n\u003Cp>1) Dummy Content Generation: The plugin allows you to generate dummy content such as posts, custom post types, and media files for your WordPress website.\u003C\u002Fp>\n\u003Cp>2) Customization Options: You can customize the generated content by specifying the number of items to create, assigning categories or tags, including featured images, and adding custom fields.\u003C\u002Fp>\n\u003Cp>3) Efficient Content Management: The plugin simplifies the process of managing dummy content by providing a user-friendly interface and options to easily create, edit, and delete the generated content.\u003C\u002Fp>\n\u003Cp>4) Quick Content Deletion: With just a single click, you can delete all the generated dummy content from your website, ensuring a clean slate and saving time when you no longer need the test data.\u003C\u002Fp>\n\u003Cp>5) Time-saving Solution: By automating the generation of dummy content, the plugin saves you valuable time and effort that would otherwise be spent manually creating test content.\u003C\u002Fp>\n\u003Cp>6) Realistic Dummy Data: The generated content closely mimics real posts, providing a more authentic representation of how your website will look and function with actual content.\u003C\u002Fp>\n\u003Cp>7) Testing and Development: The plugin is particularly useful during website testing and development stages, as it helps populate your site with realistic test data for a more accurate evaluation of design, functionality, and performance.\u003C\u002Fp>\n\u003Cp>8) Developer-Friendly: The plugin caters to developers, designers, and website administrators, providing a convenient tool for populating websites with test content during the development process.\u003C\u002Fp>\n\u003Ch3>🛠️ HOW DOES “WP Dummy Content Generator” WORK?\u003C\u002Fh3>\n\u003Cp>It’s rather simple really – once you install the plugin, you can begin using it. On the left menu, you will get an admin menu page with name “Dummy Data Generator”. This will take you to the dashboard page of the plugin from where you can choose to generate dummy posts, users or woocommerce products.\u003C\u002Fp>\n\u003Ch3>Worried about deleting dummy data generated by our plugin?\u003C\u002Fh3>\n\u003Cp>Rest assured, the process of deleting the dummy data generated by our plugin is designed to be safe, reliable, and hassle-free. You can confidently remove all the generated content with ease and peace of mind. Our plugin ensures that the deletion process is handled smoothly, allowing you to maintain a clean and streamlined website whenever needed.\u003C\u002Fp>\n\u003Ch3>🔒 GDPR AND PRIVACY\u003C\u002Fh3>\n\u003Cp>WP Dummy Content Generator plugin is GDPR compliant:\u003Cbr \u002F>\n– We do not store any visitor or user data.\u003Cbr \u002F>\n– We do not send any data to remote servers.\u003Cbr \u002F>\n– Our plugin is only used to generate dummy posts, custom posts, users and woocommerce products.\u003C\u002Fp>\n\u003Cblockquote>\u003Cp>\n  Note: This plugin is now compatible with PHP version 8.\n\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>✨ If you face any issue with your install, kindly raise a ticket so we can fix the issue ASAP. ✨\u003C\u002Fp>\n","Generate realistic dummy content for WordPress quickly. Ideal for developers and designers to populate sites for testing and development.",7000,142907,22,"2025-05-16T04:49:00.000Z",[90,91,92,93,78],"dummy-content-generation-for-wordpress","dummy-posts-and-custom-posts","woocommerce-products","wordpress-dummy-content-plugin","https:\u002F\u002Fwpdcg.online\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-dummy-content-generator.zip",91,5,"2025-06-16 00:00:00",{"slug":100,"name":101,"version":102,"author":103,"author_profile":104,"description":105,"short_description":106,"active_installs":107,"downloaded":108,"rating":55,"num_ratings":109,"last_updated":110,"tested_up_to":14,"requires_at_least":111,"requires_php":53,"tags":112,"homepage":115,"download_link":116,"security_score":117,"vuln_count":118,"unpatched_count":11,"last_vuln_date":119,"fetched_at":27},"related-post","Related Posts By PickPlugins","2.0.66","PickPlugins","https:\u002F\u002Fprofiles.wordpress.org\u002Fpickplugins\u002F","\u003Cp>\u003Cstrong>Related Posts By PickPlugins\u003C\u002Fstrong> plugin is one of the most useful plugin to display related post under post content on single post or page or custom post types, its also support to display related post under excerpt on archive pages. you can conditionally choose to display related content under excerpt or content by archive pages like tag, category, date, author, search page and custom taxonomy pages.\u003C\u002Fp>\n\u003Ch3>Related Post by http:\u002F\u002Fpickplugins.com\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.pickplugins.com\u002Fdocumentation\u002Frelated-post\u002F?ref=wordpress.org\" rel=\"nofollow ugc\">Documentation! &raquo;\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdemo.pickplugins.com\u002Frelated-post\u002F?ref=wordpress.org\" rel=\"nofollow ugc\">Live Demo! &raquo;\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.pickplugins.com\u002Fitem\u002Frelated-post-for-wordpress\u002F?ref=wordpress.org\" rel=\"nofollow ugc\">Buy Pro! &raquo;\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Tutorials\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=9SZKa0QYgsc\" rel=\"nofollow ugc\">How to install & setup\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Related post under every paragraph\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can choose paragraph position like first, second, third and before last paragraph to display related post.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Before & After content and excerpt\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Related post plugin allows you to display related content link before and after the content, this feature also available for excerpt under archive pages.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Related post under archive page\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can display related post under various archive pages like home page, front page, blog page, date, search, author, year, date, month and etc.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Related post by post types\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can choose custom post types to display Related post under single page.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Manual Post selection\u003C\u002Fstrong>\u003Cbr \u002F>\nYou can choose manually picked the post to display as related post for each post.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Advance query\u003C\u002Fstrong>\u003Cbr \u002F>\nYou can set max number post to display and choose query order and orderby parameters, related posts query based on current post category, tags and custom taxonomies.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Ready layout\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>There is 3 different type layout currently available to display related post, you can choose grid, slider and list style layout. you can set custom width for items and margin, padding, text align.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Sortable post elements\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can sort post elements like post title, post thumbnail and excerpt as you want.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Hide any elements\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can hide or display post elements like post title, thumbnail or excerpt.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Customize elements style\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can set custom font size, font color, padding, margin for post title, post excerpt and set custom height for post thumbnail, select custom thumbnail size and etc. you can also write custom CSS for each elements.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Track click\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can enable tracking click on related post, this will help you understand which post getting more attention from related posts. you will see top 10 post from stats page.\u003C\u002Fp>\n\u003Ch3>Premium Features\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Popup related post\u003C\u002Fstrong>\u003Cbr \u002F>\nYou can display related post on popups under single blog post or custom post types,\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Popup positions\u003C\u002Fstrong>\u003Cbr \u002F>\nyou can set 8 ready position for popups\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Popup custom delay\u003C\u002Fstrong>\u003Cbr \u002F>\nYou can set custom delay to display popup, so popup will be hidden until certain amount of time and then it will display.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Popup display on scroll\u003C\u002Fstrong>\u003Cbr \u002F>\nYou can choose to display popup based on scroll down, popup will be hidden until certain amount of scroll down.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Popup display scroll down to article\u003C\u002Fstrong>\u003Cbr \u002F>\nPopup will display when user scroll down to reached end of the article class or content.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Popup display scroll down to page\u003C\u002Fstrong>\u003Cbr \u002F>\nPopup will display when user scroll down to reached end of the page or footer.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Custom HTML after each elements\u003C\u002Fstrong>\u003Cbr \u002F>\nYou can display custom HTML under each elements like post title, post excerpt and post thumbnails. you can also display 3rd party shrotcode as output after each elements.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Link Target\u003C\u002Fstrong>\u003Cbr \u002F>\nYou can set custom link target for each elements link like post title, post thumbnail and read more link, you can set _blank, _parent or etc for each link.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Display via shortcode\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can display related post any where via shortcode by using on your theme files\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003C?php echo do_shortcode( '[related_post post_id=\"\"]' ); ?>\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Display Related Post under post by taxonomy and terms.",4000,198386,39,"2025-12-22T09:46:00.000Z","3.8",[113,50,100,51,114],"inline-related-post","similar-posts","http:\u002F\u002Fwordpress.org\u002Fplugins\u002Frelated-post\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Frelated-post.zip",98,3,"2025-03-06 21:30:44",{"slug":121,"name":122,"version":123,"author":124,"author_profile":125,"description":126,"short_description":127,"active_installs":128,"downloaded":129,"rating":130,"num_ratings":109,"last_updated":131,"tested_up_to":14,"requires_at_least":132,"requires_php":53,"tags":133,"homepage":137,"download_link":138,"security_score":96,"vuln_count":139,"unpatched_count":11,"last_vuln_date":140,"fetched_at":27},"wp-auto-affiliate-links","Auto Affiliate Links","6.8.3.1","Lucian Apostol","https:\u002F\u002Fprofiles.wordpress.org\u002Fthedark\u002F","\u003Cp>Auto Affiliate Links will automatically add affiliate links into your content. You can manually set affiliate links and keywords where they should be added into your content, or you can let the plugin to automatically extract and display links from Amazon, Clickbank, Shareasale, Ebay, Walmart, Commission Junction, BestBuy and Envato Marketplace.\u003C\u002Fp>\n\u003Cp>IMPORTANT: Your content won’t be modified in any way. The links are added when the content is displayed.\u003C\u002Fp>\n\u003Cp>If you prefer to select your keywords and add your links manually, you can do this from “Auto Affiliate Links” menu in your administration panel. In “General Settings” you can set if you want the links to be cloaked, if you want them to be added on your homepage or not and several other options.\u003C\u002Fp>\n\u003Cp>Also, you will have options to make the links nofollow or dofollow, to open in new page or same page and to cloak links. The plugin will give you the most used 100 keywords from your content si you can easily add affiliate links to appear when they are displayed.\u003C\u002Fp>\n\u003Cp>You can limit the number of links that are shown in every article. The frequency range from “Very Low” to “Very High”. At Very Low level only 1 link will be displayed in every article. At “Very High” frequency a maximum of 5 links will be added to every article.\u003C\u002Fp>\n\u003Cp>If you choose to automatically generate and display links from Amazon, Clickbank or Shareasale you have to first request an API key, and then to activate each module. The links will be added trough javascript so you do not have to worry about nofollowing and search engines.\u003C\u002Fp>\n","Automatically display affiliate links in your website content so you can make more money. It is also working well for internal linking.",3000,950827,82,"2026-03-11T05:32:00.000Z","3.5",[134,135,18,136,19],"affiliate","auto","keywords","https:\u002F\u002Fautoaffiliatelinks.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-auto-affiliate-links.6.8.3.1.zip",10,"2024-09-18 00:00:00",{"attackSurface":142,"codeSignals":502,"taintFlows":640,"riskAssessment":641,"analyzedAt":647},{"hooks":143,"ajaxHandlers":412,"restRoutes":456,"shortcodes":488,"cronEvents":501,"entryPointCount":87,"unprotectedCount":31},[144,150,152,156,159,162,166,170,173,177,181,185,189,193,198,201,203,206,210,214,217,222,226,231,234,238,243,247,249,252,257,261,264,268,273,276,281,284,288,291,294,296,300,304,308,312,315,318,320,324,326,330,334,338,342,344,347,349,351,353,355,357,360,363,366,368,371,375,378,380,381,385,389,391,394,397,399,402,404,408],{"type":145,"name":146,"callback":147,"file":148,"line":149},"action","naticore_register_relation_types","closure","developer-guide.php",243,{"type":145,"name":146,"callback":147,"file":148,"line":151},262,{"type":153,"name":154,"callback":147,"priority":139,"file":148,"line":155},"filter","naticore_relation_is_allowed",296,{"type":145,"name":157,"callback":147,"priority":139,"file":148,"line":158},"naticore_relation_added",320,{"type":153,"name":160,"callback":147,"priority":139,"file":148,"line":161},"naticore_get_related_args",347,{"type":145,"name":163,"callback":163,"file":164,"line":165},"add_meta_boxes","includes\\core\\class-admin.php",37,{"type":145,"name":167,"callback":168,"priority":139,"file":164,"line":169},"save_post","save_relationships",38,{"type":145,"name":171,"callback":172,"file":164,"line":109},"admin_enqueue_scripts","enqueue_scripts",{"type":145,"name":174,"callback":175,"file":164,"line":176},"admin_notices","render_activation_notice",46,{"type":153,"name":178,"callback":179,"file":164,"line":180},"posts_where","anonymous",288,{"type":153,"name":182,"callback":183,"priority":139,"file":184,"line":169},"map_meta_cap","map_meta_caps","includes\\core\\class-capabilities.php",{"type":145,"name":186,"callback":187,"priority":139,"file":188,"line":165},"before_delete_post","cleanup_on_delete","includes\\core\\class-cleanup.php",{"type":145,"name":190,"callback":191,"priority":139,"file":188,"line":192},"wp_trash_post","cleanup_on_trash",42,{"type":153,"name":194,"callback":195,"file":196,"line":197},"query_vars","register_query_vars","includes\\core\\class-query.php",58,{"type":153,"name":199,"callback":199,"priority":139,"file":196,"line":200},"posts_join",59,{"type":153,"name":178,"callback":178,"priority":139,"file":196,"line":202},60,{"type":153,"name":204,"callback":204,"priority":139,"file":196,"line":205},"posts_distinct",61,{"type":153,"name":207,"callback":208,"priority":139,"file":196,"line":209},"posts_request","log_query_debug",65,{"type":145,"name":211,"callback":212,"file":196,"line":213},"wp_footer","output_debug_info",66,{"type":145,"name":215,"callback":212,"file":196,"line":216},"admin_footer",67,{"type":145,"name":218,"callback":219,"priority":97,"file":220,"line":221},"init","register_defaults","includes\\core\\class-relation-types.php",159,{"type":145,"name":218,"callback":223,"priority":224,"file":220,"line":225},"lock",20,430,{"type":145,"name":227,"callback":228,"file":229,"line":230},"rest_api_init","register_routes","includes\\core\\class-rest-api.php",34,{"type":145,"name":227,"callback":232,"priority":224,"file":229,"line":233},"register_embed_fields",35,{"type":153,"name":235,"callback":236,"priority":139,"file":229,"line":237},"rest_prepare_user","embed_relations_for_user",623,{"type":145,"name":239,"callback":240,"file":241,"line":242},"admin_menu","add_settings_page","includes\\core\\class-settings.php",56,{"type":145,"name":244,"callback":245,"priority":224,"file":241,"line":246},"admin_init","register_settings",57,{"type":145,"name":244,"callback":248,"priority":97,"file":241,"line":205},"handle_tab_action",{"type":145,"name":171,"callback":250,"file":241,"line":251},"enqueue_admin_styles",64,{"type":145,"name":253,"callback":254,"file":255,"line":256},"elementor\u002Fdynamic_tags\u002Fregister_tags","register_dynamic_tags","includes\\elementor\\class-elementor-integration.php",50,{"type":145,"name":258,"callback":259,"file":255,"line":260},"elementor\u002Fdynamic_tags\u002Fregister","register_tag_groups",53,{"type":145,"name":262,"callback":263,"file":255,"line":242},"elementor\u002Fcontrols\u002Fregister","register_controls",{"type":145,"name":218,"callback":265,"file":266,"line":267},"register_shortcodes","includes\\frontend\\class-shortcodes.php",45,{"type":145,"name":269,"callback":270,"file":271,"line":272},"naticore_settings_tabs","add_acf_settings_tab","includes\\integrations\\class-acf.php",54,{"type":145,"name":274,"callback":275,"priority":139,"file":271,"line":200},"acf\u002Fupdate_value\u002Ftype=relationship","sync_acf_to_native",{"type":145,"name":277,"callback":278,"priority":139,"file":279,"line":280},"dp_duplicate_post","copy_relations_yoast","includes\\integrations\\class-duplicate-post.php",32,{"type":145,"name":282,"callback":278,"priority":139,"file":279,"line":283},"dp_duplicate_page",33,{"type":145,"name":285,"callback":286,"priority":139,"file":279,"line":287},"mtphr_post_duplicator_created","copy_relations_post_duplicator",36,{"type":145,"name":289,"callback":290,"priority":139,"file":279,"line":109},"added_post_meta","copy_relations_on_cdp_origin",{"type":145,"name":218,"callback":292,"file":293,"line":256},"register_gutenberg_block","includes\\integrations\\class-editors.php",{"type":145,"name":253,"callback":295,"file":293,"line":272},"register_elementor_tags",{"type":153,"name":297,"callback":298,"priority":224,"file":299,"line":216},"the_content","add_internal_links","includes\\integrations\\class-seo.php",{"type":153,"name":301,"callback":302,"priority":139,"file":299,"line":303},"wpseo_schema_graph_pieces","add_yoast_schema",71,{"type":153,"name":305,"callback":306,"priority":139,"file":299,"line":307},"rank_math\u002Fschema\u002Fvalidated","add_rankmath_schema",73,{"type":153,"name":309,"callback":310,"priority":139,"file":299,"line":311},"naticore_seo_internal_links","get_internal_links",77,{"type":145,"name":218,"callback":313,"priority":224,"file":314,"line":200},"register_wc_relation_types","includes\\integrations\\class-woocommerce.php",{"type":145,"name":163,"callback":316,"priority":224,"file":314,"line":317},"add_product_meta_box",62,{"type":145,"name":269,"callback":319,"file":314,"line":209},"add_wc_settings_tab",{"type":145,"name":321,"callback":322,"priority":139,"file":314,"line":323},"woocommerce_update_product","sync_upsells",70,{"type":145,"name":321,"callback":325,"priority":139,"file":314,"line":303},"sync_cross_sells",{"type":145,"name":327,"callback":328,"priority":139,"file":314,"line":329},"woocommerce_new_order","create_order_relationships",75,{"type":153,"name":331,"callback":332,"file":314,"line":333},"naticore_query_helpers","add_query_helpers",78,{"type":145,"name":157,"callback":335,"priority":139,"file":336,"line":337},"mirror_relationship","includes\\integrations\\class-wpml.php",89,{"type":145,"name":339,"callback":340,"priority":139,"file":336,"line":341},"naticore_relation_removed","unmirror_relationship",90,{"type":145,"name":269,"callback":343,"file":336,"line":33},"add_multilingual_settings_tab",{"type":145,"name":244,"callback":345,"file":346,"line":169},"handle_export","includes\\tools\\class-import-export.php",{"type":145,"name":244,"callback":348,"file":346,"line":109},"handle_import",{"type":145,"name":174,"callback":147,"file":346,"line":350},168,{"type":145,"name":174,"callback":147,"file":346,"line":352},180,{"type":145,"name":174,"callback":147,"file":346,"line":354},205,{"type":145,"name":174,"callback":147,"file":346,"line":356},255,{"type":145,"name":244,"callback":358,"file":359,"line":213},"maybe_run_integrity_check","includes\\tools\\class-integrity.php",{"type":145,"name":174,"callback":361,"file":359,"line":362},"show_integrity_notice",333,{"type":145,"name":244,"callback":364,"file":365,"line":169},"maybe_check_orphaned","includes\\tools\\class-orphaned.php",{"type":145,"name":174,"callback":367,"file":365,"line":109},"show_orphaned_notice",{"type":145,"name":239,"callback":369,"file":370,"line":158},"add_overview_page","includes\\tools\\class-overview.php",{"type":153,"name":372,"callback":373,"priority":139,"file":370,"line":374},"set-screen-option","set_screen_option",321,{"type":145,"name":239,"callback":240,"file":376,"line":377},"includes\\tools\\class-settings-old.php",48,{"type":145,"name":244,"callback":245,"file":376,"line":379},49,{"type":145,"name":244,"callback":248,"file":376,"line":260},{"type":153,"name":382,"callback":383,"file":384,"line":233},"site_status_tests","add_integrity_test","includes\\tools\\class-site-health.php",{"type":145,"name":386,"callback":387,"file":388,"line":377},"show_user_profile","add_user_profile_metabox","includes\\user\\class-user-relations.php",{"type":145,"name":390,"callback":387,"file":388,"line":379},"edit_user_profile",{"type":145,"name":392,"callback":393,"file":388,"line":256},"personal_options_update","save_user_profile",{"type":145,"name":395,"callback":393,"file":388,"line":396},"edit_user_profile_update",51,{"type":145,"name":163,"callback":398,"file":388,"line":272},"add_post_user_metabox",{"type":145,"name":167,"callback":400,"file":388,"line":401},"save_post_user_relations",55,{"type":145,"name":171,"callback":403,"file":388,"line":317},"enqueue_admin_scripts",{"type":145,"name":405,"callback":218,"file":406,"line":407},"plugins_loaded","native-content-relationships.php",72,{"type":145,"name":409,"callback":410,"file":406,"line":411},"widgets_init","register_widget",105,[413,419,423,426,430,434,438,440,443,447,450,453],{"action":414,"nopriv":415,"callback":416,"hasNonce":417,"hasCapCheck":415,"file":164,"line":418},"naticore_search_content",false,"ajax_search_content",true,40,{"action":420,"nopriv":415,"callback":421,"hasNonce":417,"hasCapCheck":415,"file":164,"line":422},"naticore_search_products","ajax_search_products",41,{"action":424,"nopriv":415,"callback":425,"hasNonce":417,"hasCapCheck":415,"file":164,"line":192},"naticore_suggest_related","ajax_suggest_related",{"action":427,"nopriv":415,"callback":428,"hasNonce":417,"hasCapCheck":415,"file":164,"line":429},"naticore_add_relation","ajax_add_relation",43,{"action":431,"nopriv":415,"callback":432,"hasNonce":417,"hasCapCheck":415,"file":164,"line":433},"naticore_remove_relation","ajax_remove_relation",44,{"action":435,"nopriv":415,"callback":436,"hasNonce":417,"hasCapCheck":415,"file":437,"line":176},"naticore_get_relationship_types","get_relationship_types","includes\\elementor\\class-ajax-handler.php",{"action":435,"nopriv":417,"callback":436,"hasNonce":417,"hasCapCheck":415,"file":437,"line":439},47,{"action":441,"nopriv":415,"callback":147,"hasNonce":415,"hasCapCheck":415,"file":271,"line":442},"naticore_migrate_acf",283,{"action":444,"nopriv":415,"callback":445,"hasNonce":417,"hasCapCheck":415,"file":446,"line":377},"naticore_add_user_relation","add_user_relation","includes\\user\\class-user-relations-ajax.php",{"action":448,"nopriv":415,"callback":449,"hasNonce":417,"hasCapCheck":415,"file":446,"line":396},"naticore_remove_user_relation","remove_user_relation",{"action":451,"nopriv":415,"callback":452,"hasNonce":417,"hasCapCheck":415,"file":388,"line":197},"naticore_search_users","ajax_search_users",{"action":454,"nopriv":415,"callback":455,"hasNonce":417,"hasCapCheck":415,"file":388,"line":200},"naticore_search_posts_for_user","ajax_search_posts_for_user",[457,464,467,473,478,483],{"namespace":458,"route":459,"methods":460,"callback":462,"permissionCallback":463,"file":229,"line":433},"naticore\u002Fv1","\u002Fpost\u002F(?P\u003Cid>\\d+)",[461],"GET","get_relationships","permissions_check",{"namespace":458,"route":465,"methods":466,"callback":436,"permissionCallback":463,"file":229,"line":411},"\u002Ftypes",[461],{"namespace":458,"route":468,"methods":469,"callback":471,"permissionCallback":463,"file":229,"line":472},"\u002Frelationships",[470],"POST","add_relationship",116,{"namespace":458,"route":468,"methods":474,"callback":476,"permissionCallback":463,"file":229,"line":477},[475],"DELETE","remove_relationship",152,{"namespace":458,"route":479,"methods":480,"callback":481,"permissionCallback":463,"file":229,"line":482},"\u002Frelationships\u002Fbulk",[470],"bulk_relationships",188,{"namespace":458,"route":484,"methods":485,"callback":486,"permissionCallback":463,"file":229,"line":487},"\u002Frelationships\u002Fexists",[461],"relationship_exists",214,[489,493,495,498],{"tag":490,"callback":491,"file":148,"line":492},"naticore_related_posts","example_related_posts_shortcode",594,{"tag":490,"callback":494,"file":266,"line":200},"render_related_posts",{"tag":496,"callback":497,"file":266,"line":202},"naticore_related_users","render_related_users",{"tag":499,"callback":500,"file":266,"line":205},"naticore_related_terms","render_related_terms",[],{"dangerousFunctions":503,"sqlUsage":504,"outputEscaping":591,"fileOperations":11,"externalRequests":11,"nonceChecks":637,"capabilityChecks":638,"bundledLibraries":639},[],{"prepared":505,"raw":429,"locations":506},107,[507,510,511,515,518,519,521,524,526,528,530,532,534,536,538,540,542,544,546,548,549,551,553,555,557,559,561,563,565,566,568,570,572,574,576,577,579,581,583,585,588,589,590],{"file":508,"line":341,"context":509},"benchmarks\\performance-report.php","$wpdb->query() with variable interpolation",{"file":508,"line":66,"context":509},{"file":512,"line":513,"context":514},"includes\\cli\\class-wp-cli.php",84,"$wpdb->get_results() with variable interpolation",{"file":516,"line":517,"context":509},"includes\\core\\class-api.php",588,{"file":188,"line":329,"context":509},{"file":520,"line":246,"context":509},"includes\\core\\class-database.php",{"file":520,"line":522,"context":523},80,"$wpdb->get_col() with variable interpolation",{"file":520,"line":525,"context":509},85,{"file":520,"line":527,"context":523},109,{"file":520,"line":529,"context":509},181,{"file":520,"line":531,"context":509},183,{"file":520,"line":533,"context":509},185,{"file":520,"line":535,"context":509},189,{"file":520,"line":537,"context":509},191,{"file":520,"line":539,"context":509},193,{"file":520,"line":541,"context":509},195,{"file":520,"line":543,"context":509},197,{"file":520,"line":545,"context":509},199,{"file":520,"line":547,"context":509},203,{"file":520,"line":354,"context":509},{"file":520,"line":550,"context":509},207,{"file":520,"line":552,"context":509},209,{"file":520,"line":554,"context":509},211,{"file":520,"line":556,"context":509},213,{"file":520,"line":558,"context":509},229,{"file":520,"line":560,"context":509},233,{"file":520,"line":562,"context":509},237,{"file":520,"line":564,"context":509},239,{"file":520,"line":149,"context":509},{"file":520,"line":567,"context":509},245,{"file":520,"line":569,"context":509},261,{"file":520,"line":571,"context":509},265,{"file":520,"line":573,"context":509},269,{"file":346,"line":575,"context":514},117,{"file":359,"line":472,"context":514},{"file":359,"line":578,"context":509},139,{"file":359,"line":580,"context":509},247,{"file":365,"line":307,"context":582},"$wpdb->get_var() with variable interpolation",{"file":370,"line":584,"context":582},81,{"file":586,"line":587,"context":509},"uninstall.php",52,{"file":586,"line":272,"context":509},{"file":586,"line":197,"context":509},{"file":586,"line":317,"context":509},{"escaped":592,"rawEcho":593,"locations":594},554,25,[595,598,599,600,601,602,603,605,607,609,610,612,613,615,617,618,620,622,624,626,627,629,631,633,635],{"file":508,"line":596,"context":597},29,"raw output",{"file":508,"line":251,"context":597},{"file":508,"line":209,"context":597},{"file":508,"line":213,"context":597},{"file":508,"line":216,"context":597},{"file":508,"line":522,"context":597},{"file":148,"line":604,"context":597},550,{"file":164,"line":606,"context":597},128,{"file":608,"line":329,"context":597},"includes\\frontend\\class-widget.php",{"file":608,"line":333,"context":597},{"file":608,"line":611,"context":597},83,{"file":608,"line":525,"context":597},{"file":346,"line":614,"context":597},135,{"file":346,"line":616,"context":597},171,{"file":346,"line":531,"context":597},{"file":346,"line":619,"context":597},208,{"file":376,"line":621,"context":597},410,{"file":376,"line":623,"context":597},413,{"file":376,"line":625,"context":597},427,{"file":376,"line":225,"context":597},{"file":376,"line":628,"context":597},444,{"file":376,"line":630,"context":597},447,{"file":376,"line":632,"context":597},596,{"file":376,"line":634,"context":597},741,{"file":388,"line":636,"context":597},177,16,17,[],[],{"summary":642,"deductions":643},"The native-content-relationships plugin v1.0.29 exhibits a generally strong security posture, with a high percentage of properly escaped output, consistent use of prepared statements for SQL queries, and a notable absence of dangerous functions, file operations, and external HTTP requests.  The plugin also demonstrates a good number of nonce and capability checks, indicating an awareness of WordPress security best practices.\n\nHowever, a significant concern lies within the attack surface, specifically the presence of one AJAX handler that lacks authentication checks. While taint analysis shows no immediate critical or high-severity issues, an unprotected AJAX endpoint represents a potential entry point for attackers to exploit if other security measures are bypassed or if new vulnerabilities are introduced. The plugin's vulnerability history being completely clean is a positive indicator of past security diligence, but it doesn't negate the risk posed by the identified unprotected endpoint.\n\nIn conclusion, native-content-relationships is largely well-secured, but the single unprotected AJAX handler is a clear weakness that requires immediate attention. Addressing this single point of failure is crucial to maintaining its otherwise robust security.",[644],{"reason":645,"points":646},"AJAX handler without auth check",8,"2026-03-17T06:11:24.196Z",{"wat":649,"direct":662},{"assetPaths":650,"generatorPatterns":655,"scriptPaths":656,"versionParams":657},[651,652,653,654],"\u002Fwp-content\u002Fplugins\u002Fnative-content-relationships\u002Fassets\u002Fcss\u002Fstyle.css","\u002Fwp-content\u002Fplugins\u002Fnative-content-relationships\u002Fassets\u002Fjs\u002Fadmin.js","\u002Fwp-content\u002Fplugins\u002Fnative-content-relationships\u002Fassets\u002Fjs\u002Fncr-editor.js","\u002Fwp-content\u002Fplugins\u002Fnative-content-relationships\u002Fassets\u002Fjs\u002Fncr-frontend.js",[],[652,653,654],[658,659,660,661],"native-content-relationships\u002Fassets\u002Fcss\u002Fstyle.css?ver=","native-content-relationships\u002Fassets\u002Fjs\u002Fadmin.js?ver=","native-content-relationships\u002Fassets\u002Fjs\u002Fncr-editor.js?ver=","native-content-relationships\u002Fassets\u002Fjs\u002Fncr-frontend.js?ver=",{"cssClasses":663,"htmlComments":667,"htmlAttributes":668,"restEndpoints":671,"jsGlobals":673,"shortcodeOutput":679},[664,665,666],"ncr-editor","ncr-frontend","ncr-admin-wrap",[],[669,670],"data-ncr-post-id","data-ncr-relation-type",[672],"\u002Fwp-json\u002Fnative-content-relationships\u002Fv1",[674,675,676,677,678],"NATICORE_AJAX_URL","NATICORE_Admin_Config","NATICORE_Editor_Config","NATICORE_Frontend_Config","NATICORE_REST_API_URL",[]]