Hola mundo. Estoy intentando crear un plugin, donde además de tener diferentes post types, necesito crear diferentes roles de usuarios que manejen esos post types.
Todo bien, tengo los post types creados, los nuevos roles de usuarios, puedo agregar usuarios y asignarles esos roles, pero al intentar acceder al administrador de wordpress con esos usuarios, me lanza un error:
Cita: Notice: Undefined index: in /home/rogertm/WebServer/wp-gd/wp-admin/includes/menu.php on line 219
You do not have sufficient permissions to access this page.
Con esta función registro los post types y les asigno las capability_type('singular', 'plural') y las capabilities(array ...)
Código PHP:
Ver original<?php
add_action('init', 'isadg_register_post_tax');
function isadg_register_post_tax() {
// Register post type
$isadg_post_type = array ( 'n_fondo' => array ( 'post-type' => 'fondo', 'singular' => 'Fondo', 'plural' => 'Fondos', 'plurals' => 'fondos' ), 'n_subfondo' => array ( 'post-type' => 'subfondo', 'singular' => 'Sub Fondo', 'plural' => 'Sub Fondos', 'plurals' => 'subfondos' ), // n post types
);
foreach ( $isadg_post_type as $i_post_type => $i_post_type_value ) :
// n argumentos
'capability_type' => array($i_post_type_value['post-type'], $i_post_type_value['plurals']), 'edit_post' => 'edit_'.$i_post_type_value['post-type'],
'edit_posts' => 'edit_'.$i_post_type_value['plurals'],
'edit_others_posts' => 'edit_'.$i_post_type_value['plurals'],
'publish_posts' => 'publish_'.$i_post_type_value['plurals'],
'read_posts' => 'read_'.$i_post_type_value['plurals'],
'delete_post' => 'delete_'.$i_post_type_value['post-type']
)
);
register_post_type($i_post_type_value['post-type'], $args);
endforeach;
}
?>
Esta otra función agrega los nuevos roles de usuarios y sus correspondientes capabilities:
Código PHP:
Ver original<?php
add_action('init','isadg_add_roles');
function isadg_add_roles() {
// We create custom user roles
$isadg_user_roles = array ( 'user-archivero' => array ( 'user-role' => 'archivero', 'role-name' => 'Archivero' ), 'user-archivero-editor' => array ( 'user-role' => 'archivero-editor', 'role-name' => 'Archivero Editor' ) );
foreach ( $isadg_user_roles as $user_role => $user_role_value ) :
add_role( $user_role_value['user-role'], $user_role_value['role-name'] );
endforeach;
// We asing capabilities for custom user roles
$isadg_capabilities = array ( 'cap-fondo' => array ( 'singular' => 'fondo', 'plural' => 'fondos' ), 'cap-subfondo' => array ( 'singular' => 'subfondo', 'plural' => 'subfondos' ), // ...
);
// Role Administrator. Native of Wordpress
$isadg_admin = get_role('administrator');
foreach ( $isadg_capabilities as $i_cap => $i_cap_value ) :
$isadg_admin->add_cap( 'read_'.$i_cap_value['singular'] );
$isadg_admin->add_cap( 'edit_'.$i_cap_value['singular'] );
$isadg_admin->add_cap( 'edit_'.$i_cap_value['plural'] );
$isadg_admin->add_cap( 'edit_others_'.$i_cap_value['plural'] );
$isadg_admin->add_cap( 'publish_'.$i_cap_value['plural'] );
$isadg_admin->add_cap( 'delete_'.$i_cap_value['singular'] );
endforeach;
// Role Archivero
$isadg_archivero = get_role('archivero');
foreach ( $isadg_capabilities as $i_cap => $i_cap_value ) :
$isadg_archivero->add_cap( 'read_'.$i_cap_value['singular'] );
$isadg_archivero->add_cap( 'edit_'.$i_cap_value['singular'] );
$isadg_archivero->add_cap( 'publish_'.$i_cap_value['plural'] );
endforeach;
}
?>
Supongo que el error está dado en la función que me crea el menú del plugin:
Código PHP:
Ver original<?php
add_menu_page('WP-ISAD(G)', 'WP-ISAD(G)', 'manage_options', 'wp-isadg', 'wp_isadg_settings', plugins_url('/img/icon.png', __FILE__), 25);
?>
en el tercer parámetro: 'manage_options', pero no hay un ejemplo claro en la documentación de wordpress (
http://codex.wordpress.org/Function_.../add_menu_page), solo que es un string obligatorio.
Desde ya agradecido por la ayuda que me puedan ofrecer.