';
$this->access_roles_html_select( $post );
echo '';
}
/**
* Print the select with roles for define restrict page.
*
* @since 1.0.0
*
* @param WP_Post $post The post object.
*/
private function access_roles_html_select( $post ) {
global $wp_roles;
$roles = $wp_roles->get_names();
// Check if empty $post and define $post
if ( empty( $post ) ) {
$post = get_post();
}
$select_role = get_post_meta( $post->ID, self::$text_domain . '_select_role', true );
// Field nonce for submit control
wp_nonce_field( self::$text_domain . '_select_role', self::$text_domain . '_select_role_wpnonce' );
echo '
';
echo '
' . __( 'Please Select multiple role', 'wp-acl' ) . '
';
echo '
';
echo '
';
}
/**
* Save select role for restrict access for page.
*
*
* @since 1.0.0
*
* @param int $post_id The post id.
* @param object $post The post object.
* @return bool false or true
*/
public function user_role_access( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
echo $post_id;
return false;
}
if ( empty( $_POST[self::$text_domain . '_select_role_wpnonce'] ) || ! wp_verify_nonce( $_POST[self::$text_domain . '_select_role_wpnonce'], self::$text_domain . '_select_role' ) ) {
return false;
}
$select_role = $_POST[self::$text_domain . '_select_role'];
update_post_meta( $post_id, self::$text_domain . '_select_role', $select_role );
return true;
}
/**
* Restrict content page
*
* @since 1.0.0
*
* @param string $content The content page
* @return string $content
*/
public function isAllowed( $content ) {
$select_role = get_post_meta( get_the_ID(), self::$text_domain . '_select_role', true );
if(!empty($select_role)){
foreach ( $select_role as $key => $value ) {
$roles[] = $value;
}
$roles_seprated = implode(", ", $roles);
if ($roles_seprated ) {
if ( current_user_can( $roles_seprated ) || current_user_can( 'administrator') || current_user_can( 'super-admin') ) {
return $content;
} else {
wp_redirect(403);
exit();
}
}
}else {
return $content;
}
}
}
add_action( 'plugins_loaded', array( 'page_roles_acl', 'get_instance' ), 0 );
add_action('admin_menu', 'wp_acl_setup_menu');
function wp_acl_setup_menu() {
add_menu_page('Wp Acl', 'Wp Acl','manage_options', 'wp-acl','view_wp_acl');
}
function view_wp_acl(){
require_once 'view-wp-acl.php';
}