Solved

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

Posted on 2014-07-21
6
252 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
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 to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

So you have coded your own WordPress plugin and now you want to allow users to upload images to a folder in the plugin folder rather than the default media location? Follow along and this article will show you how to do just that!
I annotated my article on ransomware somewhat extensively, but I keep adding new references and wanted to put a link to the reference library.  Despite all the reference tools I have on hand, it was not easy to find a way to do this easily. I finall…
The purpose of this video is to demonstrate how to set up an RSS Feed on a WordPress Website. This will be demonstrated using a Windows 8 PC. Feedburner will be used for this demonstration. Go to your WordPress login page. This will look like the…
The purpose of this video is to demonstrate how to set up the permalinks on a WordPress Website. This will be demonstrated using a Windows 8 PC. Go to your WordPress login page. This will look like the following: mywebsite.com/wp-login.php : Go t…

706 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now