{"id":1098,"date":"2010-05-09T12:05:20","date_gmt":"2010-05-09T12:05:20","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/posts-to-posts\/"},"modified":"2026-03-06T04:35:13","modified_gmt":"2026-03-06T04:35:13","slug":"posts-to-posts","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/posts-to-posts\/","author":180901,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.7.8","stable_tag":"1.7.8","tested":"6.9.4","requires":"6.0","requires_php":"5.6","requires_plugins":null,"header_name":"Posts 2 Posts","header_author":"scribu","header_description":"","assets_banners_color":"7a8e9d","last_updated":"2026-03-06 04:35:13","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"http:\/\/scribu.net\/wordpress\/posts-to-posts","header_author_uri":"http:\/\/scribu.net\/","rating":4.8,"author_block_rating":0,"active_installs":10000,"downloads":408658,"num_ratings":101,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1":{"tag":"0.1","author":"scribu","date":"2010-05-13 12:53:38"},"0.2":{"tag":"0.2","author":"scribu","date":"2010-07-15 16:42:57"},"0.3":{"tag":"0.3","author":"scribu","date":"2010-09-09 21:27:32"},"0.4":{"tag":"0.4","author":"scribu","date":"2010-10-08 20:17:20"},"0.5.1":{"tag":"0.5.1","author":"scribu","date":"2011-01-21 15:41:15"},"0.6":{"tag":"0.6","author":"scribu","date":"2011-03-07 00:07:57"},"0.7":{"tag":"0.7","author":"scribu","date":"2011-06-21 08:47:36"},"0.8":{"tag":"0.8","author":"scribu","date":"2011-08-17 18:08:54"},"0.9.2":{"tag":"0.9.2","author":"scribu","date":"2011-10-02 16:30:01"},"0.9.5":{"tag":"0.9.5","author":"scribu","date":"2011-10-21 04:44:07"},"1.0.1":{"tag":"1.0.1","author":"scribu","date":"2011-11-22 19:24:40"},"1.1.6":{"tag":"1.1.6","author":"scribu","date":"2012-03-14 12:34:43"},"1.2":{"tag":"1.2","author":"scribu","date":"2012-04-07 13:44:37"},"1.3":{"tag":"1.3","author":"scribu","date":"2012-04-28 19:48:28"},"1.3.1":{"tag":"1.3.1","author":"scribu","date":"2012-05-21 00:44:13"},"1.4":{"tag":"1.4","author":"scribu","date":"2012-08-17 07:43:07"},"1.4.1":{"tag":"1.4.1","author":"scribu","date":"2012-08-21 06:49:44"},"1.4.2":{"tag":"1.4.2","author":"scribu","date":"2012-09-10 12:12:02"},"1.4.3":{"tag":"1.4.3","author":"scribu","date":"2012-11-24 01:42:48"},"1.5":{"tag":"1.5","author":"scribu","date":"2013-02-16 11:34:31"},"1.5.1":{"tag":"1.5.1","author":"scribu","date":"2013-02-17 08:09:47"},"1.5.2":{"tag":"1.5.2","author":"scribu","date":"2013-04-25 19:13:12"},"1.6":{"tag":"1.6","author":"scribu","date":"2013-05-10 11:21:47"},"1.6.1":{"tag":"1.6.1","author":"scribu","date":"2013-05-30 21:23:52"},"1.6.2":{"tag":"1.6.2","author":"scribu","date":"2013-08-19 13:25:03"},"1.6.3":{"tag":"1.6.3","author":"scribu","date":"2014-04-02 11:51:35"},"1.6.4":{"tag":"1.6.4","author":"scribu","date":"2015-06-11 09:25:42"},"1.6.5":{"tag":"1.6.5","author":"scribu","date":"2015-10-13 15:03:02"},"1.6.6":{"tag":"1.6.6","author":"stiofansisland","date":"2020-07-29 13:20:50"},"1.7":{"tag":"1.7","author":"stiofansisland","date":"2022-05-23 09:47:31"},"1.7.1":{"tag":"1.7.1","author":"stiofansisland","date":"2023-07-31 07:41:15"},"1.7.2":{"tag":"1.7.2","author":"stiofansisland","date":"2023-09-14 05:11:20"},"1.7.3":{"tag":"1.7.3","author":"stiofansisland","date":"2024-04-11 06:12:17"},"1.7.4":{"tag":"1.7.4","author":"stiofansisland","date":"2024-08-21 12:18:41"},"1.7.5":{"tag":"1.7.5","author":"stiofansisland","date":"2025-02-19 14:45:56"},"1.7.6":{"tag":"1.7.6","author":"stiofansisland","date":"2025-12-03 14:48:37"},"1.7.8":{"tag":"1.7.8","author":"stiofansisland","date":"2026-03-06 04:35:13"}},"upgrade_notice":[],"ratings":{"1":4,"2":0,"3":0,"4":0,"5":97},"assets_icons":[],"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":480983,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1","0.2","0.3","0.4","0.5.1","0.6","0.7","0.8","0.9.2","0.9.5","1.0.1","1.1.6","1.2","1.3","1.3.1","1.4","1.4.1","1.4.2","1.4.3","1.5","1.5.1","1.5.2","1.6","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.6.6","1.7","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":631800,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":631800,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":631800,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":631800,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":631800,"resolution":"5","location":"assets","locale":""}},"screenshots":{"1":"Basic connection metabox","2":"Advanced connection metabox","3":"Admin column","4":"Widget","5":"Connection Types screen"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[14510,1487,14511,4676,1917],"plugin_category":[],"plugin_contributors":[132360,78898,77621,79230],"plugin_business_model":[],"class_list":["post-1098","plugin","type-plugin","status-publish","hentry","plugin_tags-connections","plugin_tags-custom-post-types","plugin_tags-many-to-many","plugin_tags-relationships","plugin_tags-users","plugin_contributors-ayecode","plugin_contributors-ciobi","plugin_contributors-scribu","plugin_contributors-stiofansisland","plugin_committers-scribu","plugin_committers-stiofansisland","plugin_support_reps-alexrollin"],"banners":{"banner":"https:\/\/ps.w.org\/posts-to-posts\/assets\/banner-772x250.jpg?rev=480983","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/posts-to-posts_7a8e9d.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/posts-to-posts\/assets\/screenshot-1.png?rev=631800","caption":"Basic connection metabox"},{"src":"https:\/\/ps.w.org\/posts-to-posts\/assets\/screenshot-2.png?rev=631800","caption":"Advanced connection metabox"},{"src":"https:\/\/ps.w.org\/posts-to-posts\/assets\/screenshot-3.png?rev=631800","caption":"Admin column"},{"src":"https:\/\/ps.w.org\/posts-to-posts\/assets\/screenshot-4.png?rev=631800","caption":"Widget"},{"src":"https:\/\/ps.w.org\/posts-to-posts\/assets\/screenshot-5.png?rev=631800","caption":"Connection Types screen"}],"raw_content":"<!--section=description-->\n<p>This plugin allows you to create many-to-many relationships between posts of any type: post, page, custom etc. A few example use cases:<\/p>\n\n<ul>\n<li>manually curated lists of related posts<\/li>\n<li>post series<\/li>\n<li>products connected to retailers<\/li>\n<li>etc.<\/li>\n<\/ul>\n\n<p>Additionally, you can create many-to-many relationships between posts and users. So, you could also implement:<\/p>\n\n<ul>\n<li>favorite posts of users<\/li>\n<li>multiple authors per post<\/li>\n<li>etc.<\/li>\n<\/ul>\n\n<h4>Support &amp; Maintenance<\/h4>\n\n<p>AyeCode Ltd have committed to security and maintenance updates due to this plugins requirement in our <a href=\"https:\/\/wpgeodirectory.com\/downloads\/list-manager\/\">List Manager Extension.<\/a><\/p>\n\n<p>~~I, scribu, will not be offering support (either free or paid) for this plugin anymore.~~<\/p>\n\n<p>If you want to help maintain the plugin, fork it <a href=\"https:\/\/github.com\/scribu\/wp-posts-to-posts\">on github<\/a> and open pull requests.<\/p>\n\n<p>Links: <a href=\"http:\/\/github.com\/scribu\/wp-posts-to-posts\/wiki\"><strong>Documentation<\/strong><\/a> | <a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\">Plugin News<\/a> | <a href=\"http:\/\/scribu.net\">Author's Site<\/a><\/p>\n\n<!--section=installation-->\n<p>See <a href=\"http:\/\/codex.wordpress.org\/Managing_Plugins#Installing_Plugins\">Installing Plugins<\/a>.<\/p>\n\n<p>After activating it, refer to the <a href=\"https:\/\/github.com\/scribu\/wp-posts-to-posts\/wiki\/Basic-usage\">Basic usage<\/a> tutorial.<\/p>\n\n<p>Additional info can be found on the <a href=\"http:\/\/github.com\/scribu\/wp-posts-to-posts\/wiki\">wiki<\/a>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"the%20waiting%20icon%20keeps%20spinning%20forever.\"><h3>The waiting icon keeps spinning forever.<\/h3><\/dt>\n<dd><p><a href=\"http:\/\/codex.wordpress.org\/Using_Your_Browser_to_Diagnose_JavaScript_Errors\">Check for JavaScript errors<\/a>. If it's an AJAX request, check its output.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.8 - 2026-03-06<\/h4>\n\n<ul>\n<li>Re-release to resolve a deployment failure caused by GitHub service outage - FIXED<\/li>\n<\/ul>\n\n<h4>1.7.7 - 2026-03-05<\/h4>\n\n<ul>\n<li>Fix compatibility issues with Ultimate Dashboard plugin - FIXED<\/li>\n<\/ul>\n\n<h4>1.7.6 - 2025-12-03<\/h4>\n\n<ul>\n<li>PHP 8.3 compatibility check - CHANGED<\/li>\n<li>WordPress 6.9 compatibility check - CHANGED<\/li>\n<\/ul>\n\n<h4>1.7.5 - 2025-02-19<\/h4>\n\n<ul>\n<li>Function _load_textdomain_just_in_time was called incorrectly - FIXED<\/li>\n<\/ul>\n\n<h4>1.7.4 - 2024-08-21<\/h4>\n\n<ul>\n<li>WordPress v6.6 compatibility check - CHANGED<\/li>\n<\/ul>\n\n<h4>1.7.3 - 2024-04-11<\/h4>\n\n<ul>\n<li>WordPress v6.5 compatibility check - CHANGED<\/li>\n<\/ul>\n\n<h4>1.7.2 - 2023-09-14<\/h4>\n\n<ul>\n<li>PHP 8.2 deprecated notices - FIXED<\/li>\n<\/ul>\n\n<h4>1.7.1 - 2023-07-31<\/h4>\n\n<ul>\n<li>PHP deprecated notice \"Creation of dynamic property\" - FIXED<\/li>\n<li>Unable to delete user connection after WordPress v6.1 - FIXED<\/li>\n<\/ul>\n\n<h4>1.7 - 2023-05-23<\/h4>\n\n<ul>\n<li>Update Mustache package to support PHP 8.<\/li>\n<\/ul>\n\n<h4>1.6.6<\/h4>\n\n<ul>\n<li>AyeCode Ltd have committed to security and maintenance updates - INFO<\/li>\n<li>Deprecated PHP notices showing with latest WordPress - FIXED<\/li>\n<\/ul>\n\n<h4>1.6.5<\/h4>\n\n<ul>\n<li>fixed error when Mustache is already loaded. props ApatheticG<\/li>\n<li>fixed WP_User_Query warning. props PatelUtkarsh<\/li>\n<li>added Chinese translation. props iwillhappy1314<\/li>\n<\/ul>\n\n<h4>1.6.4<\/h4>\n\n<ul>\n<li>added Danish translation. props phh<\/li>\n<li>updated Swedish translation. props EyesX<\/li>\n<li>fixed issue with multiple <code>parse_query<\/code> calls. props hezachenary<\/li>\n<li>added <code>p2p_post_admin_column_link<\/code> and <code>p2p_user_admin_column_link<\/code> filters. props PareshRadadiya<\/li>\n<\/ul>\n\n<h4>1.6.3<\/h4>\n\n<ul>\n<li>added Serbian translation. props Borisa Djuraskovic<\/li>\n<li>fixed spinner in admin box. props yamablam<\/li>\n<li>fixed JavaScript error related to Backbone. props ericandrewlewis<\/li>\n<li>made 'p2p_connected_title' filter work for users too. props MZAWeb<\/li>\n<li>added support for 'dropdown_title' labels. props GaryJones<\/li>\n<li>made <code>get_related()<\/code> consider all connected items<\/li>\n<\/ul>\n\n<h4>1.6.2<\/h4>\n\n<ul>\n<li>fixed URL query handling. props ntns<\/li>\n<li>store <code>WP_Error<\/code> instance instead of calling <code>trigger_error()<\/code>. props MZAWeb<\/li>\n<li>fixed warning when used with Multilingual Press. props dimadin<\/li>\n<li>introduced <code>p2p_connected_title<\/code> filter. props petitphp<\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>fixed user column handling. props versusbassz<\/li>\n<li>fixed PHP strict standards warnings. props meloniq<\/li>\n<li>added Estonian translation. props RistoNiinemets<\/li>\n<li>added Finnish translation. props danielck<\/li>\n<\/ul>\n\n<h4>1.6<\/h4>\n\n<ul>\n<li>introduced <code>p2p_candidate_title<\/code> filter<\/li>\n<li>introduced JavaScript API<\/li>\n<li>added Japanese translation<\/li>\n<li>various refactorings<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>fixed get_prev() and get_next()<\/li>\n<li>introduced get_adjacent_items()<\/li>\n<li>fixed admin column titles<\/li>\n<li>made admin column titles show up before the post date. props luk3thomas<\/li>\n<li>added 'help' key to 'from_labels' and 'to_labels' arrays. props tareq1988<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>fix fatal error on activation. props benmay<\/li>\n<\/ul>\n\n<h4>1.5<\/h4>\n\n<ul>\n<li>added <a href=\"https:\/\/github.com\/scribu\/wp-posts-to-posts\/wiki\/Admin-dropdown-display\">admin dropdowns<\/a><\/li>\n<li>fixed SQL error related to user connections<\/li>\n<li>fixed 'labels' handling and added 'column_title' subkey<\/li>\n<li>refactor metabox JavaScript using Backbone.js<\/li>\n<li>lazy-load connection candidates, for faster page loads<\/li>\n<li>lazy-load PHP classes using <code>spl_register_autoload()<\/code><\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>various bug fixes<\/li>\n<li>added 'inline' mode for shortcodes<\/li>\n<li>replaced 'trash' icon with 'minus' icon<\/li>\n<li>pass direction to 'default_cb'<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>fixed each_connected() returning wrapped objects<\/li>\n<li>fixed issue with user queries and get_current_screen()<\/li>\n<li>fixed \"Delete all connections\" button<\/li>\n<li>fixed bugs with reciprocal and non-reciprocal indeterminate connection types<\/li>\n<li>added Dutch translation<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>fixed errors in admin box<\/li>\n<li>fixed each_connected()<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>added 'p2p_init' hook<\/li>\n<li>replaced 'View All' button with '+ Create connections' toggle<\/li>\n<li>improved usability of connection candidate UI<\/li>\n<li>fixed issues related to auto-drafts<\/li>\n<li>show columns on the admin user list screen<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-1-4.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>sanitize connection fields values on save, preventing security exploits<\/li>\n<li>improved connection field default value handling<\/li>\n<li>added 'default_cb' as an optional key when defining connection fields<\/li>\n<li>fixed parameter order for 'p2p_admin_box_show' filter<\/li>\n<li>pass the current post ID to the 'p2p_new_post_args' filter<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>allow passing entire objects to get_connected(), connect() etc.<\/li>\n<li>made get_related() work with posts-to-users connections<\/li>\n<li>made each_connected() work with simple array of posts<\/li>\n<li>introduced [p2p_connected] and [p2p_related] shortcodes<\/li>\n<li>allow 'default' parameter in 'fields' array<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-1-3.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>added Tools -&gt; Connection Types admin screen<\/li>\n<li>fixed migration script<\/li>\n<li>made p2p_get_connections() accept arrays of ids<\/li>\n<li>added 'separator' parameter to p2p_list_posts()<\/li>\n<li>made P2P_Directed_Type-&gt;connect() return WP_Error instances instead of just false<\/li>\n<li>when a user is deleted, delete all the associated connections<\/li>\n<li>fixed conflict with bbPress Topics for Posts plugin<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-1-2.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>convert \"View All\" tab into button<\/li>\n<li>refresh candidate list after deleting a connection<\/li>\n<li>fix cardinality check<\/li>\n<li>introduce 'p2p_connection_type_args' filter<\/li>\n<li>make 'connected_type' accept an array of connection type names<\/li>\n<li>inadvertently remove support for queries without 'connected_type' parameter<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>added P2P_Connection_Type-&gt;replace() method<\/li>\n<li>added 'self_connections' flag to p2p_register_connection_type()<\/li>\n<li>made P2P_Connection_Type-&gt;each_connected() work for posts-to-users connections<\/li>\n<li>made admin list table columns work for posts-to-users connections<\/li>\n<li>fixed 'from_labels' and 'to_labels' parameters<\/li>\n<li>fixed search being limited only to post titles<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>show attachment thumbnail instead of title<\/li>\n<li>merged 'from_object' into 'from' and 'to_object' into 'to'<\/li>\n<li>made posts-to-users queries respect 'to_query_vars' args<\/li>\n<li>added $prop_name parameter to P2P_Type::each_connected()<\/li>\n<li>fixed connection field name conflict<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>fixed regression related to posts-to-users direction<\/li>\n<li>fixed admin columns overwriting each other<\/li>\n<li>fixed incorrect direction in admin column links<\/li>\n<li>added notices when connection type is not properly defined<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>fixed fields not being saved for posts-to-users connections<\/li>\n<li>fixed missing \"New Post\" tab in admin box<\/li>\n<li>fixed notice when deleting post<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>fixed faulty scbFramework loading<\/li>\n<li>simplified syntax for defining posts-to-users connection types<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>add p2p_type column to the wp_p2p table<\/li>\n<li>new low-level api: p2p_create_connection(), p2p_get_connections(), p2p_delete_connections(), p2p_connection_exists()<\/li>\n<li>support posts-to-users and users-to-posts connection types in the admin<\/li>\n<li>add 'from_labels' and 'to_labels' args to p2p_register_connection_type()<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-1-1.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>don't show metabox at all if user doesn't have the required capability<\/li>\n<li>fix checkbox handling when there are no other input fields<\/li>\n<li>improve metabox styling<\/li>\n<li>rename 'show_ui' to 'admin_box'<\/li>\n<li>add 'admin_column' parameter<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>widget can now list related posts<\/li>\n<li>add P2P_Connection_Type::get_related() method<\/li>\n<li>add 'can_create_post' arg to p2p_register_connection_type()<\/li>\n<li>two-box mode for <code>'reciprocal' =&gt; false<\/code><\/li>\n<li>more options for 'show_ui'<\/li>\n<li>allow checkboxes, radio buttons and textareas as connection fields<\/li>\n<li>allow drag &amp; drop ordering in both directions<\/li>\n<li>added get_previous(), get_next() and get_adjacent() methods to P2P_Connection_Type<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-1-0.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.9.5<\/h4>\n\n<ul>\n<li>add '{from|to}_query_vars' args to p2p_register_connection_type()<\/li>\n<li>add 'cardinality' arg to p2p_register_connection_type()<\/li>\n<li>add 'id' arg and p2p_type() function<\/li>\n<li>introduce p2p_split_posts()<\/li>\n<li>remove p2p_connect(), p2p_disconnect() and p2p_get_connected()<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-0-9-5.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.9.2<\/h4>\n\n<ul>\n<li>fix incorrect storage when creating a connection from the other end<\/li>\n<li>respect 'reciprocal' =&gt; false when 'from' == 'to'<\/li>\n<li>pass pagination numbers through number_format_i18n()<\/li>\n<\/ul>\n\n<h4>0.9.1<\/h4>\n\n<ul>\n<li>fix bug with each_connected()<\/li>\n<li>add widget<\/li>\n<li>allow 'from' and 'to' to be arrays again<\/li>\n<li>improve RTL support<\/li>\n<\/ul>\n\n<h4>0.9<\/h4>\n\n<ul>\n<li>introduce dropdown connection fields<\/li>\n<li>introduce 'sortable' arg to p2p_register_connection_type()<\/li>\n<li>introduce 'data' arg to p2p_register_connection_type()<\/li>\n<li>replace 'box' arg with hooks<\/li>\n<li>replace p2p_each_connected() with P2P_Post_Type-&gt;each_connected()<\/li>\n<li>allow using 'connected_meta' and 'connected_orderby' together<\/li>\n<li>fix some translations<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-0-9.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.8<\/h4>\n\n<ul>\n<li>added ability to create draft posts from the connection box. props Oren Kolker<\/li>\n<li>show post status in the connection box. props <a href=\"http:\/\/wordpress.mfields.org\/\">Michael Fields<\/a><\/li>\n<li>reduced number of queries by caching connection information<\/li>\n<li>revamped p2p_each_connected()<\/li>\n<li>introduced p2p_list_posts()<\/li>\n<li>introduced 'connected_orderby', 'connected_order' and 'connected_order_num' query vars<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-0-8.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.7<\/h4>\n\n<ul>\n<li>improved UI. props <a href=\"http:\/\/ciobi.ca\/\">Alex Ciobica<\/a><\/li>\n<li>added 'fields', 'context' and 'prevent_duplicates' args to p2p_register_connection_type()<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-0-7.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.6<\/h4>\n\n<ul>\n<li>added p2p_each_connected()<\/li>\n<li>fixed p2p_is_connected()<\/li>\n<li>made p2p_get_connected() return p2p_ids even with <code>$direction = 'any'<\/code><\/li>\n<li>made compatible with <a href=\"http:\/\/wordpress.org\/extend\/plugins\/proper-network-activation\">Proper Network Activation<\/a><\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/version-0-6.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>fixed fatal error on Menus screen<\/li>\n<\/ul>\n\n<h4>0.5<\/h4>\n\n<ul>\n<li>added 'connected_meta' var to WP_Query<\/li>\n<li>attach p2p_id to each post found via WP_Query<\/li>\n<li>'connected_to' =&gt; 'any' etc.<\/li>\n<li>$data parameter can also be a meta_query<\/li>\n<li>metabox bugfixes<\/li>\n<li>fixed l10n loading<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-0-5.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.4<\/h4>\n\n<ul>\n<li>introduced 'connected_from', 'connected_to', 'connected' vars to WP_Query<\/li>\n<li>replaced $reciprocal with $data as the third argument<\/li>\n<li>p2p_register_connection_type() accepts an associative array as arguments<\/li>\n<li>removed p2p_list_connected()<\/li>\n<li>added p2p_delete_connection()<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-0-4.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.3<\/h4>\n\n<ul>\n<li>store connections using a taxonomy instead of postmeta<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-0-3.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.2<\/h4>\n\n<ul>\n<li>UI that supports multiple related posts. props <a href=\"http:\/\/www.mrhead.sk\/\">Patrik B\u00f3n<\/a><\/li>\n<li>added p2p_list_connected() template tag<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-0-2.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>0.1<\/h4>\n\n<ul>\n<li>initial release<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/posts-to-posts\/p2p-0-1.html\">more info<\/a><\/li>\n<\/ul>","raw_excerpt":"Efficient many-to-many connections between posts, pages, custom post types, users.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/1098","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=1098"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/scribu"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=1098"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=1098"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=1098"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=1098"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=1098"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=1098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}