Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2014-07-21
6
Medium Priority
?
271 Views
Last Modified: 2014-09-19
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
0
Comment
Question by:andieje
  • 2
  • 2
4 Comments
 
LVL 25

Accepted Solution

by:
James Rodgers earned 2000 total points
ID: 40287753
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
 

Author Comment

by:andieje
ID: 40308447
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
 
LVL 25

Expert Comment

by:James Rodgers
ID: 40309704
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
 

Author Closing Comment

by:andieje
ID: 40332973
Superb :)
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When the s#!t hits the fan, you don’t have time to look up who’s on call, draft emails, call collaborators, or send text messages. An instant chat window is definitely the way to go, especially one like HipChat. HipChat is a true business app. An…
While Plesk offers many potential benefits to website administrators, including compatibility with Windows Server and other leading technologies, the company has also been working to differentiate it from other control panels for content management…
The viewer will learn the benefit of using external CSS files and the relationship between class and ID selectors. Create your external css file by saving it as style.css then set up your style tags: (CODE) Reference the nav tag and set your prop…
The viewer will the learn the benefit of plain text editors and code an HTML5 based template for use in further tutorials.
Suggested Courses

783 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question