Custom post type and edit_others_posts
-
Hi
I have a custom post type for jobs and also three user roles who will administer this post type.
Admin – me, should be able to see everything
Editors – should be able to have usual editor roles but be able to do everything in the jobs CPT
Authority – should only see the jobs section in admin, but can upload media. They should only see the posts they have added themselvesAll user roles should be able to tick the taxonomies also in order to build a full job role and facilitate the job search on the front end.
My scripts to achieve this mostly work, however admins and editors aren’t seeing all jobs added. The count at the top of the page (All, mine, published etc) show the full figures but when clicking to them only see own posts.
Can anyone help?
<?php /** * Custom post type for jobs and taxonimies */ add_action( 'init', 'create_custom_post_types' ); function create_custom_post_types() { register_post_type( 'sc_jobs', array( 'labels' => array( 'name' => 'Job', 'singular_name' => 'Job', 'add_new' => 'Add New', 'add_new_item' => 'Add New', 'edit_item' => 'Edit', 'new_item' => 'New', 'all_items' => 'All Jobs', 'view_item' => 'View', 'search_items' => 'Search', 'not_found' => 'No jobs found', 'not_found_in_trash' => 'No jobs found in Trash', 'parent_item_colon' => '', 'menu_name' => 'Jobs' ), 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'job'), 'capability_type' => 'job', 'capabilities' => array( 'publish_posts' => 'publish_jobs', 'edit_posts' => 'edit_jobs', 'edit_others_posts' => 'edit_others_jobs', 'delete_posts' => 'delete_jobs', 'delete_others_posts' => 'delete_others_jobs', 'read_private_posts' => 'read_private_jobs', 'edit_post' => 'edit_jobs', 'delete_post' => 'delete_jobs', 'read_post' => 'read_jobs', 'assign_terms' => 'edit_taxo', 'manage_terms' => 'manage_job_terms', //by default only admin 'edit_terms' => 'manage_job_terms', 'delete_terms' => 'delete_job_terms', 'assign_terms' => 'edit_job-type' // can edit cpt-type i.e. custom role ), 'supports' => array('title', 'editor', 'thumbnail') ) ); register_taxonomy( 'job_categories', array('sc_jobs'), array( 'hierarchical' => true, 'label' => __( 'Job Categories' ), 'rewrite' => array( 'slug' => 'job-category' ), 'show_ui' => true, 'query_var' => 'job-category', 'capabilities' => array( 'manage_terms' => 'manage_categories', 'edit_terms' => 'edit_categories', 'delete_terms' => 'delete_categories', 'assign_terms' => 'assign_categoriess', ) ) ); register_taxonomy( 'contract_type', array('sc_jobs'), array( 'hierarchical' => true, 'label' => __( 'Contract type' ), 'rewrite' => array( 'slug' => 'job-contract-type' ), 'show_ui' => true, 'query_var' => 'job-contract-type', 'capabilities' => array( 'manage_terms' => 'manage_contract', 'edit_terms' => 'edit_contract', 'delete_terms' => 'delete_contract', 'assign_terms' => 'assign_contract', ) ) ); register_taxonomy( 'working_pattern', array('sc_jobs'), array( 'hierarchical' => true, 'label' => __( 'Working Pattern' ), 'rewrite' => array( 'slug' => 'job-working-pattern' ), 'show_ui' => true, 'query_var' => 'job-working-pattern', 'capabilities' => array( 'manage_terms' => 'manage_pattern', 'edit_terms' => 'edit_pattern', 'delete_terms' => 'delete_pattern', 'assign_terms' => 'assign_pattern', ) ) ); register_taxonomy( 'salary_band', array('sc_jobs'), array( 'hierarchical' => true, 'label' => __( 'Salary Band' ), 'rewrite' => array( 'slug' => 'salary-band' ), 'show_ui' => true, 'query_var' => 'salary-band', 'capabilities' => array( 'manage_terms' => 'manage_salary', 'edit_terms' => 'edit_salary', 'delete_terms' => 'delete_salary', 'assign_terms' => 'assign_salary', ) ) ); register_taxonomy( 'the_advertiser', array('sc_jobs'), array( 'hierarchical' => true, 'label' => __( 'Advertiser' ), 'rewrite' => array( 'slug' => 'job-advertiser' ), 'show_ui' => true, 'query_var' => 'job-advertiser', 'capabilities' => array( 'manage_terms' => 'manage_advertiser', 'edit_terms' => 'edit_advertiser', 'delete_terms' => 'delete_advertiser', 'assign_terms' => 'assign_advertiser', ) ) ); } function add_jobs_caps() { $admins = get_role( 'authority' ); $admins->add_cap( 'edit_jobs' ); $admins->add_cap( 'publish_jobs' ); $admins->add_cap( 'read_jobs' ); $admins->add_cap( 'read_private_jobs' ); $admins->add_cap( 'delete_jobs' ); $admins->add_cap( 'edit_taxo' ); $admins->remove_cap( 'edit_others_jobs' ); $admins->remove_cap( 'delete_others_jobs' ); $admins->add_cap( 'manage_job_terms' ); $admins->add_cap( 'delete_job_terms' ); $admins->add_cap( 'edit_job-type' ); $admins->add_cap( 'manage_categories' ); $admins->add_cap( 'edit_categories' ); $admins->add_cap( 'delete_categories' ); $admins->add_cap( 'assign_categoriess' ); $admins->add_cap( 'manage_contract' ); $admins->add_cap( 'edit_contract' ); $admins->add_cap( 'delete_contract' ); $admins->add_cap( 'assign_contract' ); $admins->add_cap( 'manage_pattern' ); $admins->add_cap( 'edit_pattern' ); $admins->add_cap( 'delete_pattern' ); $admins->add_cap( 'assign_pattern' ); $admins->add_cap( 'manage_salary' ); $admins->add_cap( 'edit_salary' ); $admins->add_cap( 'delete_salary' ); $admins->add_cap( 'assign_salary' ); $admins->add_cap( 'manage_advertiser' ); $admins->add_cap( 'edit_advertiser' ); $admins->add_cap( 'delete_advertiser' ); $admins->add_cap( 'assign_advertiser' ); } add_action( 'admin_init', 'add_jobs_caps'); function add_jobs_caps1() { $admins1 = get_role( 'administrator' ); $admins1->add_cap( 'edit_jobs' ); $admins1->add_cap( 'publish_jobs' ); $admins1->add_cap( 'read_jobs' ); $admins1->add_cap( 'read_private_jobs' ); $admins1->add_cap( 'delete_jobs' ); $admins1->add_cap( 'edit_others_jobs' ); $admins1->add_cap( 'delete_others_jobs' ); $admins1->add_cap( 'manage_job_terms' ); $admins1->add_cap( 'delete_job_terms' ); $admins1->add_cap( 'edit_job-type' ); $admins1->add_cap( 'manage_categories' ); $admins1->add_cap( 'edit_categories' ); $admins1->add_cap( 'delete_categories' ); $admins1->add_cap( 'assign_categoriess' ); $admins1->add_cap( 'manage_contract' ); $admins1->add_cap( 'edit_contract' ); $admins1->add_cap( 'delete_contract' ); $admins1->add_cap( 'assign_contract' ); $admins1->add_cap( 'manage_pattern' ); $admins1->add_cap( 'edit_pattern' ); $admins1->add_cap( 'delete_pattern' ); $admins1->add_cap( 'assign_pattern' ); $admins1->add_cap( 'manage_salary' ); $admins1->add_cap( 'edit_salary' ); $admins1->add_cap( 'delete_salary' ); $admins1->add_cap( 'assign_salary' ); $admins1->add_cap( 'manage_advertiser' ); $admins1->add_cap( 'edit_advertiser' ); $admins1->add_cap( 'delete_advertiser' ); $admins1->add_cap( 'assign_advertiser' ); } add_action( 'admin_init', 'add_jobs_caps1'); function add_jobs_caps2() { $admins2 = get_role( 'editor' ); $admins2->add_cap( 'edit_jobs' ); $admins2->add_cap( 'publish_jobs' ); $admins2->add_cap( 'read_jobs' ); $admins2->add_cap( 'read_private_jobs' ); $admins2->add_cap( 'delete_jobs' ); $admins2->add_cap( 'edit_others_jobs' ); $admins2->add_cap( 'delete_others_jobs' ); $admins2->add_cap( 'manage_job_terms' ); $admins2->add_cap( 'delete_job_terms' ); $admins2->add_cap( 'edit_job-type' ); $admins2->add_cap( 'manage_categories' ); $admins2->add_cap( 'edit_categories' ); $admins2->add_cap( 'delete_categories' ); $admins2->add_cap( 'assign_categoriess' ); $admins2->add_cap( 'manage_contract' ); $admins2->add_cap( 'edit_contract' ); $admins2->add_cap( 'delete_contract' ); $admins2->add_cap( 'assign_contract' ); $admins2->add_cap( 'manage_pattern' ); $admins2->add_cap( 'edit_pattern' ); $admins2->add_cap( 'delete_pattern' ); $admins2->add_cap( 'assign_pattern' ); $admins2->add_cap( 'manage_salary' ); $admins2->add_cap( 'edit_salary' ); $admins2->add_cap( 'delete_salary' ); $admins2->add_cap( 'assign_salary' ); $admins2->add_cap( 'manage_advertiser' ); $admins2->add_cap( 'edit_advertiser' ); $admins2->add_cap( 'delete_advertiser' ); $admins2->add_cap( 'assign_advertiser' ); } add_action( 'admin_init', 'add_jobs_caps2'); ?>
The topic ‘Custom post type and edit_others_posts’ is closed to new replies.