[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f0tIlCAzOBpdKFW4Ddqle9ivuekuSkQ0lZxIr8J2GZuY":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":21,"download_link":22,"security_score":23,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25,"vulnerabilities":26,"developer":27,"crawl_stats":24,"alternatives":35,"analysis":143,"fingerprints":371},"content-user-relations","Content User Relations","1.1.2","EdwardBock","https:\u002F\u002Fprofiles.wordpress.org\u002Fedwardbock\u002F","\u003Cp>Relate user states to your contents.\u003C\u002Fp>\n\u003Ch3>Arbitrary section\u003C\u002Fh3>\n","Relate user states to your contents.",0,1186,"2019-06-17T08:17:00.000Z","5.2.24","4.0","",[18,19,20],"metabox","relation","user","https:\u002F\u002Fgithub.com\u002Fpalasthotel\u002Fwp-content-user-relations","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-user-relations.1.1.2.zip",85,null,"2026-03-15T15:16:48.613Z",[],{"slug":28,"display_name":7,"profile_url":8,"plugin_count":29,"total_installs":30,"avg_security_score":31,"avg_patch_time_days":32,"trust_score":33,"computed_at":34},"edwardbock",22,2430,90,107,72,"2026-04-04T09:05:09.403Z",[36,61,85,98,125],{"slug":37,"name":38,"version":39,"author":40,"author_profile":41,"description":42,"short_description":43,"active_installs":44,"downloaded":45,"rating":46,"num_ratings":47,"last_updated":48,"tested_up_to":49,"requires_at_least":50,"requires_php":51,"tags":52,"homepage":58,"download_link":59,"security_score":60,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25},"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.9.4","6.0","5.6",[53,54,55,56,57],"connections","custom-post-types","many-to-many","relationships","users","http:\u002F\u002Fscribu.net\u002Fwordpress\u002Fposts-to-posts","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fposts-to-posts.1.7.8.zip",100,{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":69,"downloaded":70,"rating":71,"num_ratings":72,"last_updated":73,"tested_up_to":74,"requires_at_least":75,"requires_php":76,"tags":77,"homepage":80,"download_link":81,"security_score":82,"vuln_count":83,"unpatched_count":83,"last_vuln_date":84,"fetched_at":25},"wp-user-profiles","WP User Profiles","2.6.2","John James Jacoby","https:\u002F\u002Fprofiles.wordpress.org\u002Fjohnjamesjacoby\u002F","\u003Cp>WP User Profiles is a sophisticated way to edit users in WordPress.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Includes all functionality from WordPress itself\u003C\u002Fli>\n\u003Cli>Includes 4 top-level “Sections”\u003C\u002Fli>\n\u003Cli>Includes an “Other” section to automatically work with third-party plugins\u003C\u002Fli>\n\u003Cli>Each section includes 1 or more meta-boxes\u003C\u002Fli>\n\u003Cli>Status meta-box allows easily changing user status\u003C\u002Fli>\n\u003Cli>Works great with multisite Network and User Dashboards\u003C\u002Fli>\n\u003Cli>Works great with WP User Groups and WP User Avatars plugins\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Recommended Plugins\u003C\u002Fh4>\n\u003Cp>If you like this plugin, you’ll probably like these!\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-user-profiles\u002F\" title=\"A sophisticated way to edit users in WordPress.\" rel=\"ugc\">WP User Profiles\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-user-activity\u002F\" title=\"The best way to log activity in WordPress.\" rel=\"ugc\">WP User Activity\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-user-avatars\u002F\" title=\"Allow users to upload avatars or choose them from your media library.\" rel=\"ugc\">WP User Avatars\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-user-groups\u002F\" title=\"Group users together with taxonomies & terms.\" rel=\"ugc\">WP User Groups\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-user-signups\u002F\" title=\"The best way to manage user & site sign-ups in WordPress.\" rel=\"ugc\">WP User Signups\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-term-authors\u002F\" title=\"Authors for categories, tags, and other taxonomy terms.\" rel=\"ugc\">WP Term Authors\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-term-colors\u002F\" title=\"Pretty colors for categories, tags, and other taxonomy terms.\" rel=\"ugc\">WP Term Colors\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-term-families\u002F\" title=\"Associate taxonomy terms with other taxonomy terms.\" rel=\"ugc\">WP Term Families\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-term-icons\u002F\" title=\"Pretty icons for categories, tags, and other taxonomy terms.\" rel=\"ugc\">WP Term Icons\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-term-images\u002F\" title=\"Pretty images for categories, tags, and other taxonomy terms.\" rel=\"ugc\">WP Term Images\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-term-locks\u002F\" title=\"Protect categories, tags, and other taxonomy terms from being edited or deleted.\" rel=\"ugc\">WP Term Locks\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-term-order\u002F\" title=\"Sort taxonomy terms, your way.\" rel=\"ugc\">WP Term Order\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-term-visibility\u002F\" title=\"Visibilities for categories, tags, and other taxonomy terms.\" rel=\"ugc\">WP Term Visibility\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-media-categories\u002F\" title=\"Add categories to media & attachments.\" rel=\"ugc\">WP Media Categories\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-pretty-filters\u002F\" title=\"Makes post filters better match what's already in Media & Attachments.\" rel=\"ugc\">WP Pretty Filters\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-chosen\u002F\" title=\"Make long, unwieldy select boxes much more user-friendly.\" rel=\"ugc\">WP Chosen\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","WP User Profiles is a sophisticated way to edit users in WordPress.",300,33407,86,19,"2024-08-27T15:22:00.000Z","6.6.5","5.2","7.2",[78,18,79,20],"edit","profile","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-user-profiles\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-user-profiles.zip",68,1,"2025-04-08 00:00:00",{"slug":86,"name":87,"version":88,"author":7,"author_profile":8,"description":89,"short_description":90,"active_installs":91,"downloaded":92,"rating":11,"num_ratings":11,"last_updated":93,"tested_up_to":94,"requires_at_least":15,"requires_php":16,"tags":95,"homepage":16,"download_link":97,"security_score":60,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25},"content-relations","Content Relations","1.0.15","\u003Cp>You can add relations between posts with a new meta box in post editor.\u003C\u002Fp>\n\u003Ch3>Arbitrary section\u003C\u002Fh3>\n","Add relations between posts.",20,2274,"2026-02-16T13:36:00.000Z","6.0.11",[18,96,19],"post","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcontent-relations.1.0.15.zip",{"slug":99,"name":100,"version":101,"author":102,"author_profile":103,"description":104,"short_description":105,"active_installs":106,"downloaded":107,"rating":11,"num_ratings":11,"last_updated":108,"tested_up_to":109,"requires_at_least":110,"requires_php":16,"tags":111,"homepage":123,"download_link":124,"security_score":23,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25},"slimfaq","SlimFAQ","1.1.1","Consti","https:\u002F\u002Fprofiles.wordpress.org\u002Fconsti\u002F","\u003Cp>\u003Ca href=\"https:\u002F\u002Fslimfaq.com\" rel=\"nofollow ugc\">SlimFAQ\u003C\u002Fa> provides a simple FAQ platform and great integration with Intercom and as a sidebar on WordPress.\u003C\u002Fp>\n\u003Cp>This plugin generates the Javascript install code to integrate all of this functionality into your WordPress-powered web app.\u003C\u002Fp>\n\u003Cp>To use the plugin you must have a \u003Ca href=\"https:\u002F\u002Fslimfaq.com\" rel=\"nofollow ugc\">SlimFAQ\u003C\u002Fa> account. You can \u003Ca href=\"https:\u002F\u002Fslimfaq.com\" rel=\"nofollow ugc\">sign up for free\u003C\u002Fa> and add a great FAQ to your WordPress web app.\u003C\u002Fp>\n\u003Cp>This plugin is fully compatible with the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fintercom\" rel=\"ugc\">Official Intercom WordPress plugin\u003C\u002Fa>.\u003C\u002Fp>\n","Easy integration of the SlimFAQ sidebar with optional Intercom integration.",10,1259,"2016-06-18T08:39:00.000Z","4.5.33","3.8",[112,113,114,115,116,117,118,119,120,121,99,122,57],"contact-form","crm","customer-relationship-management","email","faq","feedback","intercom","intercom-io","messaging","sidebar","support","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fslimfaq","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fslimfaq.zip",{"slug":126,"name":127,"version":128,"author":129,"author_profile":130,"description":131,"short_description":132,"active_installs":11,"downloaded":133,"rating":11,"num_ratings":11,"last_updated":134,"tested_up_to":49,"requires_at_least":135,"requires_php":136,"tags":137,"homepage":141,"download_link":142,"security_score":60,"vuln_count":11,"unpatched_count":11,"last_vuln_date":24,"fetched_at":25},"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.",351,"2026-02-21T18:45:00.000Z","5.0","7.4",[138,139,56,140,57],"content","posts","terms","https:\u002F\u002Fchetanupare.github.io\u002FWP-Native-Content-Relationships\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnative-content-relationships.1.0.29.zip",{"attackSurface":144,"codeSignals":211,"taintFlows":275,"riskAssessment":357,"analyzedAt":370},{"hooks":145,"ajaxHandlers":207,"restRoutes":208,"shortcodes":209,"cronEvents":210,"entryPointCount":11,"unprotectedCount":11},[146,151,154,159,162,165,168,171,174,178,182,185,189,191,195,199,203],{"type":147,"name":148,"callback":148,"file":149,"line":150},"action","init","inc\\ajax.php",30,{"type":147,"name":148,"callback":148,"file":152,"line":153},"inc\\migrate\\migrate-init.php",14,{"type":147,"name":155,"callback":156,"priority":106,"file":157,"line":158},"add_meta_boxes","add_meta_box","inc\\post-meta-box.php",40,{"type":147,"name":160,"callback":160,"file":157,"line":161},"save_post",41,{"type":147,"name":163,"callback":163,"file":164,"line":153},"the_post","inc\\post.php",{"type":147,"name":148,"callback":148,"file":166,"line":167},"inc\\settings.php",23,{"type":147,"name":169,"callback":169,"file":166,"line":170},"admin_menu",24,{"type":147,"name":148,"callback":148,"file":172,"line":173},"inc\\user-profile.php",21,{"type":147,"name":175,"callback":176,"file":172,"line":177},"admin_enqueue_scripts","user_profile_js",27,{"type":147,"name":179,"callback":180,"file":172,"line":181},"show_user_profile","render",32,{"type":147,"name":183,"callback":180,"file":172,"line":184},"edit_user_profile",34,{"type":147,"name":186,"callback":187,"file":172,"line":188},"personal_options_update","save_relation",36,{"type":147,"name":190,"callback":187,"file":172,"line":158},"edit_user_profile_update",{"type":147,"name":192,"callback":192,"priority":106,"file":193,"line":194},"delete_user","inc\\user.php",9,{"type":147,"name":196,"callback":196,"file":197,"line":198},"pre_get_posts","inc\\wp-post-query-extension.php",28,{"type":200,"name":201,"callback":201,"priority":106,"file":197,"line":202},"filter","posts_where",29,{"type":147,"name":204,"callback":205,"file":206,"line":167},"pre_user_query","manipulate","inc\\wp-user-query-extension.php",[],[],[],[],{"dangerousFunctions":212,"sqlUsage":213,"outputEscaping":238,"fileOperations":11,"externalRequests":11,"nonceChecks":11,"capabilityChecks":273,"bundledLibraries":274},[],{"prepared":214,"raw":194,"locations":215},5,[216,220,222,224,226,228,230,232,235],{"file":217,"line":218,"context":219},"inc\\database\\db.php",15,"$wpdb->get_row() with variable interpolation",{"file":217,"line":32,"context":221},"$wpdb->get_results() with variable interpolation",{"file":217,"line":223,"context":221},126,{"file":217,"line":225,"context":221},153,{"file":217,"line":227,"context":221},164,{"file":217,"line":229,"context":221},177,{"file":217,"line":231,"context":221},190,{"file":217,"line":233,"context":234},205,"$wpdb->get_var() with variable interpolation",{"file":236,"line":237,"context":221},"inc\\database\\query.php",106,{"escaped":167,"rawEcho":239,"locations":240},16,[241,244,246,248,250,252,254,256,258,260,262,264,265,267,269,271],{"file":166,"line":242,"context":243},219,"raw output",{"file":166,"line":245,"context":243},241,{"file":166,"line":247,"context":243},273,{"file":166,"line":249,"context":243},297,{"file":166,"line":251,"context":243},301,{"file":166,"line":253,"context":243},314,{"file":166,"line":255,"context":243},345,{"file":166,"line":257,"context":243},349,{"file":166,"line":259,"context":243},362,{"file":166,"line":261,"context":243},391,{"file":172,"line":263,"context":243},83,{"file":172,"line":32,"context":243},{"file":172,"line":266,"context":243},113,{"file":172,"line":268,"context":243},139,{"file":172,"line":270,"context":243},148,{"file":172,"line":272,"context":243},149,3,[],[276,310,346],{"entryPoint":277,"graph":278,"unsanitizedCount":308,"severity":309},"render_settings (inc\\settings.php:184)",{"nodes":279,"edges":302},[280,285,289,294,297,300],{"id":281,"type":282,"label":283,"file":166,"line":284},"n0","source","$_GET[?]",188,{"id":286,"type":287,"label":288,"file":166,"line":284},"n1","transform","→ renderTypeStates()",{"id":290,"type":291,"label":292,"file":166,"line":251,"wp_function":293},"n2","sink","echo() [XSS]","echo",{"id":295,"type":282,"label":283,"file":166,"line":296},"n3",191,{"id":298,"type":287,"label":299,"file":166,"line":296},"n4","→ renderStateTypes()",{"id":301,"type":291,"label":292,"file":166,"line":257,"wp_function":293},"n5",[303,305,306,307],{"from":281,"to":286,"sanitized":304},false,{"from":286,"to":290,"sanitized":304},{"from":295,"to":298,"sanitized":304},{"from":298,"to":301,"sanitized":304},2,"medium",{"entryPoint":311,"graph":312,"unsanitizedCount":273,"severity":309},"\u003Csettings> (inc\\settings.php:0)",{"nodes":313,"edges":337},[314,316,317,320,322,326,327,329,331,333,335],{"id":281,"type":282,"label":315,"file":166,"line":237},"$_POST (x2)",{"id":286,"type":291,"label":292,"file":166,"line":251,"wp_function":293},{"id":290,"type":282,"label":318,"file":166,"line":319},"$_POST",75,{"id":295,"type":287,"label":321,"file":166,"line":319},"→ setPostTypesEnabled()",{"id":298,"type":291,"label":323,"file":166,"line":324,"wp_function":325},"update_option() [Settings Manipulation]",47,"update_option",{"id":301,"type":282,"label":283,"file":166,"line":284},{"id":328,"type":287,"label":288,"file":166,"line":284},"n6",{"id":330,"type":291,"label":292,"file":166,"line":251,"wp_function":293},"n7",{"id":332,"type":282,"label":283,"file":166,"line":296},"n8",{"id":334,"type":287,"label":299,"file":166,"line":296},"n9",{"id":336,"type":291,"label":292,"file":166,"line":257,"wp_function":293},"n10",[338,340,341,342,343,344,345],{"from":281,"to":286,"sanitized":339},true,{"from":290,"to":295,"sanitized":304},{"from":295,"to":298,"sanitized":304},{"from":301,"to":328,"sanitized":304},{"from":328,"to":330,"sanitized":304},{"from":332,"to":334,"sanitized":304},{"from":334,"to":336,"sanitized":304},{"entryPoint":347,"graph":348,"unsanitizedCount":83,"severity":356},"init (inc\\settings.php:66)",{"nodes":349,"edges":353},[350,351,352],{"id":281,"type":282,"label":318,"file":166,"line":319},{"id":286,"type":287,"label":321,"file":166,"line":319},{"id":290,"type":291,"label":323,"file":166,"line":324,"wp_function":325},[354,355],{"from":281,"to":286,"sanitized":304},{"from":286,"to":290,"sanitized":304},"low",{"summary":358,"deductions":359},"The \"content-user-relations\" plugin v1.1.2 presents a mixed security posture.  On the positive side, it boasts a small attack surface with no direct AJAX handlers, REST API routes, shortcodes, or cron events accessible. The absence of file operations and external HTTP requests further reduces potential vulnerabilities.  However, concerns arise from the code analysis regarding SQL queries and output escaping. A significant portion of SQL queries are not using prepared statements, which can lead to SQL injection vulnerabilities if not handled carefully. Similarly, nearly half of the output operations are not properly escaped, potentially exposing the application to cross-site scripting (XSS) attacks.\n\nThe taint analysis, while limited in scope, shows flows with unsanitized paths. Although no critical or high severity issues were flagged here, it indicates potential areas for deeper investigation as unsanitized paths are a common precursor to vulnerabilities.  The plugin's vulnerability history is remarkably clean, with no recorded CVEs. This suggests either a history of diligent security practices or a lack of extensive security audits.  While the lack of known vulnerabilities is a strength, the identified code-level concerns (raw SQL, unescaped output, and unsanitized paths) are significant weaknesses that could be exploited.  The absence of nonce checks and capability checks on potential entry points is also a notable omission that increases risk.\n\nIn conclusion, the plugin has strengths in its limited attack surface and clean historical record. However, critical code-level weaknesses in SQL handling and output escaping, coupled with the absence of security best practices like nonce and capability checks on potential interaction points, present real risks.  Further analysis and remediation of these specific code issues are recommended to improve its overall security.",[360,362,364,366,368],{"reason":361,"points":218},"SQL queries not using prepared statements",{"reason":363,"points":106},"Output not properly escaped",{"reason":365,"points":106},"Flows with unsanitized paths (taint analysis)",{"reason":367,"points":106},"Missing nonce checks",{"reason":369,"points":214},"Limited capability checks","2026-03-17T06:27:38.070Z",{"wat":372,"direct":381},{"assetPaths":373,"generatorPatterns":376,"scriptPaths":377,"versionParams":378},[374,375],"\u002Fwp-content\u002Fplugins\u002Fcontent-user-relations\u002Fcss\u002Fmeta-box.css","\u002Fwp-content\u002Fplugins\u002Fcontent-user-relations\u002Fjs\u002Fmeta-box.js",[],[375],[379,380],"content-user-relations\u002Fcss\u002Fmeta-box.css?ver=","content-user-relations\u002Fjs\u002Fmeta-box.js?ver=",{"cssClasses":382,"htmlComments":385,"htmlAttributes":387,"restEndpoints":389,"jsGlobals":390,"shortcodeOutput":392},[383,384],"cur-app","cur-meta-box-wrapper",[386],"\u003C!-- cur-app -->",[388],"data-cur-id",[],[391],"ContentUserRelations_MetaBox",[]]