Wordpress guidance - how do you handle custom pages for different user roles

Hello

This is my optimal scenario. It is a nursery website with general information available to all members of the public. I'm ok with that bit

Then there is an staff section where stafff can login and add informtion about a pupil's progress thtat day

Then there is a parent section where parents can login and find informton about their children for that day.

I have seen that you can include a role based admin section as described here
http://www.paulund.co.uk/create-your-own-wordpress-login-page

My query is about the custom pages for the staff and parent sections. These pages woudl have to be written using php and wont just be part of some template. Can i add the new database tables that I need to the wordpress database? Can i use the wpdb databsae object with my new tables?

I am presuming the answers woudl be yes to these questions. Where would i put the php pages for the parent/staff section? Would they just be relative to public html?

Thanks in advance. I'm not really that comfortable wth wordpress
andiejeAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

James RodgersWeb Applications DeveloperCommented:
we built a similar site set-up using custom user roles and custom permissions.

we had 10 different user roles with about 12-15 permissions available to each role

Create a matrix, user types (roles) along the top, and permissions or access rights down the left
User roles might be something like public user, logged in parent, logged in staff, logged in admin, logged in super admin
permissions might be  can add admin, can add parent, can add child, can see child page, can edit child profile, etc.

you might wan to look at Advanced custom fields also, this will help in creating a parent-child relationship, you can use the basic options to create a parent and repeater option to allow for creating one or more children you will need a unique id for the family and for each child

the pages can be templates, you would need a role check at the top of the page, after the wp_header call.
use the family id of the logged in user to allow them access to a child's status page and the child page uses the family id to look up the associated children, the repeater field in ACF allows each child profile to be unique and can be displayed on a single page, including images.

what else are you looking for?
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
andiejeAuthor Commented:
This sounds great. Would it be too cheeky as ask for a screenshot? I presume asking how you did it woudl just be outrageously impudent :)
0
James RodgersWeb Applications DeveloperCommented:
here are some examples of how it can be accomplished

//http://codex.wordpress.org/Roles_and_Capabilities
//http://codex.wordpress.org/Function_Reference/add_cap
//http://codex.wordpress.org/Function_Reference/current_user_can

 $cap_array_custom_admin = array(
    'delete_others_pages' => true,
    'delete_others_posts' => true,
    'delete_pages' => true,
    'delete_posts' => true,
    'delete_private_pages' => true,
    'delete_private_posts' => true,
    'delete_published_pages' => true,
    'delete_published_posts' => true,
    'edit_others_pages' => true,
    'edit_others_posts' => true,
    'edit_pages' => true,
    'edit_posts' => true,
    'edit_private_pages' => true,
    'edit_private_posts' => true,
    'edit_published_pages' => true,
    'edit_published_posts' => true,
    'manage_categories' => false,
    'manage_links' => true,
    'moderate_comments' => true,
    'publish_pages' => true,
    'publish_posts' => true,
    'read' => true,
    'read_private_pages' => true,
    'read_private_posts' => true,
    'unfiltered_html ' => false,
    'upload_files' => true,
    'allow_front_end_new_post_submit' => true,
    'allow_verified_user_comment' => true,
    'allow_post_thumbs_up' => true,
    'allow_post_social_media_sharing' => true,
    'allow_verify_club_member_reg' => true,
    'allow_verify_club_staff_reg' => true,
    'allow_verify_public_reg' => true,
    'allow_club_post_abuse_report_notification' => true,
    'allow_approve_club_post' => true,
    'allow_approve_public_post' => true,
    'allow_public_post_abuse_report_notification' => true,
    'allow_set_feature_post' => true,
    'allow_disable_account' => true,
    'allow_approve_tag' => true,
    'allow_add_new_custom_admin' => true);
    add_role('Custom_Admin', 'Custom Admin', $cap_array_custom_admin);
   
   
 //change the capabilities to various other roles, create a user role without the ability to add new admins
 //change the value in the array to false
 $cap_array_custom_admin['allow_add_new_custom_admin'] = false;
 //create the role
 add_role('Custom_Admin_jr', 'Custom Admin Junior', $cap_array_custom_admin);
 
 //add a capability, add this to the array
 add_role('Custom_Admin_spr', 'Custom Admin Super',  array_merge(array(
            'allow_add_new_custom_admin'=>true,
            ),$cap_array_custom_admin));  
   
// check the user role
function get_user_roles( $user_id ) {
    $user_roles = [];

    $user = get_userdata( $user_id );
    $capabilities = $user->{$wpdb->prefix . 'capabilities'};

    if ( !isset( $wp_roles ) ) {
        $wp_roles = new WP_Roles();

        foreach ( $wp_roles->role_names as $role => $name ) {

            if ( array_key_exists( $role, $capabilities ) )
                $user_roles[] = $role;
        }
    }

    return $user_roles;
}

//check if the current user can do a soecfic capability
if (current_user_can( 'allow_add_new_custom_admin' ) ){
      // do action(s) allowable by users with this capability
}
0
andiejeAuthor Commented:
Superb :)
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
WordPress

From novice to tech pro — start learning today.