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 = array_filter(get_object_vars($this)); // $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; // } unset($args['for']); $for = array_map(function($item) { return jvbCheckBase($item);}, $this->for); register_taxonomy(jvbCheckBase($this->taxonomy), $for, $args); } }