Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Error al intentar acceder con usuario perteneciente a "custom role"

Estas en el tema de Error al intentar acceder con usuario perteneciente a "custom role" en el foro de WordPress en Foros del Web. 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. ...
  #1 (permalink)  
Antiguo 25/10/2011, 09:22
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 4 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
  #2 (permalink)  
Antiguo 25/10/2011, 18:35
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 8 meses
Puntos: 461
Respuesta: Error al intentar acceder con usuario perteneciente a "custom role"

buenas rogertm cual es la linea especìfica del error, el notice te indica que estas trabajando sobre una variable o un indice no definido, pero para poder ver cual es tienes que indicarnos cual es la lìnea y en que parte del codigo es
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 26/10/2011, 06:28
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 4 meses
Puntos: 638
Respuesta: Error al intentar acceder con usuario perteneciente a "custom role"

Hola Carlos, el notice lo envía porque estoy trabajando en modo debug de wordpress, de todas maneras muestro el pedazo de código de esa linea, aunque no se puede tocar, pues es parte del core de wordpress:
Código PHP:
Ver original
  1. $last_menu_key = array_pop( array_keys( $menu ) );
  2. if ( 'wp-menu-separator' == $menu[ $last_menu_key ][ 4 ] ) // linea 219
  3.     unset( $menu[ $last_menu_key ] );
  4. unset( $last_menu_key );
Gracias
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 26/10/2011, 16:18
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 8 meses
Puntos: 461
Respuesta: Error al intentar acceder con usuario perteneciente a "custom role"

roger en esa parte del core hasle el print_r a el $last_menu_key de tal manera que podamos ver cual es el problema con el key, porque el error te indica que uno de los key que estas pasando en ese arreglo no es correcto, ademàs del error de permisologìa, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 27/10/2011, 06:54
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 4 meses
Puntos: 638
Respuesta: Error al intentar acceder con usuario perteneciente a "custom role"

Carlos, $last_menu_key imprime 99. Yo sigo pensando que el asunto está en el tercer parámetro de la función que crea el menú, como dato adicional, al entrar con un usuario que tenga un role nativo de wordpress (editor, autor, ...) no se arroja error alguno.

Gracias por tu ayuda, sigo intentándolo
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #6 (permalink)  
Antiguo 07/11/2011, 09:45
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 4 meses
Puntos: 638
Exclamación Respuesta: Error al intentar acceder con usuario perteneciente a "custom role"

Intenté usando la función current_user_can(), pero sigo en las mismas:
Código PHP:
Ver original
  1. <?php
  2. $isadg_archivero = get_role('archivero');
  3. foreach ( $isadg_capabilities as $i_cap => $i_cap_value ) :
  4.     $isadg_archivero->add_cap( 'read_'.$i_cap_value['singular'] );
  5.     $isadg_archivero->add_cap( 'edit_'.$i_cap_value['singular'] );
  6.     $isadg_archivero->add_cap( 'publish_'.$i_cap_value['plural'] );
  7.  
  8. if (is_user_logged_in()) :
  9.     if (!current_user_can('read_'.$i_cap_value['singular']) ||
  10.         !current_user_can('edit_'.$i_cap_value['singular']) ||
  11.         !current_user_can('publish_'.$i_cap_value['plural']) ) :
  12.         wp_die('Damd you mother fucker');
  13.     endif;
  14. endif;
  15. endforeach;
  16. ?>
¿Alguien allá afuera podrá ayudarme?
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose

Etiquetas: custom, index, php, plugin, post, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:55.