La sollicution implique que vous avez désactivé l'édition des types de messages "normaux" (message, page).
Ce n'est pas aussi difficile qu'on pourrait le croire. La clé est le nom de connexion de l' utilisateur . La même chose pourrait être faite avec des taxonomies ou même des termes.
Voir ce qui suit (il y a aussi un exemple de requête):
// 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
Avec les taxonomies, cela aurait même plus de sens, car vous ne pouvez interroger que les publications étiquetées avec les termes des taxonomies de ces utilisateurs, mais cela nécessiterait une méta-boîte de publication avec les termes de taxonomie des utilisateurs. La condition serait la même: nom de connexion de l'utilisateur et il suffit d'ajouter la taxonomie:
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' );
Le placement de la vérification des capacités (current_user_can) pourrait également être ailleurs. Tout dépend de vos besoins spécifiques. Juste pour être sûr que ce sont des exemples pour vous guider sur votre chemin vers une sollicution. J'espère que ça aide :)