#1722
[email protected]
Participant

Thank you I just added this code to my functions.php file and it makes my whole WP installation stop working. With just a blank screen on refresh of the back end and the front end.

if (is_blog_admin() && !(is_super_admin() || current_user_can(‘administrator’)) && current_user_can(‘franchise’)) {
return $query;
}

$suppressing_filters = $query->get(‘suppress_filters’); // Filter suppression on?

if ($suppressing_filters) {
return query;
}

if ($query->query[‘post_type’]==’page’) {
$posts_restriction_type = 2; // Prohibit
$posts_list = array(3,4,5,25,26,27,28,29,30,6,77,79,36,7,81,37,38,39,8,9,10,11,12,13,14,15,16,33,32,35); // comma separated list of pages IDs
if ($posts_restriction_type==1) { // Allow
$query->set(‘post__in’, $posts_list);
} else { // Prohibit
$query->set(‘post__not_in’, $posts_list);
}
}

return $query;
}
// end of restrict_posts_list()

function current_user_has_role($role_to_check) {
global $current_user;

$has_role = false;
foreach($current_user->roles as $role) {
if ($role===$role_to_check) {
$has_role = true;
break;
}
}

return $has_role;
}
// end of current_user_has_role()

function get_pages_capabilities() {
$cap_object = new stdClass();
$cap_object->capability_type = ‘page’;
$cap_object->capabilities = array();
$cap_object->map_meta_cap = true;
$capabilities = (array) get_post_type_capabilities($cap_object);

return $capabilities;
}

add_filter(‘map_meta_cap’, ‘block_edit_pages’, 10, 4);

function block_edit_pages($caps, $cap = ”, $user_id = 0, $args = array()) {

if (is_blog_admin() && !(is_super_admin() || current_user_can(‘administrator’)) && current_user_can(‘franchise’)) {
return $caps;
}

if (substr($cap, 0, 4)==’read’) { // do not block read capabilities
return $caps;
}

$posts_restriction_type = 2; // Prohibit
$posts_list = array(3,4,5,25,26,27,28,29,30,6,77,79,36,7,81,37,38,39,8,9,10,11,12,13,14,15,16,33,32,35); // comma separated list of pages IDs

$capabilities = get_pages_capabilities();
if (!isset($capabilities[$cap])) {
return $caps;
}

if (count($args) > 0) {
$post_id = $args[0];
} else {
$post_id = filter_input(INPUT_GET, ‘post’, FILTER_SANITIZE_NUMBER_INT);
}
if (empty($post_id)) {
return $caps;
}

$post = get_post($post_id);
if (empty($post) || $post->post_type!==’page’) {
return $caps;
}

$do_not_allow = in_array($post_id, $posts_list); // not edit these pages
if ($posts_restriction_type == 1) {
$do_not_allow = !$do_not_allow; // not edit other pages
}
if ($do_not_allow) {
$caps[] = ‘do_not_allow’;
}

return $caps;
}
// end of block_edit_pages()