From ed57c386db34d8693ca75311972d0929ebe5f488 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 01 Jun 2026 22:23:19 +0000
Subject: [PATCH] =Added some more Schema classes, allowed for override of  array in outputSchema for complex schema, as for timeline post types

---
 inc/registrar/Terms.php |  153 +++++++++++++++++++++++++++-----------------------
 1 files changed, 82 insertions(+), 71 deletions(-)

diff --git a/inc/registrar/Terms.php b/inc/registrar/Terms.php
index 20890dd..8fd2bec 100644
--- a/inc/registrar/Terms.php
+++ b/inc/registrar/Terms.php
@@ -59,7 +59,7 @@
 	 * Whether to include the taxonomy in the REST API. Set this to true for the taxonomy to be available in the block editor.
 	 * @var bool
 	 */
-	public bool $show_in_rest;
+	public bool $show_in_rest = true;
 	/**
 	 * To change the base url of REST API route. Default is $taxonomy.
 	 * @var string
@@ -91,7 +91,7 @@
 	 * Whether to display a column for the taxonomy on its post type listing screens. Default false
 	 * @var bool
 	 */
-	public bool $show_admin_column;
+	public bool $show_admin_column = true;
 	/**
 	 * Provide a callback function for the meta box display.
 	 * If not set, post_categories_meta_box() is used for hierarchical taxonomies, and post_tags_meta_box() is used for non-hierarchical.
@@ -113,6 +113,14 @@
 	 * @var array
 	 */
 	public array $capabilities;
+
+
+	/**
+	 * The URL to the icon to be used for this menu. Pass a base64-encoded SVG using a data URI, which will be colored to match the color scheme — this should begin with 'data:image/svg+xml;base64,'. Pass the name of a Dashicons helper class to use a font icon, e.g.
+	 * 'dashicons-chart-pie'. Pass 'none' to leave div.wp-menu-image empty so an icon can be added via CSS. Defaults to use the posts icon.
+	 * @var string
+	 */
+	public string $menu_icon;
 	/**
 	 * Triggers the handling of rewrites for this taxonomy. Default true, using $taxonomy as slug. To prevent rewrite, set to false. To specify rewrite rules, an array can be passed with any of these keys:
 	 	* slug {string}		- Customize the permastruct slug. Default $taxonomy key.
@@ -179,75 +187,78 @@
 
 	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;
-			}
+
+		$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);

--
Gitblit v1.10.0