• 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:

    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 …)

    <?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 ) :
            $labels    = array(...);
            $args    = array(
                    // n argumentos
                    'capability_type'    => array($i_post_type_value['post-type'], $i_post_type_value['plurals']),
                    'capabilities'        => array(
                        '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:

    <?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:

    <?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_Reference/add_menu_page), solo que es un string obligatorio.

    Desde ya agradecido por la ayuda que me puedan ofrecer.

    PD: Por acá ya había preguntado pero no he obtenido la respuesta adecuada

El debate ‘Error al intentar acceder con usuario perteneciente a "custom role"’ está cerrado a nuevas respuestas.