Description
This plugin allows you to create many-to-many relationships between posts of any type: post, page, custom etc. A few example use cases:
- manually curated lists of related posts
- post series
- products connected to retailers
- etc.
Additionally, you can create many-to-many relationships between posts and users. So, you could also implement:
- favorite posts of users
- multiple authors per post
- etc.
Support & Maintenance
AyeCode Ltd have committed to security and maintenance updates due to this plugins requirement in our List Manager Extension.
~~I, scribu, will not be offering support (either free or paid) for this plugin anymore.~~
If you want to help maintain the plugin, fork it on github and open pull requests.
Links: Documentation | Plugin News | Author’s Site
Screenshots
Installation
See Installing Plugins.
After activating it, refer to the Basic usage tutorial.
Additional info can be found on the wiki.
FAQ
-
The waiting icon keeps spinning forever.
-
Check for JavaScript errors. If it’s an AJAX request, check its output.
Reviews
Contributors & Developers
“Posts 2 Posts” is open source software. The following people have contributed to this plugin.
Contributors“Posts 2 Posts” has been translated into 14 locales. Thank you to the translators for their contributions.
Translate “Posts 2 Posts” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.7.4 – 2024-08-21
- WordPress v6.6 compatibility check – CHANGED
1.7.3 – 2024-04-11
- WordPress v6.5 compatibility check – CHANGED
1.7.2 – 2023-09-14
- PHP 8.2 deprecated notices – FIXED
1.7.1 – 2023-07-31
- PHP deprecated notice «Creation of dynamic property» – FIXED
- Unable to delete user connection after WordPress v6.1 – FIXED
1.7 – 2023-05-23
- Update Mustache package to support PHP 8.
1.6.6
- AyeCode Ltd have committed to security and maintenance updates – INFO
- Deprecated PHP notices showing with latest WordPress – FIXED
1.6.5
- fixed error when Mustache is already loaded. props ApatheticG
- fixed WP_User_Query warning. props PatelUtkarsh
- added Chinese translation. props iwillhappy1314
1.6.4
- added Danish translation. props phh
- updated Swedish translation. props EyesX
- fixed issue with multiple
parse_query
calls. props hezachenary - added
p2p_post_admin_column_link
andp2p_user_admin_column_link
filters. props PareshRadadiya
1.6.3
- added Serbian translation. props Borisa Djuraskovic
- fixed spinner in admin box. props yamablam
- fixed JavaScript error related to Backbone. props ericandrewlewis
- made ‹p2p_connected_title› filter work for users too. props MZAWeb
- added support for ‹dropdown_title› labels. props GaryJones
- made
get_related()
consider all connected items
1.6.2
- fixed URL query handling. props ntns
- store
WP_Error
instance instead of callingtrigger_error()
. props MZAWeb - fixed warning when used with Multilingual Press. props dimadin
- introduced
p2p_connected_title
filter. props petitphp
1.6.1
- fixed user column handling. props versusbassz
- fixed PHP strict standards warnings. props meloniq
- added Estonian translation. props RistoNiinemets
- added Finnish translation. props danielck
1.6
- introduced
p2p_candidate_title
filter - introduced JavaScript API
- added Japanese translation
- various refactorings
1.5.2
- fixed get_prev() and get_next()
- introduced get_adjacent_items()
- fixed admin column titles
- made admin column titles show up before the post date. props luk3thomas
- added ‹help› key to ‹from_labels› and ‹to_labels› arrays. props tareq1988
1.5.1
- fix fatal error on activation. props benmay
1.5
- added admin dropdowns
- fixed SQL error related to user connections
- fixed ‹labels› handling and added ‹column_title› subkey
- refactor metabox JavaScript using Backbone.js
- lazy-load connection candidates, for faster page loads
- lazy-load PHP classes using
spl_register_autoload()
1.4.3
- various bug fixes
- added ‹inline› mode for shortcodes
- replaced ‹trash› icon with ‹minus› icon
- pass direction to ‹default_cb›
1.4.2
- fixed each_connected() returning wrapped objects
- fixed issue with user queries and get_current_screen()
- fixed «Delete all connections» button
- fixed bugs with reciprocal and non-reciprocal indeterminate connection types
- added Dutch translation
1.4.1
- fixed errors in admin box
- fixed each_connected()
1.4
- added ‹p2p_init› hook
- replaced ‹View All› button with ‹+ Create connections› toggle
- improved usability of connection candidate UI
- fixed issues related to auto-drafts
- show columns on the admin user list screen
- more info
1.3.1
- sanitize connection fields values on save, preventing security exploits
- improved connection field default value handling
- added ‹default_cb› as an optional key when defining connection fields
- fixed parameter order for ‹p2p_admin_box_show› filter
- pass the current post ID to the ‹p2p_new_post_args› filter
1.3
- allow passing entire objects to get_connected(), connect() etc.
- made get_related() work with posts-to-users connections
- made each_connected() work with simple array of posts
- introduced [p2p_connected] and [p2p_related] shortcodes
- allow ‹default› parameter in ‹fields› array
- more info
1.2
- added Tools -> Connection Types admin screen
- fixed migration script
- made p2p_get_connections() accept arrays of ids
- added ’separator› parameter to p2p_list_posts()
- made P2P_Directed_Type->connect() return WP_Error instances instead of just false
- when a user is deleted, delete all the associated connections
- fixed conflict with bbPress Topics for Posts plugin
- more info
1.1.6
- convert «View All» tab into button
- refresh candidate list after deleting a connection
- fix cardinality check
- introduce ‹p2p_connection_type_args› filter
- make ‹connected_type› accept an array of connection type names
- inadvertently remove support for queries without ‹connected_type› parameter
1.1.5
- added P2P_Connection_Type->replace() method
- added ’self_connections› flag to p2p_register_connection_type()
- made P2P_Connection_Type->each_connected() work for posts-to-users connections
- made admin list table columns work for posts-to-users connections
- fixed ‹from_labels› and ‹to_labels› parameters
- fixed search being limited only to post titles
1.1.4
- show attachment thumbnail instead of title
- merged ‹from_object› into ‹from› and ‹to_object› into ‹to›
- made posts-to-users queries respect ‹to_query_vars› args
- added $prop_name parameter to P2P_Type::each_connected()
- fixed connection field name conflict
1.1.3
- fixed regression related to posts-to-users direction
- fixed admin columns overwriting each other
- fixed incorrect direction in admin column links
- added notices when connection type is not properly defined
1.1.2
- fixed fields not being saved for posts-to-users connections
- fixed missing «New Post» tab in admin box
- fixed notice when deleting post
1.1.1
- fixed faulty scbFramework loading
- simplified syntax for defining posts-to-users connection types
1.1
- add p2p_type column to the wp_p2p table
- new low-level api: p2p_create_connection(), p2p_get_connections(), p2p_delete_connections(), p2p_connection_exists()
- support posts-to-users and users-to-posts connection types in the admin
- add ‹from_labels› and ‹to_labels› args to p2p_register_connection_type()
- more info
1.0.1
- don’t show metabox at all if user doesn’t have the required capability
- fix checkbox handling when there are no other input fields
- improve metabox styling
- rename ’show_ui› to ‹admin_box›
- add ‹admin_column› parameter
1.0
- widget can now list related posts
- add P2P_Connection_Type::get_related() method
- add ‹can_create_post› arg to p2p_register_connection_type()
- two-box mode for
'reciprocal' => false
- more options for ’show_ui›
- allow checkboxes, radio buttons and textareas as connection fields
- allow drag & drop ordering in both directions
- added get_previous(), get_next() and get_adjacent() methods to P2P_Connection_Type
- more info
0.9.5
- add ‹{from|to}_query_vars› args to p2p_register_connection_type()
- add ‹cardinality› arg to p2p_register_connection_type()
- add ‹id› arg and p2p_type() function
- introduce p2p_split_posts()
- remove p2p_connect(), p2p_disconnect() and p2p_get_connected()
- more info
0.9.2
- fix incorrect storage when creating a connection from the other end
- respect ‹reciprocal› => false when ‹from› == ‹to›
- pass pagination numbers through number_format_i18n()
0.9.1
- fix bug with each_connected()
- add widget
- allow ‹from› and ‹to› to be arrays again
- improve RTL support
0.9
- introduce dropdown connection fields
- introduce ’sortable› arg to p2p_register_connection_type()
- introduce ‹data› arg to p2p_register_connection_type()
- replace ‹box› arg with hooks
- replace p2p_each_connected() with P2P_Post_Type->each_connected()
- allow using ‹connected_meta› and ‹connected_orderby› together
- fix some translations
- more info
0.8
- added ability to create draft posts from the connection box. props Oren Kolker
- show post status in the connection box. props Michael Fields
- reduced number of queries by caching connection information
- revamped p2p_each_connected()
- introduced p2p_list_posts()
- introduced ‹connected_orderby›, ‹connected_order› and ‹connected_order_num› query vars
- more info
0.7
- improved UI. props Alex Ciobica
- added ‹fields›, ‹context› and ‹prevent_duplicates› args to p2p_register_connection_type()
- more info
0.6
- added p2p_each_connected()
- fixed p2p_is_connected()
- made p2p_get_connected() return p2p_ids even with
$direction = 'any'
- made compatible with Proper Network Activation
- more info
0.5.1
- fixed fatal error on Menus screen
0.5
- added ‹connected_meta› var to WP_Query
- attach p2p_id to each post found via WP_Query
- ‹connected_to› => ‹any› etc.
- $data parameter can also be a meta_query
- metabox bugfixes
- fixed l10n loading
- more info
0.4
- introduced ‹connected_from›, ‹connected_to›, ‹connected› vars to WP_Query
- replaced $reciprocal with $data as the third argument
- p2p_register_connection_type() accepts an associative array as arguments
- removed p2p_list_connected()
- added p2p_delete_connection()
- more info
0.3
- store connections using a taxonomy instead of postmeta
- more info
0.2
- UI that supports multiple related posts. props Patrik Bón
- added p2p_list_connected() template tag
- more info
0.1
- initial release
- more info