Jake Vanderwerf
2026-01-05 9f86429a1252b45c95b7c62fbaa1b82de3723997
inc/registry/TaxonomyRegistrar.php
@@ -55,12 +55,32 @@
      $post_types = array_map(fn($type) => BASE . $type, $this->config['for_content'] ?? []);
      register_taxonomy($this->taxonomy, $post_types, $args);
      $this->maybeAddRewriteRule($args['rewrite']);
      if (!empty($this->fields)) {
         $meta_registry = new MetaRegistry($this->fields, $this->slug, 'term');
         $meta_registry->registerMetaFields();
      }
   }
   /**
    * Add custom rewrite rule for hierarchical taxonomy slugs (e.g., post-type/by/taxonomy-slug)
    */
   protected function maybeAddRewriteRule(array $rewrite_config): void
   {
      $slug = $rewrite_config['slug'] ?? $this->slug;
      // Only add custom rule if slug contains slashes (hierarchical path)
      if (!str_contains($slug, '/')) {
         return;
      }
      add_rewrite_rule(
         "^{$slug}/([^/]+)/?$",
         'index.php?' . $this->taxonomy . '=$matches[1]',
         'top'
      );
   }
    private function buildLabels(string $singular, string $plural): array
    {
        return [
@@ -338,6 +358,7 @@
            $term = get_term($term_id, $tax);
            CacheManager::for(jvbNoBase($taxonomy))->invalidate();
            CacheManager::for(jvbNoBase($taxonomy))->clear();
            // Clear cache for associated content types
            $checker = Checker::getInstance();