Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/10/2011, 09:22
Avatar de rogertm
rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Exclamación Error al intentar acceder con usuario perteneciente a "custom role"

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
  1. <?php
  2. add_action('init', 'isadg_register_post_tax');
  3. function isadg_register_post_tax() {
  4.     // Register post type
  5.     $isadg_post_type = array (
  6.         'n_fondo'        => array ( 'post-type' => 'fondo', 'singular' => 'Fondo', 'plural' => 'Fondos', 'plurals' => 'fondos' ),
  7.         'n_subfondo'    => array ( 'post-type' => 'subfondo', 'singular' => 'Sub Fondo', 'plural' => 'Sub Fondos', 'plurals' => 'subfondos' ),
  8.         // n post types
  9.         );
  10.     foreach ( $isadg_post_type as $i_post_type => $i_post_type_value ) :
  11.         $labels    = array(...);
  12.         $args    = array(
  13.                 // n argumentos
  14.                 'capability_type'    => array($i_post_type_value['post-type'], $i_post_type_value['plurals']),
  15.                 'capabilities'        => array(
  16.                     'edit_post'                => 'edit_'.$i_post_type_value['post-type'],
  17.                     'edit_posts'            => 'edit_'.$i_post_type_value['plurals'],
  18.                     'edit_others_posts'        => 'edit_'.$i_post_type_value['plurals'],
  19.                     'publish_posts'            => 'publish_'.$i_post_type_value['plurals'],
  20.                     'read_posts'            => 'read_'.$i_post_type_value['plurals'],
  21.                     'delete_post'            => 'delete_'.$i_post_type_value['post-type']
  22.                     )
  23.         );
  24.         register_post_type($i_post_type_value['post-type'], $args);
  25.     endforeach;
  26. }
  27. ?>

Esta otra función agrega los nuevos roles de usuarios y sus correspondientes capabilities:
Código PHP:
Ver original
  1. <?php
  2. add_action('init','isadg_add_roles');
  3. function isadg_add_roles() {
  4.     // We create custom user roles
  5.     $isadg_user_roles = array (
  6.         'user-archivero'            => array ( 'user-role' => 'archivero', 'role-name' => 'Archivero' ),
  7.         'user-archivero-editor'        => array ( 'user-role' => 'archivero-editor', 'role-name' => 'Archivero Editor' )
  8.     );
  9.     foreach ( $isadg_user_roles as $user_role => $user_role_value ) :
  10.         add_role( $user_role_value['user-role'], $user_role_value['role-name'] );
  11.     endforeach;
  12.  
  13.     // We asing capabilities for custom user roles
  14.     $isadg_capabilities = array (
  15.         'cap-fondo'            => array ( 'singular' => 'fondo', 'plural' => 'fondos' ),
  16.         'cap-subfondo'        => array ( 'singular' => 'subfondo', 'plural' => 'subfondos' ),
  17.         // ...
  18.     );
  19.     // Role Administrator. Native of Wordpress
  20.     $isadg_admin = get_role('administrator');
  21.     foreach ( $isadg_capabilities as $i_cap => $i_cap_value ) :
  22.         $isadg_admin->add_cap( 'read_'.$i_cap_value['singular'] );
  23.         $isadg_admin->add_cap( 'edit_'.$i_cap_value['singular'] );
  24.         $isadg_admin->add_cap( 'edit_'.$i_cap_value['plural'] );
  25.         $isadg_admin->add_cap( 'edit_others_'.$i_cap_value['plural'] );
  26.         $isadg_admin->add_cap( 'publish_'.$i_cap_value['plural'] );
  27.         $isadg_admin->add_cap( 'delete_'.$i_cap_value['singular'] );
  28.     endforeach;
  29.     // Role Archivero
  30.     $isadg_archivero = get_role('archivero');
  31.     foreach ( $isadg_capabilities as $i_cap => $i_cap_value ) :
  32.         $isadg_archivero->add_cap( 'read_'.$i_cap_value['singular'] );
  33.         $isadg_archivero->add_cap( 'edit_'.$i_cap_value['singular'] );
  34.         $isadg_archivero->add_cap( 'publish_'.$i_cap_value['plural'] );
  35.     endforeach;
  36. }
  37. ?>
Supongo que el error está dado en la función que me crea el menú del plugin:
Código PHP:
Ver original
  1. <?php
  2.     add_menu_page('WP-ISAD(G)', 'WP-ISAD(G)', 'manage_options', 'wp-isadg', 'wp_isadg_settings', plugins_url('/img/icon.png', __FILE__), 25);
  3. ?>
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.
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose