taxonomy = $taxonomy; $this->labels = $this->buildLabels($singular, $plural); } private function buildLabels(string $singular, string $plural): array { return [ 'name' => $plural, 'singular_name' => $singular, 'search_items' => "Search {$plural}", 'all_items' => "All {$plural}", 'edit_item' => "Edit {$singular}", 'update_item' => "Update {$singular}", 'add_new_item' => "Add New {$singular}", 'new_item_name' => "New {$singular} Name", 'menu_name' => $singular ]; } public function register():void { $args = [ 'labels' => $this->labels, 'public' => $this->public, 'hierarchical' => $this->hierarchical, ]; if (isset($this->description)) { $args['description'] = $this->description; } if (isset($this->publicly_queryable)) { $args['publicly_queryable'] = $this->publicly_queryable; } if (isset($this->show_ui)) { $args['show_ui'] = $this->show_ui; } if (isset($this->show_in_menu)) { $args['show_in_menu'] = $this->show_in_menu; } if (isset($this->show_in_nav_menus)) { $args['show_in_nav_menus'] = $this->show_in_nav_menus; } if (isset($this->show_in_rest)) { $args['show_in_rest'] = $this->show_in_rest; } if (isset($this->rest_base)) { $args['rest_base'] = $this->rest_base; } if (isset($this->rest_namespace)) { $args['rest_namespace'] = $this->rest_namespace; } if (isset($this->rest_controller_class)) { $args['rest_controller_class'] = $this->rest_controller_class; } if (isset($this->show_tag_cloud)) { $args['show_tag_cloud'] = $this->show_tag_cloud; } if (isset($this->show_quick_edit)) { $args['show_quick_edit'] = $this->show_quick_edit; } if (isset($this->show_admin_column)) { $args['show_admin_column'] = $this->show_admin_column; } if (isset($this->meta_box_cb) && is_callable($this->meta_box_cb)) { $args['meta_box_cb'] = $this->meta_box_cb; } if (isset($this->meta_box_sanitize_cb) && is_callable($this->meta_box_sanitize_cb)) { $args['meta_box_sanitize_cb'] = $this->meta_box_sanitize_cb; } if (isset($this->capabilities)) { $allowed = ['manage_terms', 'edit_terms', 'delete_terms', 'assign_terms']; $caps = array_filter($this->capabilities, function ($cap) use ($allowed) { return in_array($cap, $allowed); }, ARRAY_FILTER_USE_KEY); $args['capabilities'] = $caps; } if (isset($this->query_var)) { $args['query_var'] = $this->query_var; } if (isset($this->update_count_callback) && is_callable($this->update_count_callback)) { $args['update_count_callback'] = $this->update_count_callback; } if (isset($this->default_term)) { $args['default_term'] = $this->default_term; } if (isset($this->sort)) { $args['sort'] = $this->sort; } if (isset($this->args)) { $args['args'] = $this->args; } $for = array_map(function($item) { return jvbCheckBase($item);}, $this->for); register_taxonomy(jvbCheckBase($this->taxonomy), $for, $args); } }