Save array to post meta

For example, you need to save list of users, who entered each page or post:

<?php
global $post, $current_user;
$data = unserialize(get_post_meta($post->ID, '_list', true));
if( count($data) != 0 ) {
	if ( !in_array( $current_user->ID, $data ) ) {
		$data[] = $current_user->ID;
	}
	$data = array_unique($data); // remove duplicates
	sort( $data ); // sort array
	//$data = serialize($data);
	update_post_meta($post->ID, '_list', $data);
} else {
	$data = array();
	$data[0] = $current_user->ID;
	//$data = serialize($data);
	update_post_meta($post->ID, '_list', $data);  
}
?>

2 comments on “Save array to post meta

  1. Great, this really helps!
    It doesn't work with the latest WordPress however. This line in both blocks isn't necessary:
    $data = serialize($data);

    In fact it will store a serialized string containing the serialized array in it. WordPress automatically serializes arrays when update_post_meta is called.

Leave a Reply

Your email address will not be published. Required fields are marked *