-
Notifications
You must be signed in to change notification settings - Fork 262
Admin box display
clariner edited this page Sep 10, 2014
·
1 revision
When registering a connection type, you can control if and where the connections metabox shows up in the admin:
<?php
p2p_register_connection_type( array(
'name' => 'my_connection_type',
'from' => 'page',
'to' => 'user',
'admin_box' => array(
'show' => 'any',
'context' => 'side'
)
) );
Possible values for the 'show' key:
-
'any'
- show admin box everywhere (default) -
'from'
- show the admin column only on the 'from' end -
'to'
- show the admin column only on the 'to' end -
false
- don't show admin box at all
Possible values for the 'context' key:
-
'side'
- show admin box in the right column -
'advanced'
- show the admin box under the main content editor
By default, P2P will use the labels that the custom post type has. If you want to overwrite them, you can use the 'from_labels' and 'to_labels' parameters, like so:
<?php
p2p_register_connection_type( array(
'name' => 'users_to_stuff',
'from' => 'user',
'to' => array( 'car', 'house' ),
'title' => array(
'from' => __( 'People', 'my-textdomain' ),
'to' => __( 'Items', 'my-textdomain' )
),
'from_labels' => array(
'singular_name' => __( 'Person', 'my-textdomain' ),
'search_items' => __( 'Search people', 'my-textdomain' ),
'not_found' => __( 'No people found.', 'my-textdomain' ),
'create' => __( 'Create Connections', 'my-textdomain' ),
),
'to_labels' => array(
'singular_name' => __( 'Item', 'my-textdomain' ),
'search_items' => __( 'Search items', 'my-textdomain' ),
'not_found' => __( 'No items found.', 'my-textdomain' ),
'create' => __( 'Create Connections', 'my-textdomain' ),
),
) );
Its possible to limit the number of connected items a post can on a per connection basis by using javascript. You will need to hook into admin_enqueue_scripts so the javascript file is included in the page.
add_action('admin_enqueue_scripts', array(&$this, 'limit_p2p_connections'));
function limit_p2p_connections($hook) {
global $post_type;
if ($post_type == '[POST_TYPE]' && 'edit.php' != $hook) {
wp_enqueue_script('limit_p2p_connections', [PATH_TO_JS_FILE] . '/p2plimit.js');
}
}
The example limits the maximum connected items to 1, increase the value to allow more connections.
jQuery(function($){
$('div[data-p2p_type="[CONNECTION_NAME]"]').bind("DOMSubtreeModified", function() {
if($('div[data-p2p_type="[CONNECTION_NAME]"] > table.p2p-connections >tbody >tr').length >= 1)
{
$('div[data-p2p_type="[CONNECTION_NAME]"] > div.p2p-create-connections').hide();
}
else
{
$('div[data-p2p_type="[CONNECTION_NAME]"] > div.p2p-create-connections').show();
}
});
$('div[data-p2p_type="[CONNECTION_NAME]"] > table.p2p-connections >tbody >tr').ready(function() {
if($('div[data-p2p_type="[CONNECTION_NAME]"] > table.p2p-connections >tbody >tr').length >= 1)
{
$('div[data-p2p_type="[CONNECTION_NAME]"] > div.p2p-create-connections').hide();
}
else
{
$('div[data-p2p_type="[CONNECTION_NAME]"] > div.p2p-create-connections').show();
}
});
});