{"id":13759942,"url":"https://github.com/scribu/wp-posts-to-posts","last_synced_at":"2025-04-08T09:09:54.891Z","repository":{"id":44619340,"uuid":"1115977","full_name":"scribu/wp-posts-to-posts","owner":"scribu","description":"Efficient many-to-many connections between posts, pages, custom post types, users.","archived":false,"fork":false,"pushed_at":"2024-05-29T18:25:16.000Z","size":4162,"stargazers_count":978,"open_issues_count":175,"forks_count":262,"subscribers_count":70,"default_branch":"master","last_synced_at":"2025-04-01T07:53:07.777Z","etag":null,"topics":["wordpress"],"latest_commit_sha":null,"homepage":"http://wordpress.org/plugins/posts-to-posts/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scribu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2010-11-27T00:58:13.000Z","updated_at":"2025-02-26T12:01:34.000Z","dependencies_parsed_at":"2024-08-03T13:14:02.333Z","dependency_job_id":null,"html_url":"https://github.com/scribu/wp-posts-to-posts","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scribu%2Fwp-posts-to-posts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scribu%2Fwp-posts-to-posts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scribu%2Fwp-posts-to-posts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scribu%2Fwp-posts-to-posts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scribu","download_url":"https://codeload.github.com/scribu/wp-posts-to-posts/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247809964,"owners_count":20999816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["wordpress"],"created_at":"2024-08-03T13:01:01.300Z","updated_at":"2025-04-08T09:09:54.870Z","avatar_url":"https://github.com/scribu.png","language":"PHP","funding_links":[],"categories":["PHP"],"sub_categories":[],"readme":"# Posts 2 Posts\n\nContributors: scribu, ciobi  \nTags: connections, custom post types, relationships, many-to-many, users  \nRequires at least: 3.9  \nTested up to: 4.3  \nStable tag: 1.6.5  \nLicense: GPLv2 or later  \nLicense URI: http://www.gnu.org/licenses/gpl-2.0.html  \n\nEfficient many-to-many connections between posts, pages, custom post types, users.\n\n## Description\n\nThis plugin allows you to create many-to-many relationships between posts of any type: post, page, custom etc. A few example use cases:\n\n* manually curated lists of related posts\n* post series\n* products connected to retailers\n* etc.\n\nAdditionally, you can create many-to-many relationships between posts and users. So, you could also implement:\n\n* favorite posts of users\n* multiple authors per post\n* etc.\n\n### Support \u0026 Maintenance\n\nI, scribu, will not be offering support (either free or paid) for this plugin anymore.\n\nFurthermore, I will not be doing any development work whatsoever.\n\nIf you want to fix a bug in the plugin or add new features, feel free to fork it [on github](https://github.com/scribu/wp-posts-to-posts). \u003cem\u003eI will not be accepting any pull requests\u003c/em\u003e though, since ensuring that a code change doesn't break things takes effort, effort which I'm no longer willing to expend.\n\nLinks: [**Documentation**](http://github.com/scribu/wp-posts-to-posts/wiki) | [Plugin News](http://scribu.net/wordpress/posts-to-posts) | [Author's Site](http://scribu.net)\n\n## Installation\n\nSee [Installing Plugins](http://codex.wordpress.org/Managing_Plugins#Installing_Plugins).\n\nAfter activating it, refer to the [Basic usage](https://github.com/scribu/wp-posts-to-posts/wiki/Basic-usage) tutorial.\n \nAdditional info can be found on the [wiki](http://github.com/scribu/wp-posts-to-posts/wiki).\n\n## Frequently Asked Questions\n\n### The waiting icon keeps spinning forever.\n\n[Check for JavaScript errors](http://codex.wordpress.org/Using_Your_Browser_to_Diagnose_JavaScript_Errors). If it's an AJAX request, check its output.\n\n## Screenshots\n\n1. Basic connection metabox\n2. Advanced connection metabox\n3. Admin column\n4. Widget\n5. Connection Types screen\n\n## Changelog\n\n### 1.6.5\n* fixed error when Mustache is already loaded. props ApatheticG\n* fixed WP_User_Query warning. props PatelUtkarsh\n* added Chinese translation. props iwillhappy1314\n\n### 1.6.4\n* added Danish translation. props phh\n* updated Swedish translation. props EyesX\n* fixed issue with multiple `parse_query` calls. props hezachenary\n* added `p2p_post_admin_column_link` and `p2p_user_admin_column_link` filters. props PareshRadadiya\n\n### 1.6.3\n* added Serbian translation. props Borisa Djuraskovic\n* fixed spinner in admin box. props yamablam\n* fixed JavaScript error related to Backbone. props ericandrewlewis\n* made 'p2p_connected_title' filter work for users too. props MZAWeb\n* added support for 'dropdown_title' labels. props GaryJones\n* made `get_related()` consider all connected items\n\n### 1.6.2\n* fixed URL query handling. props ntns\n* store `WP_Error` instance instead of calling `trigger_error()`. props MZAWeb\n* fixed warning when used with Multilingual Press. props dimadin\n* introduced `p2p_connected_title` filter. props petitphp\n\n### 1.6.1\n* fixed user column handling. props versusbassz\n* fixed PHP strict standards warnings. props meloniq\n* added Estonian translation. props RistoNiinemets\n* added Finnish translation. props danielck\n\n### 1.6\n* introduced `p2p_candidate_title` filter\n* introduced JavaScript API\n* added Japanese translation\n* various refactorings\n\n### 1.5.2\n* fixed get_prev() and get_next()\n* introduced get_adjacent_items()\n* fixed admin column titles\n* made admin column titles show up before the post date. props luk3thomas\n* added 'help' key to 'from_labels' and 'to_labels' arrays. props tareq1988\n\n### 1.5.1\n* fix fatal error on activation. props benmay\n\n### 1.5\n* added [admin dropdowns](https://github.com/scribu/wp-posts-to-posts/wiki/Admin-dropdown-display)\n* fixed SQL error related to user connections\n* fixed 'labels' handling and added 'column_title' subkey\n* refactor metabox JavaScript using Backbone.js\n* lazy-load connection candidates, for faster page loads\n* lazy-load PHP classes using `spl_register_autoload()`\n\n### 1.4.3\n* various bug fixes\n* added 'inline' mode for shortcodes\n* replaced 'trash' icon with 'minus' icon\n* pass direction to 'default_cb'\n\n### 1.4.2\n* fixed each_connected() returning wrapped objects\n* fixed issue with user queries and get_current_screen()\n* fixed \"Delete all connections\" button\n* fixed bugs with reciprocal and non-reciprocal indeterminate connection types\n* added Dutch translation\n\n### 1.4.1\n* fixed errors in admin box\n* fixed each_connected()\n\n### 1.4\n* added 'p2p_init' hook\n* replaced 'View All' button with '+ Create connections' toggle\n* improved usability of connection candidate UI\n* fixed issues related to auto-drafts\n* show columns on the admin user list screen\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-1-4.html)\n\n### 1.3.1\n* sanitize connection fields values on save, preventing security exploits\n* improved connection field default value handling\n* added 'default_cb' as an optional key when defining connection fields\n* fixed parameter order for 'p2p_admin_box_show' filter\n* pass the current post ID to the 'p2p_new_post_args' filter\n\n### 1.3\n* allow passing entire objects to get_connected(), connect() etc.\n* made get_related() work with posts-to-users connections\n* made each_connected() work with simple array of posts\n* introduced [p2p_connected] and [p2p_related] shortcodes\n* allow 'default' parameter in 'fields' array\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-1-3.html)\n\n### 1.2\n* added Tools -\u003e Connection Types admin screen\n* fixed migration script\n* made p2p_get_connections() accept arrays of ids\n* added 'separator' parameter to p2p_list_posts()\n* made P2P_Directed_Type-\u003econnect() return WP_Error instances instead of just false\n* when a user is deleted, delete all the associated connections\n* fixed conflict with bbPress Topics for Posts plugin\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-1-2.html)\n\n### 1.1.6\n* convert \"View All\" tab into button\n* refresh candidate list after deleting a connection\n* fix cardinality check\n* introduce 'p2p_connection_type_args' filter\n* make 'connected_type' accept an array of connection type names\n* inadvertently remove support for queries without 'connected_type' parameter\n\n### 1.1.5\n* added P2P_Connection_Type-\u003ereplace() method\n* added 'self_connections' flag to p2p_register_connection_type()\n* made P2P_Connection_Type-\u003eeach_connected() work for posts-to-users connections\n* made admin list table columns work for posts-to-users connections\n* fixed 'from_labels' and 'to_labels' parameters\n* fixed search being limited only to post titles\n\n### 1.1.4\n* show attachment thumbnail instead of title\n* merged 'from_object' into 'from' and 'to_object' into 'to'\n* made posts-to-users queries respect 'to_query_vars' args\n* added $prop_name parameter to P2P_Type::each_connected()\n* fixed connection field name conflict\n\n### 1.1.3\n* fixed regression related to posts-to-users direction\n* fixed admin columns overwriting each other\n* fixed incorrect direction in admin column links\n* added notices when connection type is not properly defined\n\n### 1.1.2\n* fixed fields not being saved for posts-to-users connections\n* fixed missing \"New Post\" tab in admin box\n* fixed notice when deleting post\n\n### 1.1.1\n* fixed faulty scbFramework loading\n* simplified syntax for defining posts-to-users connection types\n\n### 1.1\n* add p2p_type column to the wp_p2p table\n* new low-level api: p2p_create_connection(), p2p_get_connections(), p2p_delete_connections(), p2p_connection_exists()\n* support posts-to-users and users-to-posts connection types in the admin\n* add 'from_labels' and 'to_labels' args to p2p_register_connection_type()\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-1-1.html)\n\n### 1.0.1\n* don't show metabox at all if user doesn't have the required capability\n* fix checkbox handling when there are no other input fields\n* improve metabox styling\n* rename 'show_ui' to 'admin_box'\n* add 'admin_column' parameter\n\n### 1.0\n* widget can now list related posts\n* add P2P_Connection_Type::get_related() method\n* add 'can_create_post' arg to p2p_register_connection_type()\n* two-box mode for `'reciprocal' =\u003e false`\n* more options for 'show_ui'\n* allow checkboxes, radio buttons and textareas as connection fields\n* allow drag \u0026 drop ordering in both directions\n* added get_previous(), get_next() and get_adjacent() methods to P2P_Connection_Type\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-1-0.html)\n\n### 0.9.5\n* add '{from|to}_query_vars' args to p2p_register_connection_type()\n* add 'cardinality' arg to p2p_register_connection_type()\n* add 'id' arg and p2p_type() function\n* introduce p2p_split_posts()\n* remove p2p_connect(), p2p_disconnect() and p2p_get_connected()\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-0-9-5.html)\n\n### 0.9.2\n* fix incorrect storage when creating a connection from the other end\n* respect 'reciprocal' =\u003e false when 'from' == 'to'\n* pass pagination numbers through number_format_i18n()\n\n### 0.9.1\n* fix bug with each_connected()\n* add widget\n* allow 'from' and 'to' to be arrays again\n* improve RTL support\n\n### 0.9\n* introduce dropdown connection fields\n* introduce 'sortable' arg to p2p_register_connection_type()\n* introduce 'data' arg to p2p_register_connection_type()\n* replace 'box' arg with hooks\n* replace p2p_each_connected() with P2P_Post_Type-\u003eeach_connected()\n* allow using 'connected_meta' and 'connected_orderby' together\n* fix some translations\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-0-9.html)\n\n### 0.8\n* added ability to create draft posts from the connection box. props Oren Kolker\n* show post status in the connection box. props [Michael Fields](http://wordpress.mfields.org/)\n* reduced number of queries by caching connection information\n* revamped p2p_each_connected()\n* introduced p2p_list_posts()\n* introduced 'connected_orderby', 'connected_order' and 'connected_order_num' query vars\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-0-8.html)\n\n### 0.7\n* improved UI. props [Alex Ciobica](http://ciobi.ca/)\n* added 'fields', 'context' and 'prevent_duplicates' args to p2p_register_connection_type()\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-0-7.html)\n\n### 0.6\n* added p2p_each_connected()\n* fixed p2p_is_connected()\n* made p2p_get_connected() return p2p_ids even with `$direction = 'any'`\n* made compatible with [Proper Network Activation](http://wordpress.org/extend/plugins/proper-network-activation)\n* [more info](http://scribu.net/wordpress/posts-to-posts/version-0-6.html)\n\n### 0.5.1\n* fixed fatal error on Menus screen\n\n### 0.5\n* added 'connected_meta' var to WP_Query\n* attach p2p_id to each post found via WP_Query\n* 'connected_to' =\u003e 'any' etc.\n* $data parameter can also be a meta_query\n* metabox bugfixes\n* fixed l10n loading\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-0-5.html)\n\n### 0.4\n* introduced 'connected_from', 'connected_to', 'connected' vars to WP_Query\n* replaced $reciprocal with $data as the third argument\n* p2p_register_connection_type() accepts an associative array as arguments\n* removed p2p_list_connected()\n* added p2p_delete_connection()\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-0-4.html)\n\n### 0.3\n* store connections using a taxonomy instead of postmeta\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-0-3.html)\n\n### 0.2\n* UI that supports multiple related posts. props [Patrik Bón](http://www.mrhead.sk/)\n* added p2p_list_connected() template tag\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-0-2.html)\n\n### 0.1\n* initial release\n* [more info](http://scribu.net/wordpress/posts-to-posts/p2p-0-1.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscribu%2Fwp-posts-to-posts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscribu%2Fwp-posts-to-posts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscribu%2Fwp-posts-to-posts/lists"}