特定ユーザーのみに記事を閲覧させる&既読かどうかをチェックボックスで判定

<?php
	if(user_logged_in()){
	/*
	記事投稿時に「userid」というカスタムフィールドに見せたいユーザーのIDを入力しておきます。
	*/
	
	//ログイン中のユーザーのIDを取得
	global $user_ID;
	get_currentuserinfo();
	
	//カスタムフィールド「userid」がログイン中のユーザーのIDのものだけを取得
	//これでログイン中の場合、自分のIDとして設定された記事のみが表示されます。
	$arg = array(
		'meta_key' => 'userid',
		'meta_value' => $user_ID
	);
	query_posts($arg);
?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
	
	<?php
		//記事を見たかどうかの処理は記事のカスタムフィールドに閲覧済みかどうかで値を持たせる
		//この例では記事のカスタムフィールド「read」が「1」ならば閲覧済みとする
		
		//POSTで「read」というキーが送られたときにカスタムフィールドに「read=1」を追加する
		if($_POST['read'] == '1' && wp_verify_nonce($_REQUEST['_wpnonce'],'nonce')){
			//ひょっとしたら$post->IDがとれないかもしれないので実際に設置して確認してみてください。
			add_post_meta($post->ID,'read',1);
		}
		
	?>
	<form action="./" method="post">
		<!-- 実装時はCSRFなどに注意してください -->
		<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('nonce'); ?>" />
		<input type="checkbox" name="read" value="1" />
		<input type="submit" value="この記事を確認しました" />
	</form>
	
	<!-- あとは通常のループと同様にthe_title()やthe_content()で記事の内容を出力 -->
	<?php the_title(); ?>
	<?php the_content(); ?>
	
<?php endwhile; else: ?>
<?php endif; ?>

<?php } else {
	//非ログインユーザー向けの表示
	echo 'ログインしてください。';
} ?>