{"id":277805,"date":"2026-02-03T06:57:00","date_gmt":"2026-02-03T06:57:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/native-content-relationships\/"},"modified":"2026-02-21T18:45:17","modified_gmt":"2026-02-21T18:45:17","slug":"native-content-relationships","status":"publish","type":"plugin","link":"https:\/\/scn.wordpress.org\/plugins\/native-content-relationships\/","author":17409728,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.29","stable_tag":"1.0.29","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Native Content Relationships","header_author":"Chetan Upare","header_description":"A native content relationship system for WordPress. Relate posts, pages, custom post types, and media with semantic relationship types.","assets_banners_color":"6fb6d9","last_updated":"2026-02-21 18:45:17","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/chetanupare","header_plugin_uri":"https:\/\/chetanupare.github.io\/WP-Native-Content-Relationships\/","header_author_uri":"https:\/\/github.com\/chetanupare","rating":0,"author_block_rating":0,"active_installs":0,"downloads":395,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.10":{"tag":"1.0.10","author":"chetanupare","date":"2026-02-03 16:01:27"},"1.0.12":{"tag":"1.0.12","author":"chetanupare","date":"2026-02-03 18:43:10"},"1.0.13":{"tag":"1.0.13","author":"chetanupare","date":"2026-02-09 13:21:05"},"1.0.14":{"tag":"1.0.14","author":"chetanupare","date":"2026-02-11 06:27:11"},"1.0.15":{"tag":"1.0.15","author":"chetanupare","date":"2026-02-11 06:43:28"},"1.0.16":{"tag":"1.0.16","author":"chetanupare","date":"2026-02-11 06:54:05"},"1.0.17":{"tag":"1.0.17","author":"chetanupare","date":"2026-02-11 07:08:57"},"1.0.18":{"tag":"1.0.18","author":"chetanupare","date":"2026-02-11 07:22:30"},"1.0.19":{"tag":"1.0.19","author":"chetanupare","date":"2026-02-11 07:24:15"},"1.0.20":{"tag":"1.0.20","author":"chetanupare","date":"2026-02-11 07:31:00"},"1.0.23":{"tag":"1.0.23","author":"chetanupare","date":"2026-02-11 09:36:49"},"1.0.24":{"tag":"1.0.24","author":"chetanupare","date":"2026-02-13 17:07:16"},"1.0.25":{"tag":"1.0.25","author":"chetanupare","date":"2026-02-13 18:39:11"},"1.0.26":{"tag":"1.0.26","author":"chetanupare","date":"2026-02-13 18:54:14"},"1.0.27":{"tag":"1.0.27","author":"chetanupare","date":"2026-02-13 19:12:19"},"1.0.28":{"tag":"1.0.28","author":"chetanupare","date":"2026-02-13 19:24:18"},"1.0.29":{"tag":"1.0.29","author":"chetanupare","date":"2026-02-21 18:45:17"},"1.0.5":{"tag":"1.0.5","author":"chetanupare","date":"2026-02-03 06:57:04"},"1.0.6":{"tag":"1.0.6","author":"chetanupare","date":"2026-02-03 07:41:40"},"1.0.7":{"tag":"1.0.7","author":"chetanupare","date":"2026-02-03 07:45:20"},"1.0.8":{"tag":"1.0.8","author":"chetanupare","date":"2026-02-03 08:06:57"},"1.0.9":{"tag":"1.0.9","author":"chetanupare","date":"2026-02-03 08:12:13"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3452657,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3452657,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3452648,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3452648,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":{"naticore\/related-posts":{"name":"naticore\/related-posts","title":"Related Content"}},"tagged_versions":["1.0.10","1.0.12","1.0.13","1.0.14","1.0.15","1.0.16","1.0.17","1.0.18","1.0.19","1.0.20","1.0.23","1.0.24","1.0.25","1.0.26","1.0.27","1.0.28","1.0.29","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings screen","2":"Relationship overview","3":"Post editor relationship UI","4":"User profile relationships","5":"Term editor relationships"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[529,166,4676,1901,1917],"plugin_category":[57],"plugin_contributors":[255124],"plugin_business_model":[],"class_list":["post-277805","plugin","type-plugin","status-publish","hentry","plugin_tags-content","plugin_tags-posts","plugin_tags-relationships","plugin_tags-terms","plugin_tags-users","plugin_category-taxonomy","plugin_contributors-chetanupare","plugin_committers-chetanupare"],"banners":{"banner":"https:\/\/ps.w.org\/native-content-relationships\/assets\/banner-772x250.png?rev=3452648","banner_2x":"https:\/\/ps.w.org\/native-content-relationships\/assets\/banner-1544x500.png?rev=3452648","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/native-content-relationships\/assets\/icon-128x128.png?rev=3452657","icon_2x":"https:\/\/ps.w.org\/native-content-relationships\/assets\/icon-256x256.png?rev=3452657","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>WordPress does not provide a native way to model real relationships between content items such as posts, users, and terms.<br \/>\nMost solutions rely on post meta or taxonomies, which become difficult to query, scale, and maintain over time.<\/p>\n\n<p>If you've outgrown ACF relationship fields or post meta arrays, Native Content Relationships introduces a <strong>structured relationship layer<\/strong> for WordPress that allows you to define meaningful, queryable, and scalable relationships between content \u2014 without relying on hacks or editor-specific solutions.<\/p>\n\n<p>This plugin is designed to be <strong>core-friendly, developer-focused, and future-proof<\/strong>, built specifically for developers who have hit performance walls.<\/p>\n\n<h3>What This Plugin Solves<\/h3>\n\n<p>\u2022 Many-to-many relationships between content<br \/>\n\u2022 Clean querying without meta or taxonomy abuse<br \/>\n\u2022 Long-term maintainability and portability<br \/>\n\u2022 Cleanly handles headless and REST WordPress setups<\/p>\n\n<h3>Key Features<\/h3>\n\n<p>\u2022 Relationships between posts, users, and terms<br \/>\n\u2022 One-way or bidirectional relationships<br \/>\n\u2022 Indexed database table for fast queries<br \/>\n\u2022 Clean PHP API for managing relationships<br \/>\n\u2022 WP_Query integration<br \/>\n\u2022 REST API support with inline relations<br \/>\n\u2022 Multilingual-ready (WPML \/ Polylang)<br \/>\n\u2022 WooCommerce optional integration<br \/>\n\u2022 Editor- and theme-agnostic<\/p>\n\n<h3>Supported Relationship Types<\/h3>\n\n<p>\u2022 Post \u2194 Post<br \/>\n\u2022 Post \u2194 User<br \/>\n\u2022 Post \u2194 Term<br \/>\n\u2022 User \u2194 Post<br \/>\n\u2022 Term \u2194 Post<\/p>\n\n<h3>Common Use Cases<\/h3>\n\n<p><strong>Posts<\/strong>\n\u2022 Products \u2192 Accessories<br \/>\n\u2022 Courses \u2192 Lessons<br \/>\n\u2022 Articles \u2192 Related content<\/p>\n\n<p><strong>Users<\/strong>\n\u2022 Favorite posts<br \/>\n\u2022 Bookmarked content<br \/>\n\u2022 Multiple authors or contributors<\/p>\n\n<p><strong>Terms<\/strong>\n\u2022 Featured categories<br \/>\n\u2022 Curated collections<br \/>\n\u2022 Semantic grouping beyond default taxonomies<\/p>\n\n<h3>Admin Interface<\/h3>\n\n<p>\u2022 Relationship management in post editor<br \/>\n\u2022 User profile relationship management<br \/>\n\u2022 Term editor relationship support<br \/>\n\u2022 AJAX-powered search for posts, users, and terms<br \/>\n\u2022 Modern UI matching WordPress admin style<\/p>\n\n<h3>Stability &amp; Backward Compatibility<\/h3>\n\n<p><strong>Schema stable from 1.x onward. Backward compatibility guaranteed.<\/strong><\/p>\n\n<p>We lock the core before expanding. Ecosystem and agency confidence depend on it.<\/p>\n\n<ul>\n<li><strong>Database schema stability<\/strong> \u2014 The relationship table and <code>NCR_SCHEMA_VERSION<\/code> are stable in the 1.x line. Any future schema change will be additive (new columns\/indexes) or run through a documented migration; no breaking table or column renames without a major version.<\/li>\n<li><strong>Backward compatibility promise<\/strong> \u2014 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.<\/li>\n<li><strong>Versioning policy<\/strong> \u2014 1.x = stable core. Minor\/patch 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.<\/li>\n<li><strong>Namespacing discipline<\/strong> \u2014 One internal prefix: <code>ncr_<\/code> (functions, hooks, options), <code>NCR_<\/code> (classes, constants), <code>ncr-<\/code> (CSS\/IDs\/handles). No new alternate prefixes; documented and consistent so extensions and ecosystem plugins can rely on a stable surface.<\/li>\n<\/ul>\n\n<h3>Architected for Performance &amp; Scale<\/h3>\n\n<p>Native Content Relationships is built for high-volume enterprise and headless WordPress sites. Forget the performance bottleneck of post-meta.<\/p>\n\n<ul>\n<li><strong>Index Optimization<\/strong>: Built on composite covering indexes (<code>type_lookup<\/code>) and a smart query planner optimized for performance.<\/li>\n<li><strong>Micro-Optimized Validations<\/strong>: SQL-native validations ensure sub-2ms P95 latency even at 1M+ rows.<\/li>\n<li><strong>Object Cache Integration<\/strong>: Full compatibility with object cache through group isolation, targeted relationship cache invalidation, and bulk priming strategies.<\/li>\n<li><strong>Performance Diagnostics<\/strong>: Includes a powerful CLI diagnostic utility to check and fix integrity without UI bloat.<\/li>\n<\/ul>\n\n<p><strong>Benchmarks confirm stable performance with 1,000,000+ relationship rows under InnoDB.<\/strong>\n<a href=\"https:\/\/github.com\/chetanupare\/WP-Native-Content-Relationships\/blob\/main\/docs\/PERFORMANCE.md\">View Full Performance Report<\/a><\/p>\n\n<h3>ACF Migration (Escape Meta Technical Debt)<\/h3>\n\n<p>If you store relationships in <strong>Advanced Custom Fields<\/strong> relationship fields or standard Post Meta, you can safely migrate to Native Content Relationships to unlock immediate performance and querying benefits.<\/p>\n\n<p>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.\nCheck out the dedicated one-time migration guide here: <a href=\"https:\/\/github.com\/chetanupare\/WP-Native-Content-Relationships\/blob\/main\/docs\/migration\/from-acf.md\">docs\/migration\/from-acf.md<\/a><\/p>\n\n<h3>Advanced Developer APIs<\/h3>\n\n<p>Built to be a complete content relationship modeling engine:<\/p>\n\n<ul>\n<li><strong>Relationship Type Registration API<\/strong>: Programmatic type registration for custom relationships, with schema validation and strict directional logic.<\/li>\n<li><strong>Relationship Constraints<\/strong>: Declare relationship constraints like 1:1, 1:N, or M:N and strictly enforce maximum capacities and duplicates. <\/li>\n<li><strong>Advanced Query Parameters<\/strong>: Inject the <code>content_relation<\/code> argument directly into your <code>WP_Query<\/code> with parameters specifically designed for advanced use cases: include multiple relationship types, apply exclusionary rules, combine <code>OR<\/code>\/<code>AND<\/code> relations, or filter by minimum\/maximum thresholds. <\/li>\n<li><strong>Bulk Operations API<\/strong>: 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.<\/li>\n<li><strong>Lightweight Metadata<\/strong> Add context to relationships natively using relationship metadata (allow order rankings, contexts, descriptions, tracking data, etc.) via a dedicated relationship metadata registry and table.<\/li>\n<li><strong>Graph Utility Layer<\/strong> An ultra-minimal set of APIs and WP-CLI commands that generate graph diagnostics\u2014useful for acquiring relationship counts, calculating the most connected posts, isolating orphaned items, and running background integrity checks.<\/li>\n<\/ul>\n\n<h3>Headless REST Readiness<\/h3>\n\n<p>For decoupled and highly dynamic solutions, Native Content Relationships includes powerful headless optimizations:<\/p>\n\n<p>Append <code>?naticore_relations=1<\/code> or <code>?_embed=relations<\/code> into your standard core endpoint fetches (e.g., <code>wp\/v2\/posts<\/code>) to embed related data inside your response arrays instantly, minimizing round trips.<\/p>\n\n<h3>Integrations<\/h3>\n\n<p>\u2022 WooCommerce (product relationships)<br \/>\n\u2022 WPML \/ Polylang (relationship mirroring)<br \/>\n\u2022 Elementor (dynamic content support)<br \/>\n\u2022 Gutenberg (related content block)<br \/>\n\u2022 Advanced Custom Fields (one-time migration tool)<\/p>\n\n<h3>Page Builder Integration<\/h3>\n\n<p><strong>Elementor:<\/strong>\n* <strong>Compatible with:<\/strong> Elementor 2.0+\n* <strong>Features:<\/strong> Comprehensive Dynamic Tags suite for relationships\n* <strong>Auto-detected:<\/strong> Yes (no configuration needed)\n* <strong>Tested up to:<\/strong> Elementor 3.20<\/p>\n\n<p><strong>Elementor Dynamic Tags:<\/strong>\n* <strong>Related Posts<\/strong>: Display related posts with customizable output formats\n* <strong>Related Users<\/strong>: Display users with relationships (favorites, bookmarks, etc.)\n* <strong>Related Terms<\/strong>: Display taxonomy terms with relationships\n* <strong>Flexible Output<\/strong>: IDs, titles, links, avatars, count-only options\n* <strong>Direction Support<\/strong>: Both outgoing and incoming relationships\n* <strong>Native Controls<\/strong>: Relationship type selector with validation<\/p>\n\n<p><strong>Gutenberg:<\/strong>\n* <strong>Compatible with:<\/strong> WordPress 5.0+ (Core)\n* <strong>Features:<\/strong> \"Related Content\" block with relationship filtering\n* <strong>Always available:<\/strong> Yes (core WordPress feature)\n* <strong>Tested up to:<\/strong> WordPress 6.5<\/p>\n\n<h4>Shortcodes<\/h4>\n\n<p>Use these in posts, pages, or widgets. They use the current post ID when not specified.<\/p>\n\n<p><em>Related posts (default: type=related_to, limit=5):<\/em>\n[naticore_related_posts type=\"related_to\" limit=\"5\" order=\"date\" layout=\"list\" title=\"Related Content\" class=\"my-class\"]<\/p>\n\n<p><em>Related users (default: type=authored_by):<\/em>\n[naticore_related_users type=\"authored_by\" limit=\"10\" order=\"name\" layout=\"list\" title=\"Authors\"]<\/p>\n\n<p><em>Related terms (default: type=categorized_as):<\/em>\n[naticore_related_terms type=\"categorized_as\" limit=\"5\" order=\"name\" layout=\"grid\" title=\"Categories\"]<\/p>\n\n<p><strong>Attributes (all shortcodes):<\/strong>\n* type \u2013 Relationship type slug (e.g. related_to, parent_of, authored_by, categorized_as)\n* limit \u2013 Number of items (1\u201350), default 5\n* order \u2013 Sort: date, title (posts) or name (users\/terms)\n* post_id \u2013 Post ID; omit to use current post\n* layout \u2013 list or grid\n* title \u2013 Heading text above the list (optional)\n* class \u2013 Extra CSS class(es) for the wrapper\n* show_thumbnail \u2013 1 to show post thumbnail (posts shortcode only), default 0\n* excerpt_length \u2013 Number of words for excerpt (0 = hide), default 0<\/p>\n\n<h4>Widget<\/h4>\n\n<p><strong>Related Content (NCR)<\/strong> is available under Appearance \u2192 Widgets. Add it to any sidebar or widget area.<\/p>\n\n<ul>\n<li><strong>Title<\/strong> \u2013 Optional widget title (leave blank to use the shortcode\u2019s default \u201cRelated Content\u201d heading)<\/li>\n<li><strong>Relationship type<\/strong> \u2013 e.g. Related To, Parent Of, Depends On<\/li>\n<li><strong>Number of items<\/strong> \u2013 1\u201350<\/li>\n<li><strong>Order by<\/strong> \u2013 Date or Title<\/li>\n<li><strong>Post ID (optional)<\/strong> \u2013 Leave 0 to use the current post; set a post ID to show relations for a specific post<\/li>\n<\/ul>\n\n<p>Output matches the shortcode (same markup and styles when the shortcode CSS is enqueued).<\/p>\n\n<h3>Developer Guide (Advanced)<\/h3>\n\n<p>This section is intended for developers who want programmatic control.<\/p>\n\n<h4>Core API<\/h4>\n\n<p>Add a relationship:\n    wp_add_relation( $from_id, $to_id, $type );<\/p>\n\n<p>Get related items:\n    wp_get_related( $id, $type );<\/p>\n\n<p>Check relationship:\n    wp_is_related( $from_id, $to_id, $type );<\/p>\n\n<p>Remove relationship:\n    wp_remove_relation( $from_id, $to_id, $type );<\/p>\n\n<h4>WP_Query Integration<\/h4>\n\n<p>new WP_Query( array(\n'post_type' =&gt; 'post',\n'content_relation' =&gt; array(\n'post_id' =&gt; 123,\n'type' =&gt; 'related_to',\n),\n) );<\/p>\n\n<h4>REST API<\/h4>\n\n<p>Endpoints available under:\n    \/wp-json\/naticore\/v1\/<\/p>\n\n<p>\u2022 Create relationships<br \/>\n\u2022 Fetch related content<br \/>\n\u2022 Delete relationships<\/p>\n\n<p><strong>Embed relations in core REST responses (headless):<\/strong><br \/>\nAdd <code>?naticore_relations=1<\/code> to any core resource request to include a <code>naticore_relations<\/code> array in the response. Works with:\n\u2022 <code>GET \/wp-json\/wp\/v2\/posts\/&lt;id&gt;?naticore_relations=1<\/code>\n\u2022 <code>GET \/wp-json\/wp\/v2\/users\/&lt;id&gt;?naticore_relations=1<\/code>\n\u2022 <code>GET \/wp-json\/wp\/v2\/categories\/&lt;id&gt;?naticore_relations=1<\/code> (and other taxonomies)\nEach relation item includes <code>to_id<\/code>, <code>to_type<\/code>, <code>type<\/code>, and optional <code>title<\/code>\/<code>display_name<\/code>\/<code>name<\/code>. Opt-in only so default requests stay fast.<\/p>\n\n<h4>Hooks &amp; Filters<\/h4>\n\n<p>Actions:\n\u2022 <code>naticore_relation_added<\/code>\n\u2022 <code>naticore_relation_removed<\/code>\n\u2022 <code>naticore_after_duplicate_post<\/code> \u2013 fired after copying relations from one post to another (args: from_post_id, to_post_id, result array)<\/p>\n\n<p>Filters:\n\u2022 <code>naticore_relation_is_allowed<\/code>\n\u2022 <code>naticore_get_related_args<\/code><\/p>\n\n<p><strong>Duplicate post:<\/strong> Use helper <code>naticore_copy_relations( $from_post_id, $to_post_id, $relation_types = null )<\/code> to copy relationships when duplicating a post. Returns array with keys <code>copied<\/code>, <code>skipped<\/code>, <code>errors<\/code>. Out-of-the-box integration: Yoast Duplicate Post, Post Duplicator (metaphorcreations), Copy &amp; Delete Posts (Inisev).<\/p>\n\n<h4>Elementor Integration<\/h4>\n\n<p>This plugin provides comprehensive Elementor Dynamic Tags for displaying relationships in Elementor-powered designs.<\/p>\n\n<p><strong>Available Dynamic Tags:<\/strong><\/p>\n\n<ul>\n<li><p><strong>Related Posts<\/strong> (ncr-related-posts)<\/p>\n\n<ul>\n<li>Display posts related to the current post<\/li>\n<li>Supports all post-to-post relationship types<\/li>\n<li>Output formats: IDs, titles, links, count<\/li>\n<li>Direction control: outgoing\/incoming<\/li>\n<\/ul><\/li>\n<li><p><strong>Related Users<\/strong> (ncr-related-users)<\/p>\n\n<ul>\n<li>Display users with relationships to posts<\/li>\n<li>Supports user relationship types (favorites, bookmarks, etc.)<\/li>\n<li>Output formats: IDs, names, emails, avatars, profile links<\/li>\n<li>Direction control: posts-to-users\/users-to-posts<\/li>\n<\/ul><\/li>\n<li><p><strong>Related Terms<\/strong> (ncr-related-terms)<\/p>\n\n<ul>\n<li>Display taxonomy terms with relationships<\/li>\n<li>Supports term relationship types (categories, tags, etc.)<\/li>\n<li>Output formats: IDs, names, slugs, archive links<\/li>\n<li>Direction control: posts-to-terms\/terms-to-posts<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p><strong>Usage Examples:<\/strong><\/p>\n\n<p><em>Display related post IDs:<\/em>\n    <code>[ncr-related-posts relationship_type=\"related_to\" output_format=\"ids\" limit=\"5\"]<\/code><\/p>\n\n<p><em>Display user avatars:<\/em>\n    <code>[ncr-related-users relationship_type=\"favorite_posts\" output_format=\"avatar_images\" avatar_size=\"48\"]<\/code><\/p>\n\n<p><em>Display term links:<\/em>\n    <code>[ncr-related-terms relationship_type=\"categorized_as\" output_format=\"term_links\" limit=\"10\"]<\/code><\/p>\n\n<p><em>Get count of related items:<\/em>\n    <code>[ncr-related-posts relationship_type=\"related_to\" output_format=\"count\"]<\/code><\/p>\n\n<p><strong>Advanced Features:<\/strong>\n- <strong>Context-aware<\/strong>: Automatically detects current post, user, or term context\n- <strong>Fallback content<\/strong>: Display custom text when no relationships found\n- <strong>Pagination support<\/strong>: Limit results for performance\n- <strong>Ordering options<\/strong>: Sort by date, title, or random\n- <strong>Multi-language<\/strong>: Works with WPML\/Polylang translations<\/p>\n\n<p><strong>Integration Benefits:<\/strong>\n- <strong>Native Elementor experience<\/strong>: Tags appear in Elementor's Dynamic Tags panel\n- <strong>No templates forced<\/strong>: Users control output format and styling\n- <strong>Performance optimized<\/strong>: Uses cached relationship data\n- <strong>Optional dependency<\/strong>: Only loads when Elementor is active<\/p>\n\n<h4>WP-CLI<\/h4>\n\n<p>\u2022 List relationships<br \/>\n\u2022 Add \/ remove relationships<br \/>\n\u2022 Integrity checks<\/p>\n\n<h3>Contributing<\/h3>\n\n<p>Contributions are welcome.<br \/>\nGitHub: https:\/\/github.com\/chetanupare\/WP-Native-Content-Relationships<\/p>\n\n<h3>License<\/h3>\n\n<p>GPLv2 or later<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/native-content-relationships\/<\/code><\/li>\n<li>Activate the plugin from the Plugins menu<\/li>\n<li>Database tables are created automatically<\/li>\n<li>Configure settings under <strong>Settings \u2192 Content Relationships<\/strong><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20woocommerce%20linked%20products%3F\"><h3>Does this replace WooCommerce linked products?<\/h3><\/dt>\n<dd><p>No. It complements WooCommerce and can optionally sync relationships.<\/p><\/dd>\n<dt id=\"can%20i%20migrate%20from%20acf%20relationship%20fields%3F\"><h3>Can I migrate from ACF relationship fields?<\/h3><\/dt>\n<dd><p>Yes. A one-time migration tool is included.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20page%20builders%3F\"><h3>Does this work with page builders?<\/h3><\/dt>\n<dd><p>Yes. The plugin is editor-agnostic and works with Elementor, Gutenberg, and others.<\/p><\/dd>\n<dt id=\"does%20this%20support%20users%20and%20terms%3F\"><h3>Does this support users and terms?<\/h3><\/dt>\n<dd><p>Yes. Full support for post\u2013user and post\u2013term relationships is included.<\/p><\/dd>\n<dt id=\"does%20this%20send%20data%20externally%3F\"><h3>Does this send data externally?<\/h3><\/dt>\n<dd><p>No. All data is stored locally in your WordPress database.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.29<\/h4>\n\n<ul>\n<li>Feature: Added Lightweight Relationship Metadata API (<code>wp_content_relationmeta<\/code> table).<\/li>\n<li>Feature: Added Advanced WP_Query arguments (<code>content_relation<\/code> with nested OR\/AND logic and type exclusions).<\/li>\n<li>Update: Improved documentation highlighting enterprise-grade features and ACF migration.<\/li>\n<\/ul>\n\n<h4>1.0.28<\/h4>\n\n<ul>\n<li>WP_Query: Registered query vars, documented relation args, added ncr_skip_relationship_query filter for core migration path.<\/li>\n<\/ul>\n\n<h4>1.0.27<\/h4>\n\n<ul>\n<li>Code quality: PHPCS compliance (WordPress coding standards); 0 errors.<\/li>\n<\/ul>\n\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>New: Playground Live Preview blueprint (assets\/blueprints\/blueprint.json) for Try in Playground on WordPress.org.<\/li>\n<\/ul>\n\n<h4>1.0.25<\/h4>\n\n<ul>\n<li>Fix: Resolved WordPress.org SVN stable tag recognition issue.<\/li>\n<li>Deployment: Updated stable tag to ensure proper plugin directory deployment.<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>Translations: Added Spanish (es_ES), German (de_DE), French (fr_FR), and Portuguese (pt_BR) support.<\/li>\n<li>Localization: Included master <code>.pot<\/code> file for community translations.<\/li>\n<li>Core: Improved internationalization (i18n) for admin interfaces.<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>Clean Release: Removed development artifacts (docs, tests, benchmarks) from distribution.<\/li>\n<li>Documentation: Updated readme to link to external performance report.<\/li>\n<li>Infrastructure: Verified 1M row benchmarks (see GitHub).<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Infrastructure-Grade Benchmarks: Refined docs\/PERFORMANCE.md with high-fidelity metrics.<\/li>\n<li>Enhanced Benchmarking Suite: Support for Mean\/P95 latency and buffer pool warming.<\/li>\n<li>Performance: Validated sub-2ms P95 latency at 1M rows.<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Schema Versioning Guard (<code>NCR_SCHEMA_VERSION<\/code> 1.1)<\/li>\n<li><strong>NEW<\/strong>: Micro-Optimized Query Layer with composite indexes for 1M+ rows<\/li>\n<li><strong>NEW<\/strong>: WordPress Site Health integration for relationship integrity<\/li>\n<li><strong>DEV<\/strong>: Formalized database upgrade routine<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li><strong>PERFORMANCE<\/strong>: Implemented chunked integrity processing to support 100k+ relationships<\/li>\n<li><strong>PERFORMANCE<\/strong>: SQL-native duplicate detection to minimize PHP memory overhead<\/li>\n<li><strong>IMPROVED<\/strong>: Streamed WP-CLI output for real-time progress during check\/fix<\/li>\n<li><strong>FIX<\/strong>: Resolved \"Stable Tag\" race conditions in SVN deployment pipeline<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Relationship Integrity Engine with modular helper system<\/li>\n<li><strong>NEW<\/strong>: Expanded integrity checks (orphans, unregistered types, constraints, directional consistency)<\/li>\n<li><strong>IMPROVED<\/strong>: WP-CLI command <code>wp content-relations check<\/code> with <code>--fix<\/code> and <code>--verbose<\/code> reporting<\/li>\n<li><strong>DEV<\/strong>: New <code>includes\/helpers\/integrity-helpers.php<\/code> for modular data validation<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li><strong>REFINED<\/strong>: Standardized relationship error codes with <code>ncr_<\/code> prefix (e.g. <code>ncr_max_connections_exceeded<\/code>)<\/li>\n<li><strong>SECURITY<\/strong>: Implemented relationship registry locking to prevent late\/unsafe registrations after <code>init:20<\/code><\/li>\n<li><strong>DOCS<\/strong>: Added architectural notes regarding future atomic write considerations<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Formal Relationship Type Registry with <code>ncr_get_registered_relation_types()<\/code><\/li>\n<li><strong>NEW<\/strong>: Enforced Directional Logic (blocked reverse writes for one-way types)<\/li>\n<li><strong>NEW<\/strong>: Relationship constraints support with <code>max_connections<\/code> (e.g. \"One Post to One Author\")<\/li>\n<li><strong>NEW<\/strong>: REST API endpoint <code>GET \/naticore\/v1\/types<\/code> to expose registry<\/li>\n<li><strong>IMPROVED<\/strong>: Enhanced verification layer in REST relationship creation<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Formal Relationship Type Registration API for developers<\/li>\n<li><strong>NEW<\/strong>: Added <code>ncr_register_relation_type<\/code> helper with schema validation<\/li>\n<li><strong>NEW<\/strong>: Strict validation for relationship object combinations<\/li>\n<li><strong>IMPROVED<\/strong>: Refactored internal type mapping for better maintainability<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Integrated Import\/Export as a dedicated settings tab<\/li>\n<li><strong>NEW<\/strong>: Added empty state UI for cleaner Relationship Overview experience<\/li>\n<li><strong>NEW<\/strong>: Added dismissible post-activation notice with documentation links<\/li>\n<li><strong>IMPROVED<\/strong>: Moved Relationship Overview from Tools to Settings menu for better organization<\/li>\n<li><strong>FIX<\/strong>: Resolved CSS specificity issues in card-based settings layout<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Comprehensive CONTRIBUTING.md guidelines and security policy<\/li>\n<li><strong>NEW<\/strong>: Issue templates, automation, and contributor guidelines<\/li>\n<li><strong>FIX<\/strong>: CodeQL syntax errors and duplicate workflow fixes<\/li>\n<li><strong>FIX<\/strong>: Deprecated function usage and i18n inconsistencies<\/li>\n<li><strong>IMPROVED<\/strong>: Updated Elementor tag names to naticore- prefix<\/li>\n<li><strong>IMPROVED<\/strong>: Code quality standards and PHPDoc documentation<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Comprehensive Elementor Dynamic Tags integration<\/li>\n<li><strong>NEW<\/strong>: Related Posts Dynamic Tag with multiple output formats<\/li>\n<li><strong>NEW<\/strong>: Related Users Dynamic Tag with avatar and profile support<\/li>\n<li><strong>NEW<\/strong>: Related Terms Dynamic Tag with taxonomy filtering<\/li>\n<li><strong>NEW<\/strong>: Direction control for all relationship types (outgoing\/incoming)<\/li>\n<li><strong>NEW<\/strong>: Flexible output formats (IDs, titles, links, avatars, count)<\/li>\n<li><strong>NEW<\/strong>: Context-aware relationship detection<\/li>\n<li><strong>NEW<\/strong>: Performance optimized with caching integration<\/li>\n<li><strong>IMPROVED<\/strong>: Enhanced Elementor integration with native controls<\/li>\n<li><strong>IMPROVED<\/strong>: Updated documentation with Elementor examples  <\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<p>\u2022 Added full post-to-term and term-to-post relationships<br \/>\n\u2022 Improved database indexing<br \/>\n\u2022 Updated documentation<\/p>\n\n<h4>1.0.10<\/h4>\n\n<p>\u2022 Added full post-to-user and user-to-post relationships<br \/>\n\u2022 User profile relationship UI<\/p>\n\n<h4>1.0.0<\/h4>\n\n<p>\u2022 Initial release<\/p>","raw_excerpt":"Add first-class relationships between posts, users, and terms using a fast, structured, and scalable architecture.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/277805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=277805"}],"author":[{"embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/chetanupare"}],"wp:attachment":[{"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=277805"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=277805"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=277805"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=277805"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=277805"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/scn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=277805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}