plugin_name = $plugin_name; $this->version = $version; } /** * Register the 'ttdvr_document' Custom Post Type. */ public function register_cpt() { $labels = array( 'name' => _x( 'Documents', 'Post Type General Name', '24tt-document-verifier' ), 'singular_name' => _x( 'Document', 'Post Type Singular Name', '24tt-document-verifier' ), 'menu_name' => esc_html__( 'Documents', '24tt-document-verifier' ), 'name_admin_bar' => esc_html__( 'Document', '24tt-document-verifier' ), 'archives' => esc_html__( 'Document Archives', '24tt-document-verifier' ), 'attributes' => esc_html__( 'Document Attributes', '24tt-document-verifier' ), 'parent_item_colon' => esc_html__( 'Parent Document:', '24tt-document-verifier' ), 'all_items' => esc_html__( 'All Documents', '24tt-document-verifier' ), 'add_new_item' => esc_html__( 'Add New Document', '24tt-document-verifier' ), 'add_new' => esc_html__( 'Add New', '24tt-document-verifier' ), 'new_item' => esc_html__( 'New Document', '24tt-document-verifier' ), 'edit_item' => esc_html__( 'Edit Document', '24tt-document-verifier' ), 'update_item' => esc_html__( 'Update Document', '24tt-document-verifier' ), 'view_item' => esc_html__( 'View Document', '24tt-document-verifier' ), 'view_items' => esc_html__( 'View Documents', '24tt-document-verifier' ), 'search_items' => esc_html__( 'Search Document', '24tt-document-verifier' ), 'not_found' => esc_html__( 'No documents found', '24tt-document-verifier' ), 'not_found_in_trash' => esc_html__( 'No documents found in Trash', '24tt-document-verifier' ), ); // STRICT RBAC CAPABILITIES $capabilities = array( 'edit_post' => 'manage_ttdvr_documents', 'read_post' => 'read', // Anyone can read it on the frontend if needed 'delete_post' => 'manage_ttdvr_documents', 'edit_posts' => 'manage_ttdvr_documents', 'edit_others_posts' => 'manage_ttdvr_documents', 'publish_posts' => 'manage_ttdvr_documents', 'read_private_posts' => 'manage_ttdvr_documents', 'create_posts' => 'manage_ttdvr_documents', ); $args = array( 'label' => esc_html__( 'Document', '24tt-document-verifier' ), 'description' => esc_html__( 'Documents for verification', '24tt-document-verifier' ), 'labels' => $labels, 'supports' => array( 'title', 'editor' ), 'taxonomies' => array( 'ttdvr_doc_category' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => false, // Hidden from main menu; our custom admin class will position this later. 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capabilities' => $capabilities, // Injecting our secure rules 'rewrite' => array( 'slug' => 'document-verification' ), ); register_post_type( 'ttdvr_document', $args ); } /** * Register the 'Document Category' Custom Taxonomy. */ public function register_taxonomy() { $labels = array( 'name' => _x( 'Document Categories', 'Taxonomy General Name', '24tt-document-verifier' ), 'singular_name' => _x( 'Document Category', 'Taxonomy Singular Name', '24tt-document-verifier' ), 'menu_name' => esc_html__( 'Categories', '24tt-document-verifier' ), 'all_items' => esc_html__( 'All Categories', '24tt-document-verifier' ), 'parent_item' => esc_html__( 'Parent Category', '24tt-document-verifier' ), 'parent_item_colon' => esc_html__( 'Parent Category:', '24tt-document-verifier' ), 'new_item_name' => esc_html__( 'New Document Category Name', '24tt-document-verifier' ), 'add_new_item' => esc_html__( 'Add New Document Category', '24tt-document-verifier' ), 'edit_item' => esc_html__( 'Edit Document Category', '24tt-document-verifier' ), 'update_item' => esc_html__( 'Update Document Category', '24tt-document-verifier' ), 'view_item' => esc_html__( 'View Document Category', '24tt-document-verifier' ), 'separate_items_with_commas' => esc_html__( 'Separate categories with commas', '24tt-document-verifier' ), 'add_or_remove_items' => esc_html__( 'Add or remove categories', '24tt-document-verifier' ), 'choose_from_most_used' => esc_html__( 'Choose from the most used', '24tt-document-verifier' ), 'popular_items' => esc_html__( 'Popular Categories', '24tt-document-verifier' ), 'search_items' => esc_html__( 'Search Categories', '24tt-document-verifier' ), 'not_found' => esc_html__( 'No Categories Found', '24tt-document-verifier' ), 'no_terms' => esc_html__( 'No categories', '24tt-document-verifier' ), ); $capabilities = array( 'manage_terms' => 'manage_ttdvr_documents', 'edit_terms' => 'manage_ttdvr_documents', 'delete_terms' => 'manage_ttdvr_documents', 'assign_terms' => 'manage_ttdvr_documents', ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'capabilities' => $capabilities, // Secure taxonomy management 'rewrite' => array( 'slug' => 'doc-category' ), 'show_in_rest' => true, ); register_taxonomy( 'ttdvr_doc_category', array( 'ttdvr_document' ), $args ); } }