Yacc
Пользователи в массиве $users с ключами по логину пользователей (в примере admin). Категория (в примере Uncategorized) должна существовать иначе посты создаваться не будут.
Вроде работает, но я особо не тестировал, проверяй сам.
wp-content/plugins/foo/foo.php
<?php
/*
Plugin Name: foo
*/
require ABSPATH.WPINC.'/pluggable.php';
global $pagenow;
global $current_user;
get_currentuserinfo();
$users = array(
'admin' => array(
'page' => array(
'index.php' => true,
'edit.php' => true,
'post.php' => true,
'post-new.php' => true
),
'category' => 'Uncategorized'
)
);
$msg = "You don’t have premissions to access this page.";
if(isset($users[$current_user->user_login])) {
add_filter('xmlrpc_enabled', '__return_false');
add_filter( 'enable_post_by_email_configuration', '__return_false' );
if(is_admin()) {
$user = $users[$current_user->user_login];
if(isset($user['page'][$pagenow])) {
add_action('pre_get_posts', create_function('', 'global $typenow;if(\'post\'!=$typenow)wp_die(\''.$msg.'\');'));
if($pagenow == 'edit.php') {
add_action('pre_get_posts', create_function('','set_query_var(\'author\','.$current_user->ID.');'));
add_filter('post_row_actions', 'remove_quick_edit_link');
add_filter('wp_dropdown_cats', '__return_false');
add_filter('manage_posts_columns', 'remove_columns');
}
else if($pagenow == 'post.php' or $pagenow == 'post-new.php') {
add_action('do_meta_boxes', 'remove_metaboxes');
add_filter( 'option_default_category', create_function('$value', 'return '.get_cat_ID($user['category']).';'));
}
}
else
wp_die($msg);
}
}
function remove_columns($columns){
unset($columns['author']);
unset($columns['categories']);
unset($columns['tags']);
unset($columns['comments']);
return $columns;
}
function remove_quick_edit_link($actions) {
if(isset($actions['inline hide-if-no-js']))
unset($actions['inline hide-if-no-js']);
return $actions;
}
function remove_metaboxes() {
remove_meta_box('categorydiv', 'post', 'side');
remove_meta_box('formatdiv', 'post', 'side');
remove_meta_box('tagsdiv-post_tag', 'post', 'side');
remove_meta_box('postimagediv', 'post', 'side');
remove_meta_box('slugdiv', 'post', 'normal');
remove_meta_box('postexcerpt', 'post', 'normal');
remove_meta_box('trackbacksdiv', 'post', 'normal');
remove_meta_box('postcustom', 'post', 'normal');
remove_meta_box('commentstatusdiv', 'post', 'normal');
remove_meta_box('commentsdiv', 'post', 'normal');
remove_meta_box('revisionsdiv', 'post', 'normal');
remove_meta_box('authordiv', 'post', 'normal');
remove_meta_box('sqpt-meta-tags', 'post', 'normal');
}