Solved

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

Posted on 2014-07-21
6
260 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
6 Comments
 
LVL 25

Accepted Solution

by:
James Rodgers earned 500 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

How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

Question has a verified solution.

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

This article was originally published on Monitis Blog, you can check it here . Today it’s fairly well known that high-performing websites and applications bring in more visitors, higher SEO, and ultimately more sales. By the same token, downtime…
Dramatic changes are revolutionizing how we build and use technology. Every company is automating, digitizing, and modernizing operations. We need a better, more connected way to work together as teams so we can harness the insights from our system…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

739 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