How to copy post meta to the remote sites
This code snippet shows how to copy post meta to the remote site(s). In the example it gets the value of yoast_wpseo_title
post meta from the request and then updates the value in the connected sites.
add_action('multilingualpress.metabox_after_relate_posts', function($context, $request) { // get post meta value from source site $yoastWpseoTitleValue = (string)$request->bodyValue( 'yoast_wpseo_title', INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS ); // switch to remote sites and save post meta $remoteSiteId = $context->remoteSiteId(); $remotePostId = $context->remotePostId(); switch_to_blog($remoteSiteId); update_post_meta($remotePostId, '_yoast_wpseo_title', $yoastWpseoTitleValue); restore_current_blog(); }, 10, 2);
The above example shows a case when a plugin registers the custom field, but it is also possible to connect custom fields generated by WordPress from Custom Fields UI in post editor, so let say we have created a new custom field my-field
in site one and we want to synchronize the value to the same custom field in site 2, once we have created the custom field with the same name in site 2, we can use the multilingualpress.metabox_after_relate_posts action like so:
add_action('multilingualpress.metabox_after_relate_posts', function ($context, $request) { // switch to source site switch_to_blog($context->sourceSiteId()); // grab post meta value $value = get_post_meta($context->sourcePostId(), 'my-field', true); // switch to remote site restore_current_blog(); // update post meta update_post_meta($context->remotePostId(), 'my-field', $value); }, 10, 2);