_x( 'Private Areas', 'Post Type General Name', 'adv-private-area' ), 'singular_name' => _x( 'Private Area', 'Post Type Singular Name', 'adv-private-area' ), 'menu_name' => _x( 'Private Areas', 'Admin Menu text', 'adv-private-area' ), 'name_admin_bar' => _x( 'Private Area', 'Add New on Toolbar', 'adv-private-area' ), 'archives' => __( 'Private Area Archives', 'adv-private-area' ), 'attributes' => __( 'Private Area Attributes', 'adv-private-area' ), 'parent_item_colon' => __( 'Parent Private Area:', 'adv-private-area' ), 'all_items' => __( 'All Private Areas', 'adv-private-area' ), 'add_new_item' => __( 'Add New Private Area', 'adv-private-area' ), 'add_new' => __( 'Add New', 'adv-private-area' ), 'new_item' => __( 'New Private Area', 'adv-private-area' ), 'edit_item' => __( 'Edit Private Area', 'adv-private-area' ), 'update_item' => __( 'Update Private Area', 'adv-private-area' ), 'view_item' => __( 'View Private Area', 'adv-private-area' ), 'view_items' => __( 'View Private Areas', 'adv-private-area' ), 'search_items' => __( 'Search Private Area', 'adv-private-area' ), 'not_found' => __( 'Not found', 'adv-private-area' ), 'not_found_in_trash' => __( 'Not found in Trash', 'adv-private-area' ), 'featured_image' => __( 'Featured Image', 'adv-private-area' ), 'set_featured_image' => __( 'Set featured image', 'adv-private-area' ), 'remove_featured_image' => __( 'Remove featured image', 'adv-private-area' ), 'use_featured_image' => __( 'Use as featured image', 'adv-private-area' ), 'insert_into_item' => __( 'Insert into Private Area', 'adv-private-area' ), 'uploaded_to_this_item' => __( 'Uploaded to this Private Area', 'adv-private-area' ), 'items_list' => __( 'Private Areas list', 'adv-private-area' ), 'items_list_navigation' => __( 'Private Areas list navigation', 'adv-private-area' ), 'filter_items_list' => __( 'Filter Private Areas list', 'adv-private-area' ), ); $capabilities = array( 'edit_post' => 'edit_area', 'read_post' => 'read_area', 'delete_post' => 'delete_area', 'edit_posts' => 'edit_areas', 'edit_others_posts' => 'edit_others_areas', 'publish_posts' => 'publish_areas', 'read_private_posts' => 'read_private_areas', ); $args = array( 'label' => __( 'Private Area', 'adv-private-area' ), 'description' => __( 'This Post Type create all the dashboard for each user into web site', 'adv-private-area' ), 'labels' => $labels, 'menu_icon' => 'dashicons-businessman', 'supports' => array('title', 'editor', 'thumbnail'), 'taxonomies' => array(), 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'hierarchical' => false, 'exclude_from_search' => false, 'show_in_rest' => true, 'publicly_queryable' => true, 'capabilities' => $capabilities, ); register_post_type( 'adv_privatearea', $args ); } add_action( 'init', 'adv_pvt_create_privatearea_cpt', 0 ); } add_role('site_manager', __('Site Manager'),array( 'edit_area' => true, 'read_area' => true, 'delete_area' => true, 'edit_areas' => true, 'edit_others_areas' => true, 'publish_areas' => true, 'read_private_areas' => true, 'read' => true, ) ); function adv_pvt_admin_role_caps() { // Gets the simple_role role object. $role = get_role( 'administrator' ); // Add a new capability. $role->add_cap('edit_area', true); $role->add_cap('read_area', true); $role->add_cap('delete_area', true); $role->add_cap('edit_areas', true); $role->add_cap('edit_others_areas', true); $role->add_cap('publish_areas', true); $role->add_cap('read_private_areas', true); $role->add_cap('read', true); } // Add simple_role capabilities, priority must be after the initial role definition. add_action( 'init', 'adv_pvt_admin_role_caps', 11 ); global $private_area; $args = array( 'post_type' => 'adv_privatearea', ); $private_area = get_posts($args); //rendo il post type privato di default if (!function_exists('adv_force_type_private')) { function adv_force_type_private( $new_status, $old_status, $post ) { if ( $post->post_type == 'adv_privatearea' && $new_status == 'publish' && $old_status != $new_status ) { $post->post_status = 'private'; wp_update_post( $post ); } } add_action( 'transition_post_status', 'adv_force_type_private', 10, 3 ); } //rendo il post privato visibile al ruolo sottoscrittore if (!function_exists('adv_private_posts_subscribers')) { function adv_private_posts_subscribers(){ $subRole = get_role( 'subscriber' ); $subRole->add_cap( 'read_private_posts' ); $subRole->add_cap( 'read_private_pages' ); } add_action( 'init', 'adv_private_posts_subscribers' ); } // rimuovo privato dal titolo if (!function_exists('adv_pvt_clean_title')) { function adv_pvt_clean_title($titolo) { $titolo = esc_attr($titolo); $cerca = array( '#Private:#', '#Privato:#' ); $sostituisci = array( '' // Sostituiamo la voce "Privato" con ); $titolo = preg_replace($cerca, $sostituisci, $titolo); return $titolo; } add_filter('the_title', 'adv_pvt_clean_title'); } // Meta Box Class: User Detail // Get the field value: $metavalue = get_post_meta( $post_id, $field_id, true ); class adv_pvt_userdetailMetabox { private $screen = array( //'post', 'adv_privatearea', ); private $meta_fields = array( array( 'label' => 'User Account', 'id' => 'adv_user_account', 'type' => 'users', ), ); public function __construct() { add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) ); add_action( 'save_post', array( $this, 'save_fields' ) ); } public function add_meta_boxes() { foreach ( $this->screen as $single_screen ) { add_meta_box( 'userdetail', __( 'User Detail', 'adv-private-area' ), array( $this, 'meta_box_callback' ), $single_screen, 'side', 'default' ); } } public function meta_box_callback( $post ) { wp_nonce_field( 'userdetail_data', 'userdetail_nonce' ); echo 'Select the user who will appear this area'; $this->field_generator( $post ); } public function field_generator( $post ) { $output = ''; foreach ( $this->meta_fields as $meta_field ) { $label = ''; $meta_value = get_post_meta( $post->ID, $meta_field['id'], true ); if ( empty( $meta_value ) ) { if ( isset( $meta_field['default'] ) ) { $meta_value = $meta_field['default']; } } switch ( $meta_field['type'] ) { case 'users': $usersargs = array( 'selected' => $meta_value, 'echo' => 0, 'name' => $meta_field['id'], 'id' => $meta_field['id'], 'show_option_none' => 'Select a user', ); $input = wp_dropdown_users($usersargs); break; default: $input = sprintf( '', $meta_field['type'] !== 'color' ? 'style="width: 100%"' : '', $meta_field['id'], $meta_field['id'], $meta_field['type'], $meta_value ); } $output .= $this->format_rows( $label, $input ); } echo '