Get post, pages and custom post types from another site of your WordPress Multisite installation.
This plugin needs the installation/activation of Advanced Custom Fields V5
This add-on can be treated as both a WP plugin and a theme include.
Install as Plugin
- Copy the 'acf-relationship-multisite' folder into your plugins folder
- Activate the plugin via the Plugins admin page
Include within theme
- Copy the 'acf-relationship-multisite' folder into your theme folder (can use sub folders). You can place the folder anywhere inside the 'wp-content' directory
- Edit your functions.php file and add the code below (Make sure the path is correct to include the acf-date_time_picker.php file)
add_action('acf/register_fields', 'my_register_fields');
function my_register_fields()
{
include_once('acf-relationship-multisite/acf-relationship-multisite.php');
}
Field settings
The ACF Relationship Multisite field is similar to the standard ACF Relationship field. You will get the selection of all installed multisites and a few options.
In editor mode you'll see from which site the post list is get from.
Usage
The field content is stored in an two dimensional array. In this array [selected posts] you will get an array with the all the post objects (if you selet 'Post Object' in field sttings)
Array
(
[selected_posts] => Array
(
[0] => WP_Post Object
(
[ID] => 3
[post_author] => 1
[post_date] => 2014-09-18 19:56:07
[post_date_gmt] => 2014-09-18 19:56:07
[post_content] =>
[post_title] => My Sample Post
[post_excerpt] =>
[post_status] => publish
[comment_status] => open
[ping_status] => open
[post_password] =>
[post_name] => sample-post
[to_ping] =>
[pinged] =>
[post_modified] => 2014-09-18 19:56:07
[post_modified_gmt] => 2014-09-18 19:56:07
[post_content_filtered] =>
[post_parent] => 0
[guid] => http://yourdomain.com/multisite/?p=3
[menu_order] => 0
[post_type] => post
[post_mime_type] =>
[comment_count] => 0
[filter] => raw
)
)
[site_id] => 5
)
or with all post ids (if you choose 'Post ID'). The second array [site_id] holds the site id of your selected multisite.
Array
(
[selected_posts] => Array
(
[0] => 3
)
[site_id] => 5
)
To get the post on the frontend you need to do a foreach loop.
With Post ID
// get field value
$posts = get_field('field_name');
if( $posts ):
// switch to multisite
switch_to_blog( $posts['site_id'] ); ?>
<ul>
<?php foreach ($posts['selected_posts'] as $post): // variable must be called $post (IMPORTANT) ?>
<?php setup_postdata($post); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<span>Custom field from $post: <?php the_field('author'); ?></span>
</li>
<?php endforeach; ?>
</ul>
<?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
<?php restore_current_blog(); // IMPORTANT switch back to current site?>
<?php endif; ?>
With Post Object
// get field value
$posts = get_field('field_name');
if( $posts ):
// switch to multisite
switch_to_blog( $posts['site_id'] ); ?>
<ul>
<?php foreach ($posts['selected_posts'] as $acf_post): ?>
<li>
<a href="<?php echo $acf_post->guid; ?>"><?php echo $acf_post->post_title; ?></a>
<span>Custom field from $post: <?php the_field('author', $acf_post->ID); ?></span>
</li>
<?php endforeach; ?>
</ul>
<?php restore_current_blog(); // IMPORTANT switch back to current site?>
<?php endif; ?>
This ACF field type is compatible with:
- ACF 5
1.0.0
- First release