maybe_enable() ) return; // Is this a new post? $this->is_new_post = 'load-post-new.php' === current_action(); // Enqueue scripts/styles. add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) ); // Add custom meta boxes. add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) ); // Save metadata on post save. add_action( 'save_post', array( $this, 'update' ), 10, 2 ); } /** * Enqueues scripts styles. * * @since 2.0.0 * @access public * @return void */ public function enqueue() { wp_enqueue_script( 'members-edit-post' ); wp_enqueue_style( 'members-admin' ); } /** * Adds the meta box. * * @since 2.0.0 * @access public * @param string $post_type * @return void */ public function add_meta_boxes( $post_type ) { // If the current user can't restrict content, bail. if ( ! current_user_can( 'restrict_content' ) ) return; // Add the meta box. add_meta_box( 'members-cp', __( 'Content Permissions (Members)', 'members' ), array( $this, 'meta_box' ), $post_type, 'advanced', 'high' ); add_filter( "postbox_classes_{$post_type}_members-cp-side", array( $this, 'minify_side_metabox' ) ); } /** * The Content Permissions sidebar widget should be closed by default. * * @param array $classes Default meta box classes. * * @return array */ public function minify_side_metabox( $classes ) { $classes[] = 'closed'; return $classes; } /** * Checks if Content Permissions should appear for the given post type. * * @since 2.0.0 * @access public * @return bool */ public function maybe_enable() { // Get the post type object. $type = get_post_type_object( get_current_screen()->post_type ); // Only enable for public post types and non-attachments by default. $enable = 'attachment' !== $type->name && $type->public; return apply_filters( "members_enable_{$type->name}_content_permissions", $enable ); } /** * Outputs the meta box HTML. * * @since 2.0.0 * @access public * @param object $post * @global object $wp_roles * @return void */ public function meta_box( $post ) { global $wp_roles; // Get roles and sort. $_wp_roles = apply_filters( 'members_wp_roles', $wp_roles->role_names, $post ); asort( $_wp_roles ); // Get the roles saved for the post. $roles = get_post_meta( $post->ID, '_members_access_role', false ); if ( ! $roles && $this->is_new_post ) $roles = apply_filters( 'members_default_post_roles', array(), $post->ID ); // Convert old post meta to the new system if no roles were found. if ( empty( $roles ) ) $roles = members_convert_old_post_meta( $post->ID ); // Nonce field to validate on save. wp_nonce_field( 'members_cp_meta_nonce', 'members_cp_meta' ); // Hook for firing at the top of the meta box. do_action( 'members_cp_meta_box_before', $post ); ?>