在我的WordPress网站上,我创建了两种自定义帖子类型:"quaderni"和"ricerche"。
function my_custom_post_quaderni() {
$labels = array(
'name' => _x( 'Quaderni', 'post type general name' ),
'singular_name' => _x( 'Quaderni', 'post type singular name' ),
'add_new' => _x( 'Aggiungi Nuovo', 'quaderno' ),
'add_new_item' => __( 'Aggiungi nuovo Quaderno' ),
'edit_item' => __( 'Modifica Quaderno' ),
'new_item' => __( 'Nuovo Quaderno' ),
'all_items' => __( 'Tutti i Quaderni' ),
'view_item' => __( 'Vedi Quaderno' ),
'search_items' => __( 'Cerca Quaderni' ),
'not_found' => __( 'Nessun Quaderno trovato' ),
'not_found_in_trash' => __( 'Nessun Quaderno nel cestino' ),
'parent_item_colon' => '',
'menu_name' => 'Quaderni'
);
$args = array(
'labels' => $labels,
'description' => 'Database Quaderni',
'public' => true,
'menu_position' => 5,
'supports' => array( 'title', 'editor'),
'has_archive' => true,
);
register_post_type( 'quaderni', $args );
}
add_action( 'init', 'my_custom_post_quaderni' );
function my_custom_post_ricerche() {
$labels = array(
'name' => _x( 'Ricerche', 'post type general name' ),
'singular_name' => _x( 'Ricerche', 'post type singular name' ),
'add_new' => _x( 'Aggiungi Nuovo', 'ricerca' ),
'add_new_item' => __( 'Aggiungi nuova ricerca' ),
'edit_item' => __( 'Modifica Ricerca' ),
'new_item' => __( 'Nuovo Ricerca' ),
'all_items' => __( 'Tutti le Ricerche' ),
'view_item' => __( 'Vedi Ricerca' ),
'search_items' => __( 'Cerca Ricerche' ),
'not_found' => __( 'Nessuna Ricerca trovata' ),
'not_found_in_trash' => __( 'Nessuna Ricerca nel cestino' ),
'parent_item_colon' => '',
'menu_name' => 'Ricerche'
);
$args = array(
'labels' => $labels,
'description' => 'Database Ricerche',
'public' => true,
'menu_position' => 5,
'supports' => array( 'title', 'editor'),
'has_archive' => true,
);
register_post_type( 'ricerche',
$args,
array(
'public' => true,
'capability_type' => 'ricerche',
'capabilities' => array(
'publish_posts' => 'publish_ricerche',
'edit_posts' => 'edit_ricerche',
'edit_others_posts' => 'edit_others_ricerche',
'read_private_posts' => 'read_private_ricerche',
'edit_post' => 'edit_ricerche',
'delete_post' => 'delete_ricerche',
'read_post' => 'read_ricerche',
),
)
);
}
add_action( 'init', 'my_custom_post_ricerche' );
我创建了一个"ricercatore2"自定义用户。 他可以编辑和阅读帖子以及自定义帖子。
add_role('ricercatore2',
'Ricercatore2',
array(
'read' => true,
'edit_posts' => true,
'delete_posts' => true,
'publish_posts' => false,
'upload_files' => true,
)
);
function add_capability()
{
$role = get_role('ricercatore2');
$role->add_cap('read_ricerche');
$role->add_cap('edit_ricerche');
$role->add_cap('delete_ricerche', false); // to be sure
}
add_action('admin_init', 'add_capability');
我想让他只能编辑"ricerche"自定义帖子类型。 但是现在,用户还可以编辑"quaderni"自定义帖子类型和常规帖子。 或者插件内容,例如联系表单 7 中的表单。 是否可以限制自定义用户在wordpress中仅编辑一种类型的自定义帖子?
看起来你在这里为新角色添加了上限
add_role('ricercatore2',
'Ricercatore2',
array(
'read' => true,
'edit_posts' => true,
'read_posts' => true,
'publish_posts' => false,
'upload_files' => false,
)
);
你为什么不做
add_role('ricercatore2',
'Ricercatore2',
array(
'read' => false,
'edit_ricerche' => true,
'delete_ricerche' => true,
'publish_posts' => false,
'upload_files' => false,
)
);
此外,如果您添加了一些自定义角色和上限,并在进行更改后 - 尝试删除角色和上限