A solução implica que você desabilitou a edição dos tipos de postagem "normais" (postagem, página).
É não tão duro como você pode acreditar. A chave é o nome de login do usuário . O mesmo poderia ser feito com taxonomias ou mesmo termos.
Veja o seguinte (também há um exemplo para uma consulta):
// 1st: Add a post type for that user with it's
// user login & according capabilities
function create_user_home() {
global $current_user;
get_currentuserinfo();
register_post_type(
'home_of_'.$current_user->user_login,
array(
'public' => true,
'capability_type' => $current_user->user_login,
'capabilities' => array(
'publish_posts' => 'publish_'.$current_user->user_login,
'edit_posts' => 'edit_'.$current_user->user_login,
'edit_others_posts' => 'edit_'.$current_user->user_login,
'delete_posts' => 'delete_'.$current_user->user_login,
'delete_others_posts' => 'delete_others_'.$current_user->user_login,
'read_private_posts' => 'read_private_'.$current_user->user_login,
'edit_post' => 'edit_'.$current_user->user_login,
'delete_post' => 'delete_'.$current_user->user_login,
'read_post' => 'read_'.$current_user->user_login,
),
)
);
}
add_action( 'init', 'create_user_home' );
// A query could be done like this:
wp_reset_query(); // to be sure
global $wp_query, $current_user;
get_currentuserinfo();
$query_user_home = new WP_Query( array(
,'order' => 'ASC'
,'post_type' => 'home_of_'.$current_user->user_login
,'post_status' => 'publish'
) );
if ( $query_user_home->have_posts() ) :
while ( $query_user_home->have_posts() ) : $query_user_home->the_post();
// check for password
if ( post_password_required() ) :
the_content();
elseif ( !current_user_can('') ) :
// display some decent message here
return;
else :
// here goes your content
endif;
endwhile;
else : // else; no posts
printf(__( 'Nothing from Mr./Mrs. %1$s so far.', TEXTDOMAIN ), $current_user->user_firstname.' '.$current_user->user_lastname);
endif; // endif; have_posts();
wp_rewind_posts(); // for a sec. query
Com taxonomias, isso faria ainda mais sentido, porque você poderia consultar apenas as postagens que estão marcadas com termos das taxonomias desses usuários, mas que precisariam de uma meta caixa de postagem com os termos de taxonomia dos usuários. A condição seria a mesma: nome de login do usuário e você adicionaria a taxonomia:
function create_user_tax() {
if ( current_user_can("$current_user->user_login") ) :
global $current_user;
get_currentuserinfo();
$singular = $current_user->user_login;
$plural = $singular.'\'s';
// labels
$labels = array (
'name' => $plural
,'singular_name'=> $singular
);
// args
$args = array (
'public' => true
,'show_in_nav_menus' => true
,'show_ui' => true
,'query_var' => true
,'labels' => $labels
,'capabilities' => array(
'manage_'.$current_user->user_login
)
);
// Register
register_taxonomy (
$current_user->user_login
,array ( 'post', 'page' )
,$args
);
// Add to post type
// you can even add your current user post type here
register_taxonomy_for_object_type (
$current_user->user_login
,array ( 'post', 'page', 'home_of_'.$current_user->user_login )
);
endif;
}
add_action( 'init', 'create_user_tax' );
O posicionamento da verificação de capacidade (current_user_can) também pode estar em outro lugar. Depende de todas as suas necessidades específicas. Apenas para ter certeza: Estes são exemplos para guiá-lo no seu caminho para uma solução. Espero que ajude :)