การแก้ปัญหากำหนดว่าคุณได้ปิดการแก้ไขประเภทโพสต์ "ปกติ" (โพสต์, หน้า)
มันไม่ยากอย่างที่คุณคิด สำคัญเป็นชื่อเข้าสู่ระบบของผู้ใช้ เช่นเดียวกับ taxonomies หรือแม้แต่เงื่อนไข
ดูต่อไปนี้ (มีตัวอย่างของแบบสอบถามด้วย):
// 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
ด้วย taxonomies สิ่งนี้จะทำให้เข้าใจได้ง่ายขึ้นเนื่องจากคุณสามารถค้นหาเฉพาะการโพสต์ที่ติดแท็กด้วยคำศัพท์จาก taxonomies ของผู้ใช้รายนี้ แต่จะต้องมีกล่องเมตาโพสต์ที่มีเงื่อนไข taxonomy ของผู้ใช้ เงื่อนไขจะเหมือนกัน: ชื่อล็อกอินของผู้ใช้และคุณเพียงแค่เพิ่มอนุกรมวิธาน:
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' );
การวางตำแหน่งของการตรวจสอบความสามารถ (current_user_can) อาจเป็นที่อื่นเช่นกัน ขึ้นอยู่กับความต้องการเฉพาะของคุณ เพียงเพื่อให้แน่ใจว่า: นี่คือตัวอย่างที่จะแนะนำคุณเกี่ยวกับวิธีการแก้ปัญหา หวังว่าจะช่วย :)